输入年月日三个值,先累加该年之前各个月的每月天数,最后累加日期天数即可获取结果。
一、算法设计:
1、输入年月日三个值;
2、为保证程序健壮性,可以对三个值的合法性进行判断,只对合法数据进行操作;
3、累加之前各月天数;
4、累加当前日值;
5、输出结果。
二、注意点:
可以使用数组存储各个月份的天数,用循环累加。需要注意的是闰年的判断。对于闰年,2月要多加一天。
三、参考代码:
#include <stdio.h>int main()
{
int mdays[12] = {31,28,31,30,31,30,31,31,30,31,30,31}//十二个月的天数。
int y,m,d,r=0,i
scanf("%d%d%d",&y,&m,&d)
if(y%400==0 || (y%4==0 && y %100 != 0))//闰年。
mdays[1] = 29//设置闰年二月值。
if(y<0 || m<=0 || m>12 || d<=0 || d>mdays[m-1])//输入非法。
{
printf("输入年月日不合法\n")//提示并退出。
return -1
}
for(i = 0 i < m-1 i ++)//累加之前各个月。
r+=mdays[i]
r+=d//累加日期值。
printf("%d\n",r)//输出结果。
return 0
}
我大概给个思路,代码是现写的 没调试
先定义每个月的天数,2月按28天算
输入年月日后,根据年判断是否闰年(闰年加1天),再从1月加到当月的前一月,再加上日期就可以了
#include <stdio.h>
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31}
main()
{int yy,mm,dd, days
int i
printf("input year:")scanf("%d", &yy)
printf("input month:")scanf("%d", &mm)
printf("input day:")scanf("%d", &dd)
/* 如果大于2月,要做闰年的判断,忘了,不一定准 */
if( mm >2 &&((year%4==0 &&year%100!=0) || year%400==0) ) days = 1
else days = 0
/* 加上前面各整月的天数 */
for(i = 0i <mm-1i++) days += month[i]
/* 加上日数 */
days += dd
printf("This is the %d day of year %d!!\n", days, yy)
}
比如输入 1999 2 1
应该输出:This is the 32 day of year 1999!!