题目描述
小杨想要构造一个 N×N 的日字矩阵(N 为奇数),具体来说,这个矩阵共有 N 行,每行 N 个字符,其中最左列、最右列都是 |,而第一行、最后一行、以及中间一行(即第(n+1)/2行)的第 2∼N−1 个字符都是 - ,其余所有字符都是半角小写字母 x 。例如,一个 N=5 日字矩阵如下:
|---|
|xxx|
|---|
|xxx|
|---|
请你帮小杨根据给定的 N 打印出对应的“日字矩阵”。
输入格式
一行一个整数 N(5≤N≤49,保证 N 为奇数)。
输出格式
输出对应的“日字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空格等任何符号。你一个恰好输出 N 行,每行除了换行符外恰好包含 N 个字符,这些字符要么是 -,要么是 |,要么是 x。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
输入输出样例
输入 #1复制
5
输出 #1复制
|---|
|xxx|
|---|
|xxx|
|---|
输入 #2复制
7
输出 #2复制
|-----|
|xxxxx|
|xxxxx|
|-----|
|xxxxx|
|xxxxx|
|-----|
分析
分成两种情况:1. 为第一行、最后一行、以及中间一行(即第(n+1)/2行)
2. 是其他行
!!!无论是哪种情况,都要先输出一个"|",最后也要输出一个"|"并换行!!!
如果是情况1:从2开始,到n-1,输出"-"
如果是情况1:从2开始,到n-1,输出"x"
代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int middle=(n+1)/2;
for(int i=1;i<=n;i++)//控制整体的行
{
if(i==1||i==middle||i==n)//情况1
{
cout<<"|";
for(int j=2;j<=n-1;j++)//j<n也行
{
cout<<"-";
}
cout<<"|"<<endl;
}
else//情况2
{
cout<<"|";
for(int j=2;j<=n-1;j++)//j<n也行
{
cout<<"x";
}
cout<<"|"<<endl;
}
}
return 0;
}
1958

被折叠的 条评论
为什么被折叠?



