C语言一道很基础的题,大神们能帮我编一下吗?

2025-01-08 08:00:37
推荐回答(2个)
回答1:

#include 

#define _Letter(start, n)   ((((start) + (n) - 'A') % 26) + 'A')

int main()
{
    int i = 0, j = 0, len = 0;
    char x = 0, start = 0;

    scanf("%d %c", &len, &x);

    if (len < 1 || x < 'A' || x > 'Z')
    {
        printf("你输入的数据有误!\n");
        return (0);
    }

    start = _Letter(x, len - 1);

    for (i = 0; i < len - 1; ++i)   // 输出第一行
        printf(" ");
    for (i = 0; i < len; ++ i)
        printf("%c", _Letter(start, i));

    printf("\n");

    for (i = 0; i < len - 2; ++i)   // 输出中间行
    {
        for (j = 0; j < (len<<1)+i; ++j)
        {
            if (j == len-i-2 || j == (len<<1) + i-1)
                printf("%c", _Letter(x, j));
            else
                printf(" ");
        }

        printf("\n");
    }

    if (len > 1)    // 输出最后一行
    {
        for (i = 0; i < len * 3 - 2; ++i)
            printf("%c", _Letter(x, i));

        printf("\n");
    }

    return (0);
}

回答2:

你要的这个程序可以实现