全年日历查询:输入年份,输出该年全年日历(每天对应星期)用C++
时间: 2023-05-25 13:03:29 浏览: 80
以下是用C语言编写的实现代码(不包含闰年判断):
```
#include <stdio.h>
int main(){
int year, month, day, week;
printf("请输入年份: ");
scanf("%d", &year);
printf("==========================================\n");
printf(" %d 年 \n", year);
printf("==========================================\n");
printf(" 一 二 三 四 五 六 日\n");
for(month=1; month<=12; month++){
printf("==========================================\n");
switch(month){
case 1: printf("一月"); break;
case 2: printf("二月"); break;
case 3: printf("三月"); break;
case 4: printf("四月"); break;
case 5: printf("五月"); break;
case 6: printf("六月"); break;
case 7: printf("七月"); break;
case 8: printf("八月"); break;
case 9: printf("九月"); break;
case 10: printf("十月"); break;
case 11: printf("十一月"); break;
case 12: printf("十二月"); break;
}
printf("\n");
// 计算该月第一天是星期几
day = 1;
week = (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7;
// 输出日期
for(int i=0; i<week; i++)
printf(" ");
for(int i=1; i<=31; i++){
if((i<10 && month==2) || (i<10 && month==4) || (i<10 && month==6) || (i<10 && month==9) || (i<10 && month==11))
printf(" ");
if(i>28 && (month==2 || month==4 || month==6 || month==9 || month==11))
break;
printf("%2d ", i);
week++;
if(week%7 == 0)
printf("\n");
}
printf("\n");
}
printf("==========================================\n");
return 0;
}
```
代码实现思路:
- 首先让用户输入年份。
- 接着利用循环和switch-case语句,分别打印12个月份的日历。
- 在输出具体日期时,先利用蔡勒公式去计算该月第一天是星期几,再利用循环输出每一天对应的日期和星期几。为了便于输出对齐,可以考虑对于每个月的前几天,输出空格让其对齐。