1 条题解

  • 0
    @ 2025-8-24 21:15:57

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar CleverRaccoon
    不蓝钩不改个签

    搬运于2025-08-24 21:15:56,当前版本为作者最后更新于2024-01-29 10:26:09,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    估值掉了好多,又来写题解了捏。

    题目描述

    输出一个图形,共 NN 行,每行的一开始是一个 |,中间除了第 n+12\frac{n+1}{2} 行是 N2N-2- 以外,其它均为 N2N-2a,最后是一个 |

    思路

    按照题目描述模拟即可,但一定要注意输出格式要规范

    11 遍历到 NN,每行首先设置要在两个 | 中间输出的元素 cc,普通行为 a,第 n+12\frac{n+1}{2} 行是 -

    char c='a';
    if(i==(n+1)/2)c='-';
    

    然后输出行首的 |

    putchar('|');
    

    接着输出 N2N-2cc(即要在两个 | 中间输出的元素),使用循环。

    for(int j=3;j<=n;j++)putchar(c);
    

    输出行末的 |,与行首的 | 同理,不再赘述。

    最后,是换行。换行是很考验规范性的地方,因为最后一行不应有换行,设当前在第 ii 行,即若 ini\neq n,才会输出换行。

    if(i!=n)putchar('\n');
    

    完整代码

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){	// 输出共 n 行
    		char c='a';
    		if(i==(n+1)/2)c='-';	// 设置当前行要输出的内容
    		putchar('|');
    		for(int j=3;j<=n;j++)putchar(c);	// 按照格式输出
    		putchar('|');
    		if(i!=n)putchar('\n');	// 换行问题
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    9624
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者