首页 > 其他分享 >E45.【C语言】热心网友供题:打印数字金字塔

E45.【C语言】热心网友供题:打印数字金字塔

时间:2024-11-14 19:19:23浏览次数:3  
标签:10 供题 space 打印 C语言 空格 printf line E45

目录

1.题目

题目描述

输入说明

输出说明

输入样例

输出样例

注意

2.自解

分析

​编辑

红色区域的打印

橙色区域的打印

绿色区域的打印

蓝色区域的打印

代码

不用动脑筋的代码

能锻炼思维的代码


1.题目

题目描述

给出10个数,要求以金字塔形式输出,10个数按顺序摆放在金字塔中,依次为从上到下,从左到右

输入说明

10个大于等于0且小于10的整数

输出说明

金字塔

输入样例

5 6 2 3 8 9 1 4 0 7

输出样例

f9043070f25a49b7916e985a562ad955.png

注意

每一行最后的空格要加上。,即每一行都有7个字符

2.自解

分析

题目说的每一行都有7个字符其实不准确,如果加上\n则每行有8个字符

1b23a236ad27451399ce89b5b936f8d8.png

非数字和\n的地方为空格


外循环控制行,内循环负责打印四个部分:红、橙、绿和蓝

红色区域的打印

第一行打印3个空格;第二行打印2个空格;第三行打印1个空格;第四行打印0个空格;

因此可以写出

        for (space = 4 - line; space > 0; space--)
            printf(" ");

橙色区域的打印

注意:不要想着怎么单独打印数字和数字之间的空格,处理起来会非常麻烦

因此循环一次,打印一个数字和一个空格

第一行打印(一个数字和一个空格)*1;第二行打印(一个数字和一个空格)*2;

第三行打印(一个数字和一个空格)*3;第四行打印(一个数字和一个空格)*4.

发现*1,*2,*3,*4跟随行数line

因此可以写出

        for (pra = 1; pra <= line; pra++)
        {
            printf("%d ", a[++k]);
        }

注意:在打印的同时还要调整下标:a[++k]

绿色区域的打印

第一行打印2个空格;第二行打印1个空格;第三行打印0个空格;第四行打印0个空格;

因此可以写出

        for (space = 4 - line; space > 1; space--)
            printf(" ");

line==3或line==4时,上述循环根本不进行

蓝色区域的打印

内层的三个循环结束后再补一个\n即可

因此可以写出

        printf("\n");

代码

不用动脑筋的代码
#include<stdio.h>
int main()
{
    int a[10], i;
    for (i = 0; i <= 9; i++)
    {
        scanf("%d", &a[i]);
    }
    printf("   %d   \n", a[0]);
    printf("  %d %d  \n", a[1], a[2]);
    printf(" %d %d %d \n", a[3], a[4], a[5]);
    printf("%d %d %d %d\n", a[6], a[7], a[8], a[9], a[10]);

    return 0;
}
能锻炼思维的代码
#include<stdio.h>
int main()
{
    int a[10], i=0, k=-1, line=0, space=0, pra=0;

    for (i = 0; i <= 9; i++)
    {
        scanf("%d", &a[i]);
    }

    for (line = 1; line <= 4; line++)
    {
        for (space = 4 - line; space > 0; space--)
            printf(" ");
        for (pra = 1; pra <= line; pra++)
        {
            printf("%d ", a[++k]);
        }
        for (space = 4 - line; space > 1; space--)
            printf(" ");
        printf("\n");
    }
}

注:pra的全称:print a(打印数组a)

标签:10,供题,space,打印,C语言,空格,printf,line,E45
From: https://blog.csdn.net/2401_85828611/article/details/143771280

相关文章

  • 97.【C语言】数据结构之栈
    目录栈1.基本概念2.提炼要点3.概念选择题4.栈的实现栈初始化函数入栈函数出栈函数和栈顶函数栈顶函数栈销毁函数栈基本概念参见王爽老师的《汇编语言第四版》第56和57页节选一部分1.基本概念2.提炼要点1.定义:一种特殊的线性表,其只允许在固定的一端进行......
  • c语言知识点总结-字符串、思维导图
    字面串、字符串变量、字符串的读写、字符串中字符的访问、函数、字符串处理操作、字符串数组总结。文中链接:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/143772084锦黎pro-CSDN博客锦黎pro擅长c语言知识点总结、思维导图,等方面的知识https://blog.csdn.net/jilipro?......
  • 理解C语言之深入理解指针
    目录一、1.内存和地址1.1内存1.2究竟该如何理解编址2.指针变量和地址2.1取地址操作符(&)2.2指针变量和解引⽤操作符(*)2.2.1指针变量2.2.2如何拆解指针类型2.2.3解引⽤操作符2.3指针变量的⼤⼩3.指针变量类型的意义3.1指针的解引⽤3.2指针+-整数3.3v......
  • C语言:函数递归
    #include<stdio.h>intmain(){ printf("haha\n"); main(); return0;}先来看这段代码,这是最简易的一段递归的代码。当我们打印完haha后会main函数调用自己,这样就会使屏幕一直打印haha,但是会停止,这是为什么呢?因为当我们为main函数在栈区开出的内存被不断使用,最后导致栈溢......
  • C语言之动态内存申请
    动态内存的作用在开发中根据实际需求开辟内存内存申请分类静态内存申请(静态分配)1,在程序编译或运行过程中,按事先规定大小分配内存空间的分配方式,如inta[10];2,必须事先知道所需空间的大小3,分配在栈区或全局变量区,一般以数组形式4,按计划分配特点:在程序运行......
  • C语言编程 1.11 寻找素数对
     #include<stdio.h>#include<math.h>intsushu(longlongn)        {            longlongsqrt_n=sqrt(n);            for(longlongi=2;i<=sqrt_n;i++)                {                 ......
  • 关于我重生到21世纪学C语言这件事——操作符详解
    与诸君共进步!!!还有你,也要加油!文章目录1.操作符的分类2.⼆进制和进制转换3.原码、反码、补码4.移位操作符5.位操作符:&、|、^、~6.单⽬操作符7.逗号表达式8.下标访问[]、函数调⽤()9.结构成员访问操作符10.操作符的属性:优先级、结合性11.表达式求值1.操作......
  • 二分查找(折半查找)函数与非函数写法代码介绍及其优缺点 C语言
    什么是二分查找?二分查找也叫折半查找 在有序的数组中查找目标的方法需要借助中间元素与目标值的比较来逐步缩小范围一直到找到目标元素或者不存在为止查找的步骤↓1确定左右端点的下标值(注:数组下标从0开始)2计算中间下标位置3比较中间下标位置的数组值与目标值的大......
  • 教你如何清楚的分辨c语言各类指针类型定义
       可以这样说,学好了指针,就代表你学好了c语言。c语言中,通过合理的利用指针,可以快速高效的实现各种底层逻辑。下面陈列c语言中的各类指针定义,让大家分辨其中的具体意义。1,指针变量  我们定义一个指针变量p,指向整形变量i。#include<stdio.h>intmain(){int......
  • C语言的结构体
    结构体的基本概念和使用结构体(Struct)是一种用户自定义的数据类型,它允许将不同类型的数据项组合成一个单一的复合数据类型。结构体中的每个成员可以是不同的数据类型,包括基本数据类型、数组、指针,甚至是其他结构体。结构体的使用非常广泛,尤其在需要组织和管理复杂数据时尤为有......