原题传送门 -> https://ac.nowcoder.com/acm/problem/54840
my blog -> https://blog.nowcoder.net/yanhaoyang2106
题目描述
给你一个正整数n(n > 2), 输出高度为n的 ‘Z’
例如,n = 3,输出:
-->
./.
<--
输入描述:
第一行包括一个数T,代表有T组数据。每组数据第一行包括一个整数n。
1 <= T < 40, 3 <= n <= 40
输出描述:
对于每组数据,输出对应的图形。
示例1
输入
1
5
输出
---->
.../.
../..
./...
<----
思路
看到这道题,第一行和最后一行的输出是可以单独拎出来的,先输出(n-1)个"-",再输出一个>,最后一行则反过来。中间的也采取和前面一样的做法,先输出“.”,在输出“/”,最后输出“.”,具体见代码实现。
代码实现
//请原谅我这代码写的又臭又长
#include<iostream>
using namespace std;
int main()
{
int n,T;
cin>>T;
while(T--){//多组数据输入输出
cin>>n;
for(int i=1;i<n;i++) cout<<"-";
cout<<">"<<endl;
//以上输出第一行
int k=n-2;
//这个k是因为找规律可以知道,中间部分的前几个点从n-2开始逐个减少
for(int i=1;i<=n-2;i++){
for(int j=1;j<=k;j++)
cout<<".";
cout<<"/";
for(int j=1;j<=n-k-1;j++)
cout<<".";//再输出后面的点
k--;//输出完每一行k要减1
cout<<endl;
}
cout<<"<";
for(int i=1;i<=n-1;i++)
cout<<"-";
//处理最后一行
cout<<endl;
//因为有多组数据,所以输出后要换行,否则格式错误
}
return 0;
}
拜拜