题目描述
打印一个由数字 $0 ∼ n$ 构成的菱形。
其中 $n$ 位于正中心,数字靠近边缘时逐个递减,直至为 $0$。
例如,当 $n=5$ 时,图形如下所示:
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 4 5 4 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0
现在,给定 $n$,请你打印相应菱形。
输入格式
一个整数 $n$。
输出格式
输出相应菱形。
数据范围
$2≤n≤9$
输入样例1:
2
输出样例1:
0
0 1 0
0 1 2 1 0
0 1 0
0
输入样例2:
3
输出样例2:
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0
代码&思路
#include<iostream>
using namespace std;
int n;
int main()
{
cin>>n;
int m=0;
while(m!=n)
{
int q=0;
for(int i=0;i<n-m;i++)
{
cout<<" ";
}
for(int i=0;i<m;i++)//让最中心的数为n-1
{
cout<<q<<' ';
q++;
}
for(int i=0;i<=m;i++)//保证在一开始时输出一个0
{
cout<<q<<' ';
q--;
}
m++;
cout<<endl;
}
while(m!=-1)//倒过来输出一遍
{
int q=0;
for(int i=0;i<n-m;i++)
{
cout<<" ";
}
for(int i=0;i<m;i++)
{
cout<<q<<' ';
q++;
}
for(int i=0;i<=m;i++)
{
cout<<q<<' ';
q--;
}
m--;
cout<<endl;
}
return 0;
}