不知道哪里写错了求助c语言中定义一个含年、月、日的结构体,输入一个日期,计算该日期是该年的第多少天 5

#include<stdio.h>structdate{intyear;intmonth;intday;}days;main(){structdatedays;intd=... #include<stdio.h>
struct date
{
int year;
int month;
int day;
}days;
main()
{
struct date days;
int d=0,i;
printf("输入年月日");
scanf("%d%d%d",&days.year,&days.month,&days.day);
if(days.month==1)
d+=days.day;
else for(i=1;i<days.month;i++)
{
switch(i)
{
case 1:case 3:case 5:case 7:case 8:case 10:d+=31;break;
case 4:case 6:case 9:case 11:d+=30;break;
}
if(i==2)
{
if(days.year%400==0 || days.year%100!=0 && days.year%4==0)
d+=29;
else
d+=28;
}
d+=days.day;
}

printf("%d",d);
}
不知哪里出问题了 算12月31号就会有600多天
展开
 我来答
wuiiao333
2015-01-22 · TA获得超过799个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:195万
展开全部
#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
int main()
{
struct date days; //结构体days存放年月日3部分整数
int d=0,i;
printf("输入年月日");
scanf("%d%d%d",&days.year,&days.month,&days.day);
if(days.month==1) //如果月份为1月,则天数d为日的数字
d+=days.day;
else
for(i=1;i<days.month;i++) //范围从1~月份数
{
switch(i)
{
//1,3,5,7,8,10,月份执行天数加31天, //注意:12月份没计算
case 1:case 3:case 5:case 7:case 8:case 10:case 12:d+=31;break;
//4,6,9,11为+30天
case 4:case 6:case 9:case 11:d+=30;break;
}
if(i==2) //2月份,闰年+29,平年+28
{
if(days.year%400==0||(days.year%100!=0 && days.year%4==0))
d+=29;
else
d+=28;
}

}
d+=days.day; //加上当月天数
printf("%d",d);
return 0;
}
百度网友96babce31
2015-01-22 · 超过82用户采纳过TA的回答
知道小有建树答主
回答量:199
采纳率:100%
帮助的人:161万
展开全部
每次循环都会把月份的天数加一次,是不对的,应该把
d+=days.day;
移到循环外面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ylcqucc
2015-01-22 · TA获得超过1435个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:320万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
clks0622
2015-01-22 · TA获得超过2313个赞
知道大有可为答主
回答量:2664
采纳率:62%
帮助的人:560万
展开全部
首先,switch里面没有case 12选项,其次,我觉得你那个b最好弄成全局变量,完了程序加个循环,这样可以一直输入,你现在是输入一次程序就退出了,完了再执行略麻烦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式