题目:从键盘输入一个日期,判断是该年的第几天

这题考点很刁钻,读者可以用多种方法计算,考点为:

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 }

 

 

posted @ 2021-05-18 19:04  北圳南  阅读(281)  评论(0编辑  收藏  举报