题目来自于《100道C语言经典例题》,代码由番杰本人提供,若有雷同,实属荣幸。
1. 题目:
输入某年某月某日,判断这一天是这一年的第几天?
2. 解析
本题唯一需要注意的就是2月份在闰年有29天,在非闰年有28天,判断一下年份能不能整除4即可。
3. 代码
#include<stdio.h>
const int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31} ;
int main(void)
{
int y,m,d,sum = 0;
int i = 0;
printf("请输入日期(格式为yyyy-mm-dd):");
scanf("%d-%d-%d",&y,&m,&d);
for(;i<(m-1);i++)
{
sum += months[i];
if(i == 2)
if((y%4) == 0)
sum++;
}
sum += d;
printf("%d月%d日为%d年的第%d天",m,d,y,sum) ;
return 0;
}
4. 补充
可以在键盘输入年月日后,判断其是否超出范围。即月份不能大于12或小于或等于0,日期不能大于当月的最大日期。代码如下:
if((m < 13) &&(m >0))
{
if(d > months[i-1])
{
printf("输入错误,日期超出范围。");
}
}
else
printf("输入错误,月份超出范围。");