【深基4.习8】求三角形
题目描述
模仿例题,打印出不同方向的正方形,然后打印三角形矩阵。中间有个空行。
输入格式
输入矩阵的规模,不超过 9 9 9。
输出格式
输出矩形和正方形
样例 #1
样例输入 #1
4
样例输出 #1
01020304
05060708
09101112
13141516
01
0203
040506
07080910
#include<bits/stdc++.h>//万能头文件好
using namespace std;
int main(){
int n,i,j,wei=0,weii,where;
scanf("%d",&n);//输入n
//wei表示n*n的位数,weii表示当前数的位数(好补零)
while(pow(10,wei)<=n*n)wei++;//算出n*n的位数
if(n==0)return 0;//特判
// printf("%d",wei);//测试用
//下面进入正方形的输出
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
weii=0;//初始化为0
while(pow(10,weii)<=n*(i-1)+j)weii++;//算当前数的位数
while(weii<wei){
printf("0");
weii++;
}//补零
printf("%d",n*(i-1)+j);//输出该数
}
printf("\n");//记得换行
}
//下面进入三角形的矩阵的输出
printf("\n");//记得换行
where=1;//初始化,第一个数为1
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
weii=0;//初始化为0
while(pow(10,weii)<=where)weii++;//同理,算当前数的位数
if(n-j<i){//如果这个数应该输出来
while(weii<wei){
printf("0");
weii++;
}
printf("%d",where);
where++;//记得加1
}//同上理
else{//否则
weii=0;//把这个数当成0位
while(weii<wei){
printf(" ");
weii++;
}//输出空格
}
}
printf("\n");//记得换行
}
return 0;//over~
}