PTA. 空心字母金字塔(C语言)

202321332089曹奕炫 软件23 2023-11-04 22:13:25

L2-3 空心字母金字塔

分数 10

作者 翁恺

单位 浙江大学

目录

题目

输入格式:

输出格式:

输入样例:

输出样例:

思路

代码

         代码运行

         总结


题目

输入一个大写的英文字母,输出空心的字母金字塔。

输入格式:

一个大写英文字母。

输出格式:

一个空心的大写英文字母金字塔,其中第1层的“A”在第1行的第40列,列从1开始计数。

输入样例:

E

输出样例:

                                       A
                                      B B
                                     C   C
                                    D     D
                                   EEEEEEEEE

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路

1.通过观察输出样例,可以将代码分成三部分;分别为第一行,最后行与中间部分。

2.输出字符由A按字母表顺序逐渐增加至用户输入字母,运用ASCII码对这一过程进行转换。

3.对每行字符前空格数,中间部分空格数进行准确输出,找准各行之间的规律。

代码

#include<stdio.h>
int main()
{
    char ch,op='A';//op用于ASCII转换输出字母
    int i,j=1,n=40;
    scanf("%c",&ch);
    //第一部分(对第一行A进行输出)
    for(i=1;i<n;i++){
        printf(" ");
    }
    printf("A\n");
    n=n-1;
    op++;
    //第二部分(对中间部分进行输出)
    if(ch!='A'){
    for(;op<ch;op++){
            for(i=1;i<n;i++){//前端空格数输出每行递减1
        printf(" ");
    }
        printf("%c",op);
        for(i=1;i<=j;i++){//中部空格数为由1开始的奇数
            printf(" ");
        }
        printf("%c\n",op);      
        n=n-1;
        j=j+2;
    }
    //第三部分(对末行进行输出)
    for(i=1;i<n;i++){
        printf(" ");
    }
    for(i=1;i<=2*(ch-'A')+1;i++){//末尾行字符数为(2*两字符ASCII码的差+1)
        printf("%c",ch);
    }
}
    return 0;
}

代码运行

总结

将题目要求按部分拆分逐步解决。

 

...全文
580 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
张老师 2023-11-16
  • 打赏
  • 举报
回复

如能总结做题时遇到的易错问题和解决方法就更好了

211

社区成员

发帖
与我相关
我的任务
社区描述
程序设计基础课程教学群
c语言c++ 高校 福建省·厦门市
社区管理员
  • xmzq001
  • 鹿饮涧鸣
  • jiangxiaoju
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

请加入学习社区的软件23级同学修改社区昵称为学号+姓名,以便登记作业提交情况。

试试用AI创作助手写篇文章吧