C语言循环结构求教从键盘上输入年、月、日,计算自当年元旦到这个日期一共有多少天并输出。

如题所述

int
isLeapYear(int
year)
{
if(year%100==0)
{
if(year%400==0)
return
1;
else
return
0;
}
else
{
if(year%4==0)
return
1;
else
return
0;
}
}
void
main()
{
int
days[12]={31,28,31,30,31,30,31,30,31,30,31,30};
int
year,month,day,i,sum;
scanf("%d",&year);
scanf("%d",&month);
scanf("%d",&day);
if(isLeapYear(year))days[1]=29;
sum=0;
for(i=0,i

追问:

i小于month-1是什么意思,还有sum=days

追答:

sum=0;
for(i=0,i

追问:

sum+=daysi是什么意思

追答:

sum=sum+days[i]的简写。就是在sum的基础上加上days[i]。
比如你输入3月2日,循环里面就是0+31+28,最后再+(2-1)。
for(i=0,i

追问:

为什么是daysi

追答:

days[12]={31,28,31,30,31,30,31,30,31,30,31,30};
前面定义过的,每个月含有多少天。days[0]对应一月份,...days[11]对应12月份
for(i=0,i

追问:

wl为什么是i小于我不明白

追答:

你是说为什么不是i小于等于?换种写法你估计看得清楚一点。
for(i=1,i<=month-1;i++)
{
sum+=days[i-1];
}
这个i就真正是月份的意思了。
以前那个i是数组下标的意思,实现的效果是一样的。
每月含多少天写错了,修改一下:
int
days[12]={31,28,31,30,31,30,31,31,30,31,30,31};

评论
0

0

加载更多
温馨提示:答案为网友推荐,仅供参考
相似回答