原题传送门 -> 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;
}

拜拜