C语音根据年份月份计算天数
时间: 2023-05-22 12:01:00 浏览: 87
好的,根据年份和月份计算天数的代码如下:
```c
#include <stdio.h>
int main()
{
int year, month, days;
printf("请输入年份和月份:");
scanf("%d%d", &year, &month);
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
days = 29;
else
days = 28;
break;
default:
printf("输入的月份有误!\n");
return 0;
}
printf("%d年%d月有%d天。\n", year, month, days);
return 0;
}
```
希望能对您有所帮助!
相关问题
C语音根据年份月份计算天数 写成一个子函数
好的,以下是一个计算天数的子函数的示例代码:
```c
int days_in_month(int year, int month) {
int days = 0;
switch (month) {
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = 31;
break;
}
return days;
}
```
这个函数接受两个参数:年份和月份,返回该月份的天数。它使用了一个 switch 语句来根据月份计算天数,特别地,对于二月份需要判断是否为闰年。
c语言 根据年份和月份计算该月天数
在C语言中,要根据给定的年份和月份计算该月的天数,可以使用内建库函数`mktime()`或者手动编写一段处理闰年的逻辑。这里我们先假设输入的年份和月份都是有效的,并且考虑公历的规则。
如果你想要一个简单的通用版,可以使用`ctime`库:
```c
#include <stdio.h>
#include <time.h>
int main() {
int year, month;
// 获取用户输入
printf("请输入年份和月份(格式如:2023 2):");
scanf("%d %d", &year, &month);
if(month <= 0 || month > 12) {
printf("无效的月份!\n");
return 1;
}
struct tm date = {0};
date.tm_year = year - 1900; // 转换为自1900年开始计数的年份
date.tm_mon = month - 1; // 月份从0开始计数
date.tm_mday = 1; // 初始日数设为1
// mktime()会自动处理闰年情况
time_t t = mktime(&date);
if (t == -1) {
perror("Invalid date");
return 1;
}
int days_in_month = localtime(&t)->tm_mday;
printf("给定年份和月份:%d-%d 的天数是:%d\n", year, month, days_in_month);
return 0;
}
```
然而,`mktime()`可能会导致错误,因为它依赖于系统的本地设置,对于非标准日期格式(比如某些国家的传统日历),它可能无法正确工作。如果需要更精确控制,你可以自己处理闰年的逻辑:
```c
// 自己处理闰年判断
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int get_days_in_month(int year, int month) {
switch (month) {
case 2:
return is_leap_year(year) ? 29 : 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
int main() {
int year, month;
// ...(同上)
int days = get_days_in_month(year, month);
printf("给定年份和月份:%d-%d 的天数是:%d\n", year, month, days);
return 0;
}
```