P5725 【深基4.习8】求三角形 【洛谷】
题目描述
模仿例题,打印出不同方向的正方形,然后打印三角形矩阵。中间有个空行。
输入格式
输入矩阵的规模,不超过 9。
输出格式
输出矩形和正方形
输入输出样例
输入 #1
4
输出 #1
01020304
05060708
09101112
13141516
01
0203
040506
07080910
【题目分析】
若想打印此数据,可知,我们并不能直接输出类似1,2,3这样的值,因为题目要求在1-9的数字中需要输出前置位
0,所以我们可以创建一个N行N*2列的二维数组。
要想解决前置位为0的问题,因为题目要求是规模为9所以最大数字为81
我们可以对数字i(81>=i>=1)的数据进行除运算和取余运算(mod 10)
例如 数字5 取余为5,除运算为0
数字12 取余为2,除运算为1
这样便可以简单的计算出每个位置的数字
【代码实现】
#include<iostream>
using namespace std;
int a[20][20];
int b[20][20];
int s=1,k=1,m=1;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n*2;j=j+2){
if(s>=1){
a[i][j]=s/10;
a[i][j+1]=s%10;
s++;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n*2;j++){
cout<<a[i][j];
}
cout<<endl;
}
cout<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n*2;){
if(j>(n*2-2*i)){
b[i][j]=k/10;
cout<<b[i][j];
b[i][j+1]=k%10;
cout<<b[i][j+1];
k++;
j=j+2;
}
else{
cout<<" ";
j=j+1;
}
}
cout<<endl;
}
return 0;
}
【运行结果】
本代码在Devc++下通过,若有错误欢迎指正!!!
浙公网安备 33010602011771号