时间限制: 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;
}