#include <stdio.h>
int main ()
{
int i;
for (i=1;i<=16;i++)
{
if(i<=9)
{
printf("0%d",i);
}else{
printf("%d",i);
}
if(i%4==0)
{
printf(" \n");
}
}
printf(" \n");
int j;
int k;
for (i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
{
printf(" ");
}
for(k=1;k<=i*(i+1)/2;k++)
{
if(k<10)
{
printf("0%d",k);
}else{
printf("%d",k);
}
if (k=i*(i+1)/2)
{
printf(" \n");
}
}
}
return 0;
}
题主的代码修改如下,修改处见注释,供参考:
#include <stdio.h>
int main ()
{
int i,j,k,n;
scanf("%d",&n);//依题目要求,由键盘输入 n 的值
for (i=0,k=0;i<n;i++)// i 控制行数
{
for(j=0;j<n;j++)// j 控制列数
{
printf("%02d",++k);// 打印输出,格式控制符就可以实现一位数时前面加 0
//if(i<=9)
//{
// printf("0%d",i);
//}else{
// printf("%d",i);
//}
}
// if(k%n==0)//这里 j 循环结束,就输出一个换行符
//{
printf(" \n");
//}
}//以上完成矩形的打印输出
printf(" \n");
//int j;
//int k;
for(i=1,k=0;i<=n;i++)// i 控制行数
{
for(j=1;j<=n;j++)// j 控制列数
{
if(j <= n-i)
printf(" ");
else
printf("%02d",++k);
}
//for(k=1;k<=i*(i+1)/2;k++)
//{
//if(k<10)
//{
// printf("0%d",k);
//}else{
// printf("%d",k);
//}
//if (k=i*(i+1)/2)
//{
printf("\n");
//}
//}
}
return 0;
}
以下提供精简的代码,供参考:
#include <stdio.h>
int main ()
{
int i,j,k,n;
scanf("%d",&n);
for (i=0,k=0;i<n;i++)//打印矩形
for(j=0;j<n;j++)
printf(k%n==0?"%02d\n":"%02d",++k);
printf(" \n");
for (i=n-1,k=1;i>=0;i--,printf("\n"))//打印三角形
for(j=0;j<n;j++)
printf(j>=i?(++k,"%02d"):" ",k);
return 0;
}