这道题OJ杂不能通过?
B5.菱形字母图
问题描述
输入一个整数n,输出如下用大写字母构成的有规律的图形。如n=3,有图形
但对有些整数n,是无法输出这样的图形的,如n=30。
输入
输入有若干行,每行有一个整数n,(|n|<65536)。 输入直到文件输入结束。
输出
对每一行的测试数据,先在一行上输出“Case #:”,其中“#”是测试数据的行编号(从1开始),再在同一行上输出n的具体值,格式如“n=3”。接着在下面的一行或若干行上输出结果图形。如无法按 要求输出菱形字母图,那么输出“No image!”;两组输出数据之间空一行。
输入样例
3
4
输出样例
Case 1: n=3
A
BBB
CCCCC
BBB
A
Case 2: n=4
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
原文链接:http://acmoj.shu.
代码:
程序代码:
#include <stdio.h> void draw(int n) { char letter = 'A'; int space = n - 1, cols = 1, i; while(space > 0) { for(i = 0; i < space; i++) putchar(' '); for(i = 0; i < cols; i++) putchar(letter); printf("\n"); cols += 2; space--; letter++; } for(i = 0; i < cols; i++) putchar(letter); printf("\n"); letter--; space++; cols -= 2; while(space < n) { for(i = 0; i < space; i++) putchar(' '); for(i = 0; i < cols; i++) putchar(letter); printf("\n"); cols -= 2; space++; letter--; } } int main(void) { int n, i = 1; while(scanf("%d", &n) != EOF) { if(n > 0 && n < 27) { printf("case %d:n=%d\n", i++, n); draw(n); printf("\n"); } else { printf("No image!\n\n"); } } return 0; }