C语言求总天数问题~

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:19:43
代码如下
void fun(int y,int m,int d)
{
int n,l=0;
switch(m)
{
case 1: n=0;break;
case 2: n=31;break;
case 3: n=59;break;
case 4: n=70;break;
case 5: n=100;break;
case 6: n=131;break;
case 7: n=161;break;
case 8: n=192;break;
case 9: n=223;break;
case 10: n=253;break;
case 11: n=284;break;
case 12: n=314;break;
}
if((y%4==0&&y%100!=0)||y%400==0)
l=1;
if(m>2)
n=n+d+l;
else n+=d;
printf("%d",n);
}
main()
{
int y,m,d;
clrscr();
scanf("%d,%d,%d",y,m,d);
fun(y,m,d);
}

答案结果不对
到底是什么地方出错了???

你的逻辑没有错.
你这里的格式有小小错呢:scanf("%d,%d,%d",y,m,d)应该改为:

scanf("%d%d%d",&y,&m,&d);

/* check this code snippet */
void fun(int y, int m, int d)
{
int n, l = 0;
switch(m)
{
case 1: n = 0; break;
case 2: n = 31; break;
case 3: n = 59; break;
case 4: n = 90; break;
case 5: n = 120; break;
case 6: n = 151; break;
case 7: n = 181; break;
case 8: n = 212; break;
case 9: n = 243; break;
case 10: n = 273; break;
case 11: n = 304; break;
case 12: n = 334; break;
}
if((y % 4 == 0 && y % 100 != 0) || y % 400 ==0)
l = 1;
if(m > 2)
n += d + l;
else
n += d;
printf("%d\n", n);
}
main()
{
int y, m, d;
clrscr();
scanf("%d,%d,%d&quo