原题链接:蓝桥杯算法提高VIP-任意年月日历输出
难点在于输出格式上qwq,附代码。
参考代码:
#include <stdio.h>
int main(){
int day[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //每个月份所对应的天数
int i,j,k,q,temp,year,month,start = 1,count = 1,flag = 1;
scanf("%d %d", &year,&month);
printf("---------------------\n");
printf(" Su Mo Tu We Th Fr Sa\n");
printf("---------------------\n");
for(i = 2007; i <= year; i++){ //枚举2007-year年
if((i%4==0&&i%100!=0) || (i%400==0)) //是不是闰年
day[2] = 29;
for(j = 1; j <= 12 && flag == 1; j++){ //枚举1-12月
temp = start; //从第temp个格子开始
for(k = temp; k <= day[j]+temp-1; k++){ //k=temp的原因:不是所有的月份都是从第一个格子开始的
if(k%7 == 0){
start = 1; //到达第7个格子了,那么就从头再来
if(flag == 0)
printf("\n");
}
else
start++; //没有到达第7个格子
if(i == year && j == month){
for(q = 1; q <= 3+(temp-1)*3 && flag == 1 && temp < 7; q++) //3+(temp-1)*3=每行要打印的空格数量+第一行要打印号的个数*每个号所占的位置宽度(%3d)=第一行要打印的所有空格数量
printf(" ");
flag = 0;
printf("%3d", count);
count++;
}
}
}
day[2] = 28;
}
printf("\n---------------------\n");
return 0;
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复