ここから本文です

C言語での万年カレンダーの作り方を教えてください。 条件 ・西暦1年1月1日は...

kap********さん

2010/7/1016:05:21

C言語での万年カレンダーの作り方を教えてください。
条件
・西暦1年1月1日は月曜日である。
・閏年は4年に1度であるが、100年に一度そうでない年があり、そのうち4回に1回、つまり400年に1度は閏年

プログラムに使う変数は以下のもののみ使用してください。

int year;
int month;
int uru;
int day;
int dday;
int week;
int k;
int m[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
4,782
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

jih********さん

2010/7/1022:13:23

変数の名前に制限がありましたので、分からないなりに作ってみました。 以下にソースコードがありますので動かして下さい。

----------------------------------------
#include <stdio.h>

int main(void){

/*要求通りの変数を確保 よく分からない変数は使っていません*/


int year;
int month;
int uru;
int day;
int dday;
int week;
int k;
int m[]={0,31,28,31,30,31,30,31,31,30,31,30,31};


printf("Enter Year?");
scanf("%d",&day);

printf("Enter Month?");
scanf("%d",&week);

/*閏年(month)の計算*/
if(day % 4){
month = 0;
}
else if(day % 100){
month = 1;
}
else if(day % 400){
month = 0;
}
else{
month = 1;
}


/*閏年の二月は日付を加算する*/
dday = m[week];
if(week == 2){
dday += month;
}

printf("%d-%d\n", day, week);

/*万年カレンダーを作るときに便利なツェラーの公式を使い月初の曜日を求める*/
day += (week-1)/12, week = (week-1)%12+1;
if ( week < 3 ){
day --, week += 12;
}

/*月初の曜日Kを求める*/
k = (day + day/4 - day/100 + day/400 + (week*13+8)/5 + 1)%7;

/*曜日の表示:アンダースコアは知恵袋対策*/
printf("_日_月_火_水_木_金_土\n");

/*万年カレンダーを表示する*/
uru = 0;
for(year = -k + 1 ; year <= dday ; ++year){

if(year > 0){
printf("%3d",year);
}
else{
printf("___");
}

++uru;
if(uru >= 7){
printf("\n");
uru = 0;
}
}

}

----------------------------------------

質問した人からのコメント

2010/7/11 00:44:55

とても親切にありがとうございます!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる