时间限制: 1 Sec 内存限制: 128 MB
题目描述
请编程序实现:输入一个不大于13的正整数n和一个大写字母ch,输出以字母ch为中心,边长为n的X形图案。其中,若从上往下看,在X图案4条边上的字母都是依次递增的。
在此,认为大写字母’A’-'Z’按顺序构成了一个环形结构,即’Z’与’A’是相邻的。如果n>13,或n<=0,或输入字母不为大写字母,则输出“Input Data Error.”并结束程序。
输入
一个整数n和一个大写字母ch(输入时数字和字母中间允许有空格)
输出
对应的X形图案
样例输入
4X
样例输出
(图中.表示空格)
杂谈
果然没有真正考过试的人不懂得读题的重要性,有错误输入的提示,而且这俩数据之间可能有空白字符,所以我就不在代码里注释,看谁也没注意到,诶嘿。
代码
#include<stdio.h>
char chchange(int x);
int main () {
int chx,i,j,n;
char ch;
scanf("%d %c",&n,&ch);
chx=ch-'A';
if(n>13||n<=0||chx>26) {
printf("Input Data Error.");
return 0;
}
for (i=-n+1;i<n;i++) {
/*自吹自擂一下,这个丑爆了的代码稍微好看点的地方就是从-n+1开始循环
这样刚好可以用i控制输出的字符
*/
for (j=-n+1;j<n;j++) {
if(i==j||j==-i) printf("%c",chchange(chx+i));
else printf(" ");
}
printf("\n");
}
return 0;
}
char chchange (int x) {
while (x<0) x+=26;
x%=26;
return 'A'+x;
}