我需要一段c语言万年历的代码
时间: 2023-09-23 10:05:27 浏览: 70
### 回答1:
下面是一段C语言的万年历代码,可以输出指定年份的日历:
```
#include <stdio.h>
int main()
{
int year, month, day, i, j, k, days;
int monthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char week[7][4]={"日","一","二","三","四","五","六"};
printf("请输入年份:");
scanf("%d",&year);
printf("请输入月份:");
scanf("%d",&month);
if(year%4==0&&year%100!=0||year%400==0) //判断是否是闰年
monthDays[2]=29;
days=0;
for(i=1;i<year;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
days+=366;
else
days+=365;
}
for(i=1;i<month;i++)
days+=monthDays[i];
days+=1;
day=days%7;
printf("%d年%d月\n",year,month);
for(i=0;i<7;i++)
printf("%s\t",week[i]);
printf("\n");
for(i=0;i<day;i++)
printf("\t");
for(i=1;i<=monthDays[month];i++)
{
printf("%d\t",i);
day++;
if(day==7)
{
day=0;
printf("\n");
}
}
printf("\n");
return 0;
}
```
注意,这只是一个简单的万年历代码示例,可能还存在一些细节问题。
### 回答2:
以下是一个简单的C语言万年历代码段:
```c
#include <stdio.h>
int main() {
int year, month, day, total_days, start_day;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
// 计算输入日期是该年的第几天
total_days = 0;
for (int i = 1; i < month; i++) {
if (i == 2) {
// 判断闰年
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
total_days += 29;
} else {
total_days += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
total_days += 30;
} else {
total_days += 31;
}
}
total_days += day;
// 计算输入年份的一月一日是星期几
start_day = (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + total_days;
start_day %= 7;
// 打印日历
printf("日 一 二 三 四 五 六\n");
// 打印空白格子
for (int i = 0; i < start_day; i++) {
printf(" ");
}
// 打印日期
for (int i = 1; i <= 31; i++) {
printf("%2d ", i);
start_day++;
if (start_day % 7 == 0) {
printf("\n");
}
}
return 0;
}
```
这段代码实现了根据用户输入的年份和月份来打印万年历的功能。它首先需要用户输入年份和月份,然后根据输入的年份和月份计算出该月的总天数,并判断输入年份的一月一日是星期几。然后,它会打印出一个完整的日历,其中包含了该月的所有日期,并正确地布局在每一周中。这个代码段可以在终端或IDE中运行和测试。
### 回答3:
以下是一个简单的C语言万年历的代码示例:
```c
#include <stdio.h>
int main() {
int year, month;
int days, startDay;
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份(1-12): ");
scanf("%d", &month);
// 计算该月份的天数
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
// 计算该月份的起始日
startDay = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + 1) % 7;
// 输出日历头部
printf("\n===========================\n");
printf(" %d年%d月\n", year, month);
printf("===========================\n");
printf("日 一 二 三 四 五 六\n");
// 输出日历内容
for (int i = 0; i < startDay; i++) {
printf(" ");
}
for (int day = 1; day <= days; day++) {
printf("%2d ", day);
// 每输出一个日期后换行
if ((startDay + day) % 7 == 0) {
printf("\n");
}
}
printf("\n===========================\n");
return 0;
}
```
该代码中,用户需要输入年份和月份,然后通过计算第一天的星期和该月份的天数,可以输出一个对应月份的万年历。每个日期都会在相应的星期下输出,超过一行后自动换行。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)