输入某年某月某日,判断这一天是这一年的第几天?
#include stdio.h
int main() {
int year, month, day;
int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int total_days = 0;
printf("请输入年月日(格式:yyyy-mm-dd):");
scanf("%d-%d-%d", year, month, day);
// 计算闰年,2 月有 29 天
if ((year % 4 == 0 year % 100 != 0) || year % 400 == 0) {
days_in_month[1] = 29;
// 计算这一天是这一年的第几天
for (int i = 0; i month - 1; i++) {
total_days += days_in_month[i];
total_days += day - 1; // 减去本月之前的天数
printf("%d 年 %d 月 %d 日是这一年的第 %d 天\n", year, month, day, total_days);
return 0;
这个程序的基本思路是先计算出输入年份是否为闰年,以确定二月份的天数,然后再计算出输入的月份之前的天数之和,最后加上输入的日数,即可得到这一天是这一年的第几天。
具体实现过程如下:
1.定义变量 year、month 和 day,用于存储输入的年月日。定义数days_in_month,用于存储每个月份的天数。
2.输入年月日,并计算是否为闰年,如果是,将 2 月份的天数设为 29。
3.计算输入月份之前的天数之和,使用 for 循环遍历月份数组,累加每个月份的天数。
4.计算输入月份之前的天数之和,使用 for 循环遍历月份数组,累加每个月份的天数。
这个程序比较简单易懂,但需要注意的是,计算闰年的方法必须正确,否则得到的结果可能不正确。
有话要说...