C语言万年历代码及解释
时间: 2023-08-18 15:15:16 浏览: 161
以下是一个简单的C语言万年历代码及解释:
```c
#include <stdio.h>
int main() {
int year, month, day, daysInMonth, weekDay = 0;
int i, j;
// 输入年份和月份
printf("请输入年份和月份: ");
scanf("%d %d", &year, &month);
// 计算该月有多少天
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
daysInMonth = 29;
} else {
daysInMonth = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
daysInMonth = 30;
} else {
daysInMonth = 31;
}
// 计算该月的第一天是星期几
day = 1;
weekDay = 0;
for (i = 1; i < year; i++) {
for (j = 1; j <= 12; j++) {
if (j == 2) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
weekDay += 29;
} else {
weekDay += 28;
}
} else if (j == 4 || j == 6 || j == 9 || j == 11) {
weekDay += 30;
} else {
weekDay += 31;
}
}
}
for (i = 1; i < month; i++) {
if (i == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
weekDay += 29;
} else {
weekDay += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
weekDay += 30;
} else {
weekDay += 31;
}
}
weekDay = (weekDay + day) % 7;
// 输出日历表头
printf("\n日 一 二 三 四 五 六\n");
// 输出该月的日期
for (i = 0; i < weekDay; i++) {
printf(" ");
}
for (i = 1; i <= daysInMonth; i++) {
printf("%2d ", i);
if ((i + weekDay) % 7 == 0) {
printf("\n");
}
}
return 0;
}
```
代码的大致思路如下:
1. 首先让用户输入需要查看的年份和月份。
2. 根据输入的年份和月份,计算该月有多少天。
3. 计算该月的第一天是星期几,以便在日历表格中正确显示日期。
4. 输出日历表头。
5. 根据计算出的第一天星期几,输出该月的日期。
代码中用到的主要语法和函数包括:
- `if`/`else if`/`else`条件语句:根据不同的条件执行不同的代码块。
- `for`循环语句:循环执行一段代码,可以用来计算日期。
- `%`取模运算符:计算一个数除以另一个数的余数。
- `printf`函数:用于输出文本到控制台。
- `scanf`函数:用于从控制台读取用户输入的数据。
以上是一个简单的C语言万年历代码及解释,希望对你有所帮助。