用c写一个输出每月天数
时间: 2023-04-04 21:03:03 浏览: 114
可以使用以下代码来输出每月天数:
#include <stdio.h>
int main() {
int year, month, days;
printf("请输入年份和月份:");
scanf("%d%d", &year, &month);
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;
}
printf("%d年%d月有%d天\n", year, month, days);
return 0;
}
相关问题
用C语言写一个输入月天数和一日星期值,输出月历的程序
以下是一个简单的C语言代码,可以实现输入月天数和一日星期值,输出月历的功能:
```c
#include <stdio.h>
int main() {
int days, start_day, day_count = 1;
printf("请输入月天数和一日星期值(1表示星期一,2表示星期二,以此类推):\n");
scanf("%d %d", &days, &start_day);
printf("日\t一\t二\t三\t四\t五\t六\n");
for (int i = 1; i < start_day; i++) {
printf("\t");
}
for (int i = start_day; i <= 7; i++) {
printf("%d\t", day_count);
day_count++;
}
printf("\n");
while (day_count <= days) {
for (int i = 1; i <= 7; i++) {
if (day_count > days) {
break;
}
printf("%d\t", day_count);
day_count++;
}
printf("\n");
}
return 0;
}
```
这个程序首先会读入月天数和一日星期值,然后使用两个循环来打印出月历。第一个循环打印出第一行的日期,通过在星期一之前打印空格来对齐。第二个循环打印出剩余的日期,每行七个。如果日期超过了月天数,循环就会停止。
注意,这个程序没有考虑跨年的情况,也没有考虑闰年的2月。如果需要精确的月历,需要进行一些修改。
用数组存放每月天数
好的,以下是用 C 语言实现的代码,该代码使用数组存放每个月的天数:
```c
#include <stdio.h>
int main() {
int year, month;
int days_in_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("请输入年份:");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days_in_month[1] = 29;
}
for (month = 1; month <= 12; month++) {
printf("%d年%d月有%d天\n", year, month, days_in_month[month-1]);
}
return 0;
}
```
这个代码与之前的代码相比,主要的不同在于我们使用了一个数组来存储每个月的天数。在数组初始化时,我们将每个月的天数依次存放在数组中。
如果是闰年,我们需要将数组中 2 月的天数改为 29。这里我们利用了 C 语言中的条件运算符(`? :`)来判断是否是闰年。
然后,我们使用 `for` 循环遍历每个月份,从数组中取出该月的天数,并打印输出。注意,在数组中,月份从 0 开始,所以我们需要将 `month` 减去 1 来获取正确的天数。
希望这个代码能够帮助到你!