【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22266

カレンダーのプログラム
投稿者---ぐーすけ(2005/07/29 00:52:33)


西暦年と月を入力すると、
入力した西暦年の元旦の曜日と、
入力した月の1日目の曜日を番号で表示するプログラムなのですが、
正しい結果が出ません。
どうしても解からないので、どなたかヒントだけでも教えて貰えないでしょうか。
番号と曜日の対応は、(日曜〜土曜)=(0〜6)です

#include <stdio.h>

int LeapYear(int year)/*閏年判定 閏年:2:平年:1*/
{
    if(year%4==0)
    {
        if(year%100==0)
        {
            if(year%400==0)
                return 2;
            return 1;
        }
        return 2;
    }
    return 1;
}

int Gantan(int year)/*西暦年を与えると元旦の曜日を返す*/
{
    int i;
    int day=6;/*0000年1月1日は土曜日*/
    if(year<0)
        return -1;
    for(i=0;i<year;i++)
        day+=LeapYear(i);
    return day%7;
}

int Tsuitachi(int year,int month)
/*年と月を与えると、その月の1日目の曜日を返す*/
{
    int i,day;
    int Month[]={31,28,31,30,31,30,31,31,30,31,30,31};
    if((day=Gantan(year))==-1)
        return -1;
    if(month<1 || month>12)
        return -1;
    if(LeapYear(year)==2)
        Month[1]++;
    month--;
    for(i=0;i<month;i++)
        day+=Month[i];
    return day%7;
}

int main(void)
{
    int y,m;
    /*日月火水木金土*/
    /*0 1 2 3 4 5 6 */
    printf("西暦年=");
    scanf("%d",&y);
    printf("月=");
    scanf("%d",&m);
    printf("%d年元旦=%d\n",y,Gantan(y));
    printf("%d年%d月1日=%d",y,m,Tsuitachi(y,m));
    return 0;
}





この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:カレンダーのプログラム 22267 まきじ 2005/07/29 01:00:21


No.22267

Re:カレンダーのプログラム
投稿者---まきじ(2005/07/29 01:00:21)


>西暦年と月を入力すると、
>入力した西暦年の元旦の曜日と、
>入力した月の1日目の曜日を番号で表示するプログラムなのですが、
>正しい結果が出ません。

Zellar の公式を使えば求まります。
詳細は、検索して調べてください。


この投稿にコメントする

削除パスワード

No.22268

Re:カレンダーのプログラム
投稿者---ぐーすけ(2005/07/29 01:25:48)


Zellarの公式 調べて見ます
ありがとうございました




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧