c语言编程一个solarMonthDays函数,用于计算公历当月的天数
时间: 2024-01-22 09:21:20 浏览: 66
可以使用以下代码实现:
```c
#include <stdio.h>
int solarMonthDays(int year, int month) {
int days;
if (month == 2) { // 二月份
days = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) { // 小月份
days = 30;
} else { // 大月份
days = 31;
}
return days;
}
int main() {
int year, month;
printf("请输入年份和月份:");
scanf("%d%d", &year, &month);
printf("%d年%d月有%d天。\n", year, month, solarMonthDays(year, month));
return 0;
}
```
这个函数接受两个参数,一个是年份,一个是月份。根据公历月份的规律,我们可以判断出该月份的天数,然后返回该天数。在主函数中,我们可以通过输入年份和月份来调用该函数并输出结果。
相关问题
用C语言编写一个计算当月天数的代码
在C语言中,我们可以利用一个简单的条件判断结构来计算给定月份的天数。这里假设我们只考虑公历非闰年的普通月份。下面是计算每个月天数的一个简单示例:
```c
#include <stdio.h>
int main() {
int month, days;
printf("请输入月份 (1-12): ");
scanf("%d", &month);
switch(month) {
case 1: // January
case 3: // March
case 5: // May
case 7: // July
case 8: // August
case 10: // October
case 12: // December
days = 31; // 这些月份有31天
break;
case 4: // April
case 6: // June
case 9: // September
case 11: // November
days = 30; // 这些月份有30天
break;
default: // February
if(is_leap_year()) { // 如果是闰年
days = 29;
} else {
days = 28; // 非闰年的二月有28天
}
break;
}
printf("给定月份的天数是: %d\n", days);
return 0;
}
// 辅助函数检查是否是闰年
int is_leap_year() {
int year;
scanf("%d", &year);
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); // 按照格里高利历规则
}
```
在这个程序中,用户输入月份后,会根据月份的不同计算相应的天数。如果月份是2月,则需要进一步检查是否是闰年。
c语言万年历源代码csdn,用C语言编写万年历,可以阳历和阴历转换?谢了
以下是一个简单的 C 语言编写的万年历程序的源代码,可以实现阳历和阴历的转换:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义全局变量
int year, month, day, week;
// 函数声明
void print_calendar(int year, int month);
int get_weekday(int year, int month, int day);
int is_leap_year(int year);
int get_month_days(int year, int month);
int main()
{
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
if (month < 1 || month > 12) {
printf("输入的月份不合法!\n");
exit(1);
}
print_calendar(year, month);
return 0;
}
// 打印日历
void print_calendar(int year, int month)
{
int i, j, k, days;
printf("------------------------------\n");
printf(" %d年%d月\n", year, month);
printf("------------------------------\n");
printf("日 一 二 三 四 五 六\n");
// 计算当月天数
days = get_month_days(year, month);
// 计算当月第一天是星期几
week = get_weekday(year, month, 1);
for (i = 0; i < week; i++) {
printf(" ");
}
for (j = 1; j <= days; j++) {
printf("%2d ", j);
week++;
if (week == 7) {
printf("\n");
week = 0;
}
}
if (week > 0) {
for (k = week; k < 7; k++) {
printf(" ");
}
printf("\n");
}
}
// 判断某一年是否为闰年
int is_leap_year(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
// 获取某一年某一月的天数
int get_month_days(int year, int month)
{
int days;
if (month == 2) {
if (is_leap_year(year)) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return days;
}
// 获取某一天是星期几
int get_weekday(int year, int month, int day)
{
int c, y, m, d;
if (month == 1 || month == 2) {
m = month + 12;
y = year - 1;
} else {
m = month;
y = year;
}
c = y / 100;
y = y % 100;
d = day;
return (c / 4 - 2 * c + y + y / 4 + 13 * (m + 1) / 5 + d - 1) % 7;
}
```
该程序的运行示例:
```
请输入年份:2022
请输入月份:2
------------------------------
2022年2月
------------------------------
日 一 二 三 四 五 六
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
```
注意:该程序只是一个简单的万年历,可能存在一些缺陷,比如对于一些特殊日期的处理等。如果需要更完善的功能,可以参考其他更为专业的万年历程序或库。
阅读全文