C 练习实例4

C 语言经典100例 C 语言经典100例

题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

实例

#include <stdio.h> // 用一个数组存储每个月的天数 const int daysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int main() { int day, month, year, sum; printf("\n请输入年、月、日,格式为:年,月,日(2015,12,10)\n"); if (scanf("%d,%d,%d", &year, &month, &day) != 3 || month < 1 || month > 12 || day < 1 || day > 31) { printf("输入数据错误\n"); return 1; } // 计算输入月份之前的总天数 sum = 0; for (int i = 0; i < month - 1; i++) { sum += daysInMonth[i]; } sum += day; // 判断是否为闰年 int leap = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); // 如果是闰年且月份大于2, 总天数加一天 if (leap && month > 2) { sum++; } printf("这是这一年的第 %d 天。\n", sum); return 0; }

以上实例输出结果为:

请输入年、月、日,格式为:年,月,日(2015,12,10)
2015,10,1
这是这一年的第 274 天。

C 语言经典100例 C 语言经典100例