//题目:输入某年某月某日,判断这一天是这一年的第几天?
//先设置数组存储闰年与非闰年每个月的天数;判断各个录入数字是否为正整数,判断该年是否为闰年,判断输入的月数是否超过12,判断该日期是否超过该月的最大天数.
//根据是否闰年,决定提取那个数组计算天数.
#include <stdio.h>
void main()
{
int month[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31}; //设置平年闰年每月天数的数组
int year=0,mon=0,day=0,leap=0;
while(1) //仅当输入正确计算完成后才跳出循环.
{
printf("请输入年月日:\n");
scanf("%d%*c%d%*c%d",&year,&mon,&day);
if( (year % 4 == 0 && year % 100!=0) || (year % 400 == 0) )//如果是闰年 则leap=1
leap = 1;
if(year>=0 && mon>0 && mon<12 && day >0 && day <= month[leap][mon-1]) //如果输入正确,则开始计算日期
{
printf("%d年%d月%d日",year,mon,day);
for(int i=0;i<mon-1;i++)
{
day += month[leap][i];
}
break;
}
else//如果输入错误,则重新输入,leap置零,重新计算下次输入的年份是否为闰年
{
printf("输入错误,请重新输入:\n");
leap =0;
}
}
printf("为当年的第%d天.\n",day);
}
|
|