NUC1014 排版题.输出排列成菱形的字母
时间限制: 1000ms 内存限制: 65536K
问题描述
输入N值,编程输出如下图形
输入描述
一个整数N(1 ≤ N ≤ 7 )。
输出描述
排列成菱形的大写字符,首字符为Z,以后依次为Y,X...
样例输入
3
样例输出
Z Y X W V U T S
来源
{NOJ}
问题分析:
这个题是拿《CCF NOI1032 菱形》改写的,没想到不是一次AC的,居然出现PE(格式错误)。坑人的地方是字母之间还有一个空格,肉眼还没看出来!
这里问题的关键是,首先控制好行,输出多少行要控制好;其次是控制好每一行,一行中通常由空格、字符、空格、字符和换行符号构成。
一行中,空格、字符、空格和字符的数量与它是第几行构成函数关系。这种函数关系在程序中,通常是用表达式来写的。
另外,用函数封装功能是一种好的做法。
程序说明:
参见链接博文。
参考链接:CCF NOI1032 菱形
#include <iostream> using namespace std; void diamond(int n) { char c = 'Z'; // 打印上半三角 for(int i=1; i<=n; i++) { for(int j=1; j<=(n-i)*2; j++) printf(" "); if(i == 1) printf("%c", c--); else { printf("%c", c--); for(int j=1; j<=(2*i-3)*2+1; j++) printf(" "); printf("%c", c--); } printf("\n"); } // 打印下半三角 for(int i=1; i<=n-1; i++) { for(int j=0; j<i*2; j++) printf(" "); if(i == n - 1) printf("%c", c); else { printf("%c", c--); for(int j=1; j<(2*n-2*i-2)*2; j++) printf(" "); printf("%c", c--); } printf("\n"); } } int main() { int n; cin >> n; diamond(n); return 0; }