(C语言)输出上三角队形,数值从大到小

输入格式:5

输出格式:

5 4 3 2 1 
  4 3 2 1 
    3 2 1 
      2 1 
        1 
解决代码如下:

#include<stdio.h>
int main(){
    int x,i,j,k,l;
    scanf("%d",&x);
    for(i=0,l=0;i<x;x--,l++){
        k=0;
        for(k=0;k<2*l;k++){
            printf(" ");
        }
        for(j=x;j>0;j--){
            printf("%d ",j);
        }
        printf("\n");
    }
    return 0;
}

解决此问题,需要先明白此问题需要的规律。

输入数字是几,就会产生几行,第一行数字最多,每一行依次减少一个数字。

还需要保持最右边对齐,这是个比较复杂的规律。

此过程需要三个循环。

产生几行数字是一个循环。

数字从大到小依次递减是第二个循环。

保持最右边对齐是第三个循环。

保持最右边对齐,则需要用空格补齐消失的数字的空位,依次达到每一行都是相同的位置。

就好比,一个教室,有五排桌椅,每一排座位都相同

只不过,第一排坐五个人,第二排坐四个人,第三排坐三个人,第四排坐两个人,最后一排坐一个人。每一排的桌椅数是一样的,但是每一排坐的人数不一样,空的桌椅由空气来坐。这和空格补位是一个道理,

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值