这个代码原理很容易分析:
- 首先要搞明白每个月有几天
- 1,3,5,7,8,10,12每月31天
- 2月份闰年29天,平年28天
- 其余月份30天
- 然后要判断是否是闰年
- 闰年判断条件:
- 如果年份能被4整除但不能被100整除,那么这一年就是闰年。
- 如果年份能被400整除,那么这一年也是闰年。
- 如果是闰年,那么二月份要多一天(29天)
- 然后计算天数
直接看代码
#include<stdio.h>
//输入年月日,输出这天是这一年的哪一天
int main(){
int i,year,month,day,dayth = 0;
int a[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//数组a保存天数
printf("输入年 月 日:");
scanf("%d%d%d",&year,&month,&day);
if(year%4 == 0 && year % 100 != 0 || year % 400 == 0 ){//判断是否是闰年,
//是闰年则二月份天数为29
a[2] += 1;
}
for(int i=0;i<month;i++){
//用for循环将输入月份的前month-1个月份的天数求和
dayth += a[i];
}
dayth = dayth + day;//加上输入的天数
printf("%d年%d月%d日是%d的第%d天",year,month,day,year,dayth);
return 0;
}
测试结果: