|
西暦年と月を入力すると、
入力した西暦年の元旦の曜日と、
入力した月の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;
}
|