输入一个整数n(n>=1)和一个字母c,输出如下示例的图形
6 Y
Y Y Y Y Y Y
Y Z Z Z Z Y
Y Z A A Z Y
Y Z A A Z Y
Y Z Z Z Z Y
Y Y Y Y Y Y
---------------------------
5 a
aaaaa
abbba
abcba
abbba
aaaaa
你可以把你尝试过的办法写出来, 并写出你碰到了什么具体的问题。
根据输入的字母,你要找到这个字母在字母表的下一个,再下一个。。。(Z 的下一个是 A),然后按照模式输出就可以了。
#include <stdio.h>
#include <stdlib.h>
int main(int argc , char **argv){
char ch = 'A';
int len = 0;
if(argc >= 1){
len = atoi(argv[1]);
printf("len = %d\n", len);
}
int i = 0;
int j = len - 1;
for(; j >= 0; j--){
for(; i < len; i++){
if(j > i && j > len-1 -i)
printf("%c ",ch);
if(j > i && j < len-1 -i)
printf("%c ",ch++);
if(j < i && j > len-1 -i)
printf("%c ", --ch);
if(j < i && j < len-1 -i)
printf("%c ",ch);
if(j == i || j == len-1 -i)
printf("%c ",ch);
}
putchar(10);
ch = 'A';
i = 0;
}
}
以图形的左下角为坐标轴(0,0)来进行计算,能发现图形被X状的两个函数等分为4块,其中左块用来计算字符的递增或者递减,右边为左边的逆操作。上下两块保持字符不变。最后再补全落于两个函数上的值就行了。