#include<stdio.h>
#include<math.h>
#include<string.h>
int main(){
int i,j,num,n;
scanf("%d",&n);
for(i=1;i<=n*n;i++){
if(i<10){
printf("0%d",i);
}
else{
printf("%d",i);
}
if(i%n==0){
printf("\n");
}
}
printf("\n");
num=1;
for(i=1;i<=n;i++){
for(j=1;j<=n-i;j++){
printf(" ");
}
while(num<=i*(i+1)/2){
if(num<10){
printf("0%d",num);
}
else{
printf("%d",num);
}
num++;
}
printf("\n");
}
return 0;
}
关键就是找规律,对于正方形,从1至n的平方,当i%n==0时直接换行,其余输出数据,注意前导0的使用。。。
对于三角形,两层循环,当n<i*(i+1)/2时,输出的两个空格,其余的则输出数据。。。。