这是打年历的,我可以输出12个月的天数,但是求怎样讲每月1号前面的空格打出来?(语言-c++)

CSDN问答 2021-12-30 11:49:12 阅读数:31

这是 个月 输出 年历 天数

#include <stdio.h>
main()
{ int a[6];
int yue,year,day;
printf("输入年份");
scanf("%d",&year);
printf("%d\n",year);
yue=0;
while(yue++<12)
{ printf("%d月",yue);
switch(yue)
{ case 4 :case 6 :case 9 :case 11:
day=30;break;
case 1: case 3:case 5:case 7:case 8:case 10: case 12:
day=31;break;
case 2:
if(year%4==0&&year%400==0!=year%100==0)
day=29;
else day=28;break;}
printf("\n");
int i=0,k,j;
for(k=0;k<7;k++)
printf("%3d",k);
printf("\n");
{for (i=1;i<=day;i++)
if(i%7==0)
{ printf("%3d",i)
printf("\n");}
else printf("%3d", i);
}
printf("\n");
}}




采纳答案:
//打印完当月后会记录最后一行已占用长度,在下个月提前空出相应的空位#include <stdio.h>int main(){ int yue, year, day; printf("输入年份"); scanf("%d", &year); printf("%d\n", year); yue = 0; int num = 0; while (yue++ < 12) { printf("%d月", yue); switch (yue) { case 4:case 6:case 9:case 11: day = 30; break; case 1: case 3:case 5:case 7:case 8:case 10: case 12: day = 31; break; case 2: if (year % 4 == 0 && year % 400 == 0 != year % 100 == 0) day = 29; else day = 28; break; } printf("\n"); int i = 0, k, j; for (k = 0; k < 7; k++) printf("%3d", k); printf("\n"); for (i = 0; i < num; i++) { printf("%3c", ' '); } for (i = 1; i <= day; i++) if ((i+num) % 7 == 0) { printf("%3d", i); printf("\n"); } else printf("%3d", i); num = (day + num) % 7; printf("\n"); } return 0;}

版权声明:本文为[CSDN问答]所创,转载请带上原文链接,感谢。 https://ask.csdn.net/questions/7619759