编写一C语言程序,给定某年某月某日,将其转换成这一年的第几天并输出。 提示:定义如下的二维数组,根据月份循环求和即可。 int day_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}};
时间: 2023-07-02 11:15:19 浏览: 137
《C语言程序设计》第三版课后答案 清华大学出版社
好的,以下是程序代码:
```c
#include <stdio.h>
int day_tab[2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int is_leap_year(int year) { // 判断闰年
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int year, month, day, days = 0;
printf("请输入年月日,格式为 yyyy-mm-dd:\n");
scanf("%d-%d-%d", &year, &month, &day); // 读入年月日
for (int i = 1; i < month; i++) { // 循环累加前面月份的天数
days += day_tab[is_leap_year(year)][i];
}
days += day; // 加上当前月份的天数
printf("%d年%d月%d日是该年的第%d天。\n", year, month, day, days);
return 0;
}
```
程序思路是先定义一个二维数组 `day_tab` 存储每个月份的天数,然后通过循环累加前面月份的天数和当前月份的天数来计算这一天是这一年的第几天。在循环中需要用到一个函数 `is_leap_year` 来判断当前年份是否是闰年,以决定使用哪一行的天数数组。最后输出结果即可。
阅读全文