麻烦大家帮我看一下C语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:11:22
程序如下:
struct date
{
int year;
int month;
int day;
};
main()
{
int dayth;
struct date today;
scanf("%d%d%d",&today.year,&today.month,&today.day);
dayth=fun(today);
printf("%d\n",dayth);
scanf("%d",&dayth);
}
int fun(abc)
struct date abc;
{
int i,sum;
sum=abc.day;
if(abc.month==1)
return(sum);
else
{
for(i=2;i<=abc.month;i++)
switch(i-1)
{
case 1:;
case 3:;
case 5:;
case 7:;
case 8:;
case 10:;
case 12:sum+=31;
break;
case 4:;
case 6:;
case 9:;
case 11:sum=+30;
break;
case 2:if((abc.year%4==0)&&(abc.year%100!=0)||(abc.year%400==0))
sum+=29;
else
sum+=28;
}
return(sum);
}
}

程序倒数第3行

比如5月 你sum 只进行了加前面几个月的值
+31 +28 +31 +30 少了5月的第几天.

我觉得应该是.

return(sum+abc.day);

-------------------------------------------------------
一个递归搞定

yue(m,y)
{
int s;
if(m==0) s=0;
else if(m==1||m==3||m==5||m==7||m==8||m==10) s=31+yue(m-1,y);
else if(m==4||m==6||m==9||m==11) s=30+yue(m-1,y);
else if(m==2&&(y%4==0&&y%100!=0||y%400==0)) s=29+yue(m-1,y);
else s=28+yue(m-1,y);
return(s);
}

main()
{
int c,m,d,n;
printf("shu ru nian,yue,ri:\n");
scanf("%d,%d,%d",&c,&m,&d);
if(c<0&&m<1&&m>12) printf("cuo wu");
else{n=m-1;
printf("di %d tian\n",yue(n,c)+d);}
}

且回答
sum=+30 没有这种说法.
sum+=30 是 sum=sum+30
sum=+30 那么sum=30了 自然不对了.

--------------------------------------------------
再提供一份c++代码、应该对你有启发.
可以把 月倒过来写 12 1