c语言永数组编程万年历
时间: 2024-01-19 13:04:01 浏览: 23
以下是使用C语言编写万年历的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 打印星号函数
void printStar() {
printf("******************************\n");
}
// 打印日历抬头函数
void printBegin() {
printf(" 日 一 二 三 四 五 六\n");
}
// 判断闰年平年函数
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
// 计算总天数函数
int daySum(int year, int month) {
int sum = 0;
int i;
for (i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
sum += 31;
break;
case 4:
case 6:
case 9:
case 11:
sum += 30;
break;
case 2:
if (isLeapYear(year)) {
sum += 29;
} else {
sum += 28;
}
break;
}
}
return sum;
}
// 打印日历函数
void printResult(int sum, int year, int month) {
int i;
for (i = 1; i <= sum % 7; i++) {
printf(" ");
}
for (i = 1; i <= 31; i++) {
if (i <= 28 && month == 2 && !isLeapYear(year)) {
printf(" ");
continue;
}
if (i <= 29 && month == 2 && isLeapYear(year)) {
printf("%2d ", i);
}
if (i <= 30 && (month == 4 || month == 6 || month == 9 || month == 11)) {
printf("%2d ", i);
}
if (i <= 31 && (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)) {
printf("%2d ", i);
}
if ((sum + i) % 7 == 0) {
printf("\n");
}
}
printf("\n");
}
// 主函数
int main() {
int year, month;
printf("请输入年-月:");
scanf("%d-%d", &year, &month);
printBegin();
int sum = daySum(year, month);
printResult(sum, year, month);
printStar();
system("pause"); // 防止闪屏
return 0;
}
```