c言語初心者です。ついに。。
西暦月日にちを入れると何曜日かを表示できるプラグラムをつくれましたー。まだif switch do while文しかしらないけど、switch文だけでできました。でも欠点があってうるう年の1月と2月はうまくできなんです。原因わわかっていてさいごの式bに-1をしなければいけないのですがそのうるう年だけ-1という計算をどうすればできるのかが思いつきません。もし詳しい人がいたら教えてくださいーー。
#include <stdio.h>
int main(void)
{
int y, m, l, z,v,h,q,f,x,o,j,e,a,r,b;
printf("西暦何年何月か入力してください\n");
printf("西暦。:"); scanf("%d",&y);
printf("何月。:"); scanf("%d",&m);
printf("何日。:"); scanf("%d",&l);
z=y%400;
v=y%100;
h=z-v;
f=h/100;
switch(f) {
case 3 : q=0; break;
case 1 : q=4; break;
case 2 : q=2; break;
case 0 : q=6; break;
}
o=y%100;
j=o/4;
e=o+j;
a=m;
switch(a) {
case 1 : r=0; break;
case 2 : r=3; break;
case 3 : r=3; break;
case 4 : r=6; break;
case 5 : r=1; break;
case 6 : r=4; break;
case 7 : r=6; break;
case 8 : r=2; break;
case 9 : r=5; break;
case 10 : r=0; break;
case 11 : r=3; break;
case 12 : r=5; break;
}
b=q+e+r+l;
switch (b % 7){
case 0 : puts("日曜日です。"); break;
case 1 : puts("月曜日です。"); break;
case 2 : puts("火曜日です。"); break;
case 3 : puts("水曜日です。"); break;
case 4 : puts("木曜日です。"); break;
case 5 : puts("金曜日です。"); break;
case 6 : puts("土曜日です。"); break;
}
return (0);
}
お礼
動作が変わる事はないんですね。安心しました。 コメントで補足しながら利用して行きます。 ご回答、ありがとうございます。