Your_motion 2022-11-11 11:51 采纳率: 66.7%
浏览 47
已结题

如何用c语言编写类数字金字塔

img


基础版的金字塔勉强能接受,但这个plus版的不会解了,有没有老司机帮解下思路

  • 写回答

2条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2022-11-11 12:48
    关注

    找一个修改修改就行了呀

    img

      
     
    #include <stdio.h>
     
      void PrintNumers(int line)
    {
        int i, j, k;
        int space = 16;
        //  上三角行循环,由于line与行数相关,故可直接使用line作为范围
        for(i = 0; i < line; i ++)
        {
            //  输出空格,为了直观,故改空格为星形符号*
            for(j = space; j > 0; j --)
                printf(" ");
            //  输出前一部分1,2,3……
               for(k = 0; k < i + 1; k ++)
                printf("%d",k + 1);
            //  在当前基础上,重利用k的值,输出后一部分2,1,没0
            for(k = k - 1;k > 0; k --)
                printf("%d", k);
            //  每输出完一行内容,就减去一个空位,也就是星形符号,以便下一行可以新增一个数字
            space --;
            //  每输出完一行就换行
            printf("\n");
        }
        //  在当前基础上,重利用space的值,因为上一步最后space--了,所以这次利用需要对space加两次,若加一次则和上三角最后的行等长
        space += 2;
        //  下三角行循环
        for(int i = line - 1; i > 0; i --)
        {
            //  输出空格,为了直观,故改空格为星形符号*
            for(j = space; j > 0; j --)
                printf(" ");
            //  输出前一部分1,2,3……
            for(k = 0; k < i; k ++)
                printf("%d",k + 1);
            //  输出后一部分2,1,没0
            for(k = k - 1;k > 0; k --)
                printf("%d", k);
            //  每输出完一行内容,就增加一个空位,也就是星形符号,以便下一行可以减少一个数字
            space ++;
            //  每输出完一行就换行
            printf("\n");
        }
    }
    main(){
        int a;
        scanf("%d",&a);
        PrintNumers(a);
    }
    
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月11日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程