C语言图形递归问题 画图如下

 输入一个整数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块,其中左块用来计算字符的递增或者递减,右边为左边的逆操作。上下两块保持字符不变。最后再补全落于两个函数上的值就行了。