【题目】

样例输入:
5
样例输出

【解题思路】
图形的输出一定采用双层循环,外层循环控制输出的行数,内层循环控制每一行输出的内容。
图形的输出难点是找每一行输出的某些符号的数量与行号的关系,有时候这种关系不能找到一个统一的公式,需要将图形拆分成几部分分别找规律再输出。
本题可以将图形分成上下两部分输出,上半部分和下半部分的输出是相反的的关系,所以在写完上半部分输出代码后,只需要将控制外层循环的i的取值反向获取即可。
上下对称的图形,中间一行往往要单独输出。
【代码】
cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;//输出n行
cin>>n;
//第一部分:输出上半部分
for(int i=1;i<=n/2;i++)
{
for(int j=1;j<=i-1;j++)
cout<<'-';
cout<<'+';
for(int j=1;j<=n-i*2;j++)
cout<<'-';
cout<<'+';
for(int j=1;j<=i-1;j++)
cout<<'-';
cout<<endl;
}
//第二部分:输出中间一行
for(int i=1;i<=(n-1)/2;i++)
cout<<'-';
cout<<'+';
for(int i=1;i<=(n-1)/2;i++)
cout<<'-';
cout<<endl;
//第二部分:输出下半部分
for(int i=n/2;i>=1;i--)
{
for(int j=1;j<=i-1;j++)
cout<<'-';
cout<<'+';
for(int j=1;j<=n-i*2;j++)
cout<<'-';
cout<<'+';
for(int j=1;j<=i-1;j++)
cout<<'-';
cout<<endl;
}
return 0;
}
【划重点】
以上思路只是其中的一种解题思路,也欢迎大家留言说一下自己的解题思路。