c菜鸟问个题,根据输入的数打印 相应的图形

题目要求如图,就是根据输入的数 打印相关图形图片

这种题目很灵活好嘛……多动脑观察亲,先观察下每次输入数字n之后,需要开辟多大的二维数组,再看每一行到下一行之间有什么变化,xyz012……这是ASCLL码递增,图片说明以后还是勤思考……

 #include <stdio.h>

int main()
{
    char mch[] = "xyz0123";
    int n = 5;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i < j) printf("%c", mch[i]); else printf("%c", mch[j]);
        }
        for (int j = n - 1; j >= 0; j--)
        {
            if (i < j) printf("%c", mch[i]); else printf("%c", mch[j]);
        }
        printf("\n");
    }
    for (int i = n - 1; i >= 0; i--)
    {
        for (int j = 0; j < n; j++)
        {
            if (i < j) printf("%c", mch[i]); else printf("%c", mch[j]);
        }
        for (int j = n - 1; j >= 0; j--)
        {
            if (i < j) printf("%c", mch[i]); else printf("%c", mch[j]);
        }
        printf("\n");
    }
}



http://codepad.org/NM1xPBse

xxxxxxxxxx
xyyyyyyyyx
xyzzzzzzyx
xyz0000zyx
xyz0110zyx
xyz0110zyx
xyz0000zyx
xyzzzzzzyx
xyyyyyyyyx
xxxxxxxxxx

#include
#include

char a[100][100];
char list[]={'x','y','z','0','1','2','3','4','5','6','7','8','9'};
int main()
{
void print_arry(int n);
int n;
printf("Please input n:\n");
scanf("%d",&n);
print_arry(n);
int p,q;
for(p=0;p<=2*(n-1);p++)
{
for(q=0;q<=2*(n-1);q++)
printf("%3c",a[p][q]);
printf("\n");
}
system("pause");
return 0;
}

void print_arry(int n)
{
int i;
static int k=0;
static int start,end=2*(n-1);
if(n==1)
{
a[start][end]=list[k];
}
else
{
for(i=start;i<=end;i++)
{
a[start][i]=list[k];
a[i][start]=list[k];
a[end][i]=list[k];
a[i][end]=list[k];
}

    /*int p,q;
    for(p=start;p<=end;p++)
    {
        for(q=start;q<=end;q++)
            printf("%3c",a[p][q]);
        printf("\n");
    }
    printf("\n");*/

    k++;
    start=k;
    end-=1;
    print_arry(n-1);
}

}