PAT B1027 打印沙漏(C++) 发表于 2018-11-22 | 分类于 PAT题解 | | 字数统计: 184 字 | 阅读时长 ≈ 1 分钟 PAT甲级目录 | PAT乙级目录 题目描述 B1027 打印沙漏 解题思路先找到第一行需要打印的字符数,再通过循环控制字符数目打印 易错点 沙漏右侧没有空格 代码示例:12345678910111213141516171819#include <cstdio>void print(int cnt, int i, char c){ for(int j = 0; j < cnt; j++) printf(" "); for(int j = 0; j < i; j++) printf("%c", c); printf("\n");}int main(){ int N, k = 1, r = 1; char c; scanf("%d %c", &N, &c); for(int i = 3; r + 2 * i <= N; i+=2){ r = r + 2 * i; k = i; } for(int i = k, cnt = 0; i >= 1; i-=2, cnt++) print(cnt, i, c); for(int i = 3, cnt = (k - 1) / 2 - 1; i <= k; i+=2, cnt--) print(cnt, i, c); printf("%d", N - r); return 0;} 本文作者: Philo 本文链接: http://lulalap.com/2018/11/22/PAT-B1027-cpp/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!