打印·剥洋葱

来源:互联网 发布:mac 返回快捷键 编辑:程序博客网 时间:2024/05/17 01:35

7-8 剥洋葱(15 分)

布告,布告!应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。那废话不多说,我们来说要求的图形AAAAAABBBAABCBAABBBAAAAAA就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。

输入格式:

一行,一个整数,即图形的层数

输出格式:

如上述图形

输入样例:

3

输出样例:

AAAAAABBBAABCBAABBBAAAAAA

#include<stdio.h>

int main()
{
    char a[27]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    char b[100][100];
    int n;
    scanf("%d",&n);
    int i,j,k;
    for(i=0; i<n; i++)///首先我们不剥洋葱,我们把它分为四个部分。左上部分的横纵坐标最小那个就是符号的数组名。如(0,1),最小的为0,所以是A。如(4,2),最小的是2,所以是C。
    {
        for(j=0; j<n; j++)
        {
            for(k=0; k<n; k++)
            {
                if(j<=k) b[j][k]=a[j];
                else b[j][k]=a[k];///所以我们把左上角先填满

            }
        }
    }
    for(j=0; j<n; j++)///向右对折
    {
        for(k=0; k<n; k++)
        {
             b[j][2*n-k-2]=b[j][k];///00 06 01 05 02 04 03 03
        }
    }
        for(j=0; j<n; j++)///向下对折
        {
            for(k=0; k<n*2-1; k++)
            {
            b[2*n-j-2][k]=b[j][k];///00 60 10 50 20 40 30 30

            }
        }

    for(j=0; j<n*2-1; j++)///全部输出
    {
        for(k=0; k<n*2-1; k++)
        {
            printf("%c",b[j][k]);
        }
        printf("\n");
    }
    return 0;

}

原创粉丝点击