C语言 编程实现: 从键盘输入年份和月份,计算从该年1月1日到当月月底的总天数。 输入格式: 输入某年某月,如:2021 11 输出格式: 从该年1月1日到当月月底的总天数,最后换行。 输入样例: 2021 11 输出样例: 334
时间: 2023-11-27 09:53:50 浏览: 223
以下是该问题的 C 语言代码实现:
```c
#include <stdio.h>
int main() {
int year, month;
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数
scanf("%d %d", &year, &month);
// 判断是否为闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days[1] = 29; // 闰年2月有29天
}
int total_days = 0;
for (int i = 0; i < month - 1; i++) {
total_days += days[i]; // 累加从1月到上一个月的天数
}
printf("%d\n", total_days + 1); // 加上当月天数并输出
return 0;
}
```
代码思路:
1. 定义每个月的天数数组 `days`,注意闰年的情况。
2. 从键盘输入年份和月份。
3. 根据输入的年份判断是否为闰年,并修改二月的天数。
4. 循环累加从1月到上一个月的天数。
5. 加上当前月的天数并输出。
相关问题
c语言编程实现: 从键盘输入年份和月份,计算从该年1月1日到当月月底的总天数。 输入格式: 输入某年某月,如:2021 11 输出格式: 从该年1月1日到当月月底的总天数,最后换行。 输入样例: 2021 11 输出样例: 334
以下是 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int year, month;
scanf("%d%d", &year, &month);
int days = 0;
for (int m = 1; m < month; m++) {
switch (m) {
case 2:
days += isLeapYear(year) ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
default:
days += 31;
break;
}
}
days += 1; // 加上当月的第一天
printf("%d\n", days);
return 0;
}
```
首先通过 `scanf` 函数从标准输入中读取年份和月份。然后使用一个 `for` 循环,计算从该年1月1日到当月月底的总天数。循环中使用 `switch` 语句计算每个月的天数,需要特判闰年的二月。最后将当月的第一天加上去即可。
注意,这个程序假设输入的年份和月份都是合法的。如果需要对输入进行有效性检查,可以添加相应的代码。
c语言,从键盘输入年份和月份,计算该年1月1到当月月底的总天数
可以采用循环的方式,根据每个月的天数累加总天数。需要注意闰年的情况,闰年的2月有29天。
以下是示例代码:
```c#include <stdio.h>
int main() {
int year, month, totalDays = 0;
printf("请输入年份和月份,格式为 yyyy mm:\n");
scanf("%d %d", &year, &month);
// 计算该年1月1日是星期几
int dayOfWeek = 1; // 1900年1月1日是星期一,因此从星期一开始计算
for (int y = 1900; y < year; y++) {
dayOfWeek = (dayOfWeek + (y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ? 366 : 365)) % 7;
}
for (int m = 1; m < month; m++) {
int daysInMonth;
switch (m) {
case 4:
case 6:
case 9:
case 11:
daysInMonth = 30;
break;
case 2:
daysInMonth = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 29 : 28;
break;
default:
daysInMonth = 31;
}
totalDays += daysInMonth;
}
totalDays += dayOfWeek; // 1月1日是星期几,加上这些天
totalDays += 30 - (totalDays - 1) % 7; // 加上当月剩余的天数
printf("%d年%d月的总天数为%d天。\n", year, month, totalDays);
return 0;
}
```
需要注意的是,该代码中采用了一些简化计算的方法,可能存在误差,不适用于精确计算。