【PTA题目】6-21 数字金字塔 分数 15

6-21 数字金字塔

分数 15

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求实现函数输出n行数字金字塔。

函数接口定义:

void pyramid( int n );

其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注

意每个数字跟一个空格。

裁判测试程序样例:

#include <stdio.h>

void pyramid( int n );

int main()
{    
    int n;

    scanf("%d", &n);
    pyramid(n);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

5

输出样例:

    1 
   2 2 
  3 3 3 
 4 4 4 4 
5 5 5 5 5 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

参考答案
void pyramid( int n ){
    int t=n,g=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<t;j++){
            printf(" ");
        }
        t--;
        for(int j=1;j<=g;j++){
            printf("%d ",i);
        }
        g++;
        printf("\n");
    }
}
### PTA平台数字金字塔函数实现 #### 完整的数字金字塔构建 在PTA平台上,构建一个完整的数字金字塔可以通过控制循环来打印每一层的内容。下面是一个具体的例子: ```c #include<stdio.h> int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; ++i) { // 控制行数 for (int j = 1; j <= n - i; ++j) { // 打印每行前导空格 printf(" "); } for (int k = 1; k < i; ++k) { // 打印左半边上升部分 printf("%d", k); } for (int l = i; l >= 1; --l) { // 打印右半边下降部分以及中间相接的部分 printf("%d", l); } printf("\n"); } return 0; } ``` 这段代码实现了输入指定层数`n`后,按照特定模式输出由连续自然数成的正三角形结构[^4]。 #### 空心数字金字塔 对于更复杂的场景——创建空心版本的数字金字塔,则需要额外逻辑处理内部填充为空白的情况: ```c void hollowPyramid(int n){ for (int i = 1; i <= n; ++i) { for (int j = n - i; j > 0; --j) { // 前置空白符 printf(" "); } if (i == 1 || i == n) { // 第一层和最后一层全部显示数字 for (int k = 1; k <= 2 * i - 1; ++k) { printf("%d", ((k <= i)? k : 2*i-k)); } } else { // 中间各层只保留两端的数字 printf("%d", i); // 开头 for (int s = 1; s <= 2 * i - 3; ++s) { // 中间的空隙 printf(" "); } printf("%d", i); // 结尾 } printf("\n"); } } // 测试该功能可以放在main函数里调用hollowPyramid(n),并给定合适的n值作为参数传递进去。 ``` 此段代码展示了如何通过调整条件判断语句,在保持外轮廓的同时让塔体呈现为空的状态[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值