定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,计算并输出该日
在本年中第几天。注意本题一定要定义结构体变量,否则本实验成绩无效。
输入
输入三个整数(并且三个整数是合理的,既比如当输入月份的时候应该在1 至12 之间,
不应该超过这个范围)否则输出Input error!
输出
输出一个整数.既输入的日期是本月的第几天。
样例输入
1985 1 20 2006 3 12
样例输出
20 71
这个题目具有很多坑,
1.如题目说的只有12个月,如果是其他不合法的输出是Input error!
2.如果是闰年并且月份超过二月,则二月是有29天
3.输入的最后一个数字不能比那个月的天数多,也不能小于1
最后代码附上
#include<stdio.h>
struct days{
int year;
int mouth;
int day;
};
bool ruinian(int year)
{
if(year%4==0&&year%100!=0)
{
return true;
}
else if(year%400==0)
{
return true;
}
else
{
return false;
}
}
int main()
{
struct days str;
while(scanf("%d%d%d",&str.year,&str.mouth,&str.day)!=EOF)
{
if(str.mouth<=0||str.mouth>12)
{
printf("Input error!\n");
continue;
}
int sum=0;
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(ruinian(str.year)==true)
b[1]=29;
if(str.day >b[str.mouth-1]||str.day<1)
{
printf("Input error!\n");
continue;
}
for(int i=0;i<str.mouth-1;i++)
{
sum+=b[i];
}
sum+=str.day;
printf("%d\n",sum);
}
return 0;
}