问题描述
- 为什么,输出的不对,我是照着书上写的,c语言
-
#include "stdio.h"
#include "conio.h"
int main()
{
int day,month,year,sum,leap;
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 || (year%4 && year%100!=0) )
leap =1;
else
leap =0;
if(leap ==1 && month>2)
sum++;
printf("it is the %dth day.",sum);
}
比如输入2015 11 16
输出的竟是data errorit is the 133th day.
这明显不对啊
解决方案
看了一遍代码没看出问题,然后自己走了一下,发现是scanf()写错了,
改为scanf("%d %d %d",&year,&month,&day); 就可以了。
解决方案二:
改为scanf("%d %d %d",&year,&month,&day); 就可以了。去掉中间的逗号
解决方案三:
你输入11的时候已经计算了前11个月的天数 再加16 不是就不对了吗
switch(month-1)就好了
解决方案四:
看了一遍代码没看出问题,然后自己走了一下,发现是scanf()写错了,
改为scanf("%d %d %d",&year,&month,&day); 就可以了。
时间: 2024-12-31 19:43:30