私信TA

用户名:2950870451

访问量:25676

签 名:

等  级
排  名 197
经  验 6587
参赛次数 0
文章发表 77
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

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

  评论区

厉害
2019-03-31 13:47:25
qwq,另类的实现思路
2019-02-11 19:42:49
  • «
  • 1
  • »