例子:
输入某年某月某日,判断这一天是这一年的第几天
解决思路:
- 建立一个一维数组存放每个月的天数
- 以3月5日为例,应该先把前两个月的加起来
- 再判断是否闰年决定是否加上多的一天
- 前面计算完后加上原输入的5天
- 最终计算出结果
#include <stdio.h>
//声明判断闰年函数
int years(int year);
int main() {
int year, month, day, days = 0;
int a[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("请输入年月日 如:2000/12/26\n");
scanf("%d/%d/%d", &year, &month, &day);
//计算-如3月5日 将前两个月天数先加起来
for (int i = 1; i <= month; i++) {
days = a[i - 1] + days;
}
//判断是否闰年决定是否加上闰年多出的天数
int is = years(year);
if (is && month > 2) {
days += 1;
}
//计算后的天数加上原来输入的天数
days += day;
printf("%d", days);
return 0;
}
//定义判断闰年函数
int years(int year) {
//假设不是闰年
int is = 0;
//闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
is = 1;//是润年
}
return is;
}