题目:从键盘输入一个日期,判断是该年的第几天
这题考点很刁钻,读者可以用多种方法计算,考点为:
1. 如何判断是否为闰年
2. 计算二月份时,日期是否要 + 1
最常用的就是通过switch语句,but...本次解答使用一维数组配合 for 循环,以及 if 语句,难度为:1颗星
首先我们需要了解一下什么是闰年:
判断任意年份是否为闰年,需要满足以下条件中的任意一个:
① 该年份能被 4 整除同时不能被 100 整除;
② 该年份能被400整除。
1 #include <stdio.h> 2 int main() 3 { 4 int year, month, day; 5 int sum = 0; // 临时变量 sum, 累加天数 6 int a[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 }; // 数组 a 存放闰年每月的天数 7 int b[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; // 数组 b 存放平年每月的天数 8 9 // 从键盘输入日期 10 printf("please input the date(year-month-day):"); 11 scanf_s("%d-%d-%d", &year, &month, &day); 12 13 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) 14 { 15 // 是闰年,累加数组 a 前 month - 1 个月的天数 16 for (int i = 0; i < month - 1; i++) 17 { 18 sum = sum + a[i]; 19 } 20 } 21 else 22 { 23 // 不是闰年,累加数组 b 前 month - 1 个月的天数 24 for (int i = 0; i < month - 1; i++) 25 { 26 sum = sum + b[i]; 27 } 28 } 29 30 // 将前面累加的结果加上日期,求出总天数 31 // 例如:用户输入7月25日,我们只需要计算前七个月的天数 + 用户输入的天数 day,即可 32 sum = sum + day; 33 34 printf("This is the %d day of %d.\n", sum, year); 35 }