69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int main()
{
int year;
int month;
int day;
int week;
int j;
int x;
int y;
int z;
int n;
int p;
int sum;
printf("please enter(year=month-day):");
scanf("%d-%d-%d", &year, &month, &day);
if (year<1970||year>9999)
{
printf("year is error.\n");
return 0;
}
if (month>12||month<0)
{
printf("month is error.\n");
return 0;
}
if (day<0)
{
printf("day is error.\n");
return 0;
}
if (month == 1||month == 3||month == 5||month == 7||month == 8||month == 10||month == 12)
{
if (day>31)
{
printf("day is error.\n");
return 0;
}
}
if (month == 4||month == 6||month == 9||month == 11)
{
if (day>30)
{
printf("day is error.\n");
return 0;
}
}
if ((year%4 == 0&&year%100!= 0)||year%400 == 0)
{
if (month == 2)
{
if (day>29)
{
printf("day is error.\n");
return 0;
}
}
}
else
{
if (month == 2)
{
if (day>28)
{
printf("day is error.\n");
return 0;
}
}
}
int i = 1970;
int k = 0;
// int k = 1;
// while (i<= year)
while (i< year)
{
if ((i%4 == 0&&i%100!= 0)||i%400 == 0)
{
k++;
}
i++;
}
n = k;
x = 366*n+365*(year-1970-n);
// x = 366*n+365*(year-1970-n-1);
sum = 0;
if ((year%4 == 0&&year%100!= 0)||year%400 == 0)
{
// int sum = 0;
int a1[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
for (i = 0; i<month; i++){
sum+= a1[i];
}
}
else
{
// int sum = 0;
int a2[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
for (i = 0; i<month; i++){
sum+= a2[i];
}
}
y = sum;
z = day;
p = x+y+z+3;
// p = x+j+day;
week = p%7;
switch(week)
{
case 0: printf("Sunday\n"); break;
case 1: printf("Monday\n"); break;
case 2: printf("Tuesday\n"); break;
case 3: printf("Wednesday\n"); break;
case 4: printf("Thursday\n"); break;
case 5: printf("Friday\n"); break;
case 6: printf("Saturday\n"); break;
defult: printf("PG error\n");break;
}
return 0;
}
if(day>29) printf("day is error.\n");
return 0;
应该把它修改成
if(day>29)
{printf("day is error.\n");
return 0;}
不然在没有else的情况下,就容易跳出去,然后我修改了一下你的程序。
#include<stdio.h>
int main()
{
int year;
int month;
int day;
int week;
long int x;
int y;
int z;
int n;
long int p;
int sum=0;
int i=1970;
int k=0;
scanf("%d-%d-%d",&year,&month,&day);
if(year<1970||year>9999)
{
printf("year is error.\n");
return 0;
}
else
{
while(year>i)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
k++;
}
i++;
}
}
n=year-1970;
x=366*k+365*(n-k);
if(month>12||month<0)
{
printf("month is error.\n");
return 0;
}
else
{
if((year%4==0&&year%100!=0)||year%400==0)
{
int a1[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
for(i=0;i<month;i++)
sum+=a1[i];
}
else
{
int a2[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i=0;i<month;i++)
sum+=a2[i];
}
y=sum;
}
if(day<0)
{
printf("day is error.\n");
return 0;
}
else
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day>31)
{
printf("day is error.\n");
return 0;
}
}
else if (month==4||month==6||month==9||month==11)
{
if(day>30)
{
printf("day is error.\n");
return 0;
}
}
if((year%4==0&&year%100!=0)||year%400==0)
{
if(month==2)
{
if(day>29)
{
printf("day is error.\n");
return 0;
}
}
}
else
{
if(month==2)
{
if(day>28)
{
printf("day is error.\n");
return 0;
}
}
}
}
z=day;
p=x+y+z-4;
week=p%7;
switch (week)
{
case 0: printf("Sunday\n"); break;
case 1: printf("Monday\n"); break;
case 2: printf("Tuesday\n"); break;
case 3: printf("Wednesday\n");break;
case 4: printf("Thursday\n"); break;
case 5: printf("Friday\n"); break;
case 6: printf("Saturday\n"); break;
}
return 0;
}