F
每列占3个字符,列与列之间还要加个空格,则当数字<10时,相邻3个空格,>10时,相邻2个空格
而且通过看图例,星期六那一列最后是没有空格的,这就要求我们把空格打在数字前面。
而且第一行第一个数字位于的列 前面那些列,每列有4个空格
因为当输入为7的时候,前面没空格
所以分两种情况
且注意一下每一行第一列的特殊情况(因为与前面只有3个空格,而非4个空格)
代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int fir,j,n,i=1,count=0;
scanf("%d",&n);
printf("Sun Mon Tue Wen Thu Fri Sat\n");
if(i==1);
{
if(n<=6)
{
for(fir=1;fir<=4*n-1;fir++)
printf(" ");
for(j=1;j<=7-n;j++)
{
count++;
printf(" %3d",count);
}
printf("\n");
}
else
{
for(j=1;j<=7;j++)
{
count++;
if(j==1)
printf("%3d",count);
else
printf(" %3d",count);
}
printf("\n");
}
}
for(i=2;i<=6;i++)
{
for(j=1;j<=7;j++)
{
count++;
if(count>30)
break;
if(j==1)
printf("%3d",count);
else
printf(" %3d",count);
}
if(i<6)
printf("\n");
}
}
可能有点复杂=-=
我太菜了,写了将近一个小时呜呜呜
ps:
确实有点麻烦哈,又花了点时间优化了一下
#include<stdio.h>
int main()
{
int i,n,j,x,count=1,flag=0;
scanf("%d",&n);
printf("Sun Mon Tue Wen Thu Fri Sat\n");
if(n<7)
{
here:
for(i=1;i<=4*n;i++)
printf(" ");
for(x=1;x<=7-n;x++)
{
if(x==1)
printf("%3d",x);
else
printf(" %3d",x);
}
printf("\n");
}
else if(n==7)
{
n=0;
goto here;
}
for(j=x;j<=30;j++)
{
if(count==1)
printf("%3d",j);
else if(count==7)
{
printf("%4d\n",j);
count=0;
}
else
printf("%4d",j);
count++;
}
}
感觉还是有点长呜呜呜