不知道哪里写错了求助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多天 展开
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多天 展开
4个回答
展开全部
#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;
}
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;
}
展开全部
每次循环都会把月份的天数加一次,是不对的,应该把
d+=days.day;
移到循环外面。
d+=days.day;
移到循环外面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,switch里面没有case 12选项,其次,我觉得你那个b最好弄成全局变量,完了程序加个循环,这样可以一直输入,你现在是输入一次程序就退出了,完了再执行略麻烦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询