匿名用户
1级
2014-03-17 回答
//以下代码经调试,完全正确。
#include
#include
int main()
{
int year,month,day;
int sum = 0;
int leap,error=0;
int flag=0;
do{
printf("请输入 年,月,日(英文标点附号,否则出错): ");
scanf("%d,%d,%d",&year,&month,&day);
if(month<0||month>12)
{
printf("不存在该月份,请重新输入");
flag = 1;
}
//以下判断日期是否符合月份
if(((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))&&(day<0||day>31))
{ printf("该月不存在输入的天数,请重新输入\n");
flag = 1;
}
else if(((month==4)||(month==6)||(month==9||11))&&(day<0||day>30))
{ printf("该月不存在输入的天数,请重新输入\n");
flag = 1;
}
else if(month==2)
{
if(((year%4==0&&year%100!=0)||year%400==0)&&(day<0||day>29))
{
printf("该月不存在输入的天数,请重新输入\n");
flag = 1;
}
else if(day<0||day>28)
{
printf("该月不存在输入的天数,请重新输入\n");
flag = 1;
}
}
}while(flag == 1);
switch(month)
{
case 1:
sum = 0;
break;
case 2:
sum = 31;
break;
case 3:
sum = 31 + 28;
break;
case 4:
sum = 31 + 28 + 31;
break;
case 5:
sum = 31 + 28 + 31 + 30;
break;
case 6:
sum = 31 + 28 + 31 + 30 + 31;
break;
case 7:
sum = 31 + 28 + 31 + 30 + 31 + 30;
break;
case 8:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
break;
case 10:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
default:
printf("month is error,please check it.");
error = 1;
break;
}
if (error != 1)
{
sum += day;
if ((year % 100 == 0 && year % 400 == 0 ) || (year % 4 == 0 && year % 100 != 0))
{
leap = 1;
}
else
{
leap = 0;
}
if (leap == 1 && month > 2)
{
sum += 1;
}
printf("it is the %d day in year.",sum);
}
system("pause");
return 1;
}