难点在于输出格式上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 人评分