ou_fan的代码:
Description |
使用循环结构打印如下图形: 1 212 32123 4321234 32123 212 1 |
Input |
有多组数据,第一行一个正整数t(t<100)表示输入数据组数,接下来有t组输入数据,每组数据占一行,包含一个整数a,1<=a<=100。 |
Output |
对于每组数据,输出一个菱形,菱形总行数为2*a+1。菱形格式:*左侧使用空格占位,右侧没有空格。请不要输出多余空格。 |
Sample Input |
1 1 |
Sample Output |
1 212 1 |
#include<bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
//多组数据
while (t--) {
int a;
cin >> a;
for (int i = 1;i <= a+1;i++) {
int num1 = i;
//打印空格,找空格与当前行数的关系;
for (int j = 1;j <= a - i+1;j++) {
cout << ' ';
}
//打印前面数字,找个数与当前行数的关系;2*i-1
for (int j = 1;j <= 2 * i + 1;j++)
{
if (num1 >= 1) {
cout << num1;
num1--;
}
}
//打印后半部分
if (num1 == 0) {
num1 = 1;
for (int j = 1;j <= i - 1;j++) {
num1++;
cout << num1;
}
}
cout << endl;
}
//打印下半部分
for (int i = 1;i <= a;i++) {
int num2 = a - i + 1;
for (int j = 1;j <= i;j++) {
cout << ' ';
}
for (int j = 1;j <=a-i+1;j++) {
if (num2 >= 1) {
cout << num2;
num2--;
}
}
if (num2 == 0) {
num2 = 1;
for (int j = 1;j <= a - i;j++) {
num2++;
cout << num2;
}
}
cout << endl;
}
}
return 0;
}