输入年月日,然后输出它的下一天是几年几月几日。

今天学的是switchc ase

好象领悟到一点,但还是不会。大家把帮忙一下
1楼的好厉害,day,month,year,sum,leap

在题目里各自代表什么,能详细解释下吗

switch case?
就是根据case来选择switch

这个题。就是1年有12个月,其中有 1 3 5 7 8 10 12这几个月是31天,闰年的2月有29天,平年的2月有28天,其他4 6 9 11这几个月30天。

如果你输入的年月日的日期是12月31,则输出的年+1,日期置为1月1日
如果你输入的年月日的日期是1 3 5 7 8 10这几个月的31,则输出的年不变,月+1,日期置为1日
...
把其他特殊的月末排列出来
然后那些普通的日期比如3月15日,就是在日期上+1

把所有的case列举出来,然后给他一个switch

我说的是一个思路。

1楼的强。哈哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-13
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。#include <stdio.h>
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}

参考资料:c语言经典100例中有这道题!!

第2个回答  2008-06-13
#include <stdio.h>

int judge(int y,int m,int d)
{
int flag;
if(m<1 || m >12)
return 0;
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(d<1 || d >31)
flag=0;
else flag=1;
break;
case 4:
case 6:
case 9:
case 11:
if(d<1 || d >30)
flag=0;
else flag=1;
break;
case 2:
if(y%4==0&&y%100!=0||y%400==0)
{if(d<1 || d>29)
flag=0;
else
flag=1;}
else
{if(d<1||d>28)
flag=0;
else
flag=1;}
break;

}
return flag;
}

main()
{
int y,m,d;
scanf("%d %d %d",&y,&m,&d);
if(judge(y,m,d))
{
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(d<31)
{d=d+1;}
else if(m<12)
{m=m+1;d=1;}
else
{y++;m=1;d=1;}

break;
case 4:
case 6:
case 9:
case 11:
if(d<30)
d++;
else
{d=1;m++;}
break;
case 2:
if(y%4==0&&y%100!=0||y%400==0)
{if(d<29)
d++;
else
{d=1;m++;}}
else
{if(d<29)
d++;
else
{d=1;m++;}
break; }}

printf("next day is %d %d %d\n",y,m,d);}
else
printf("not valid date");
}本回答被提问者采纳
相似回答