牛客网刷题 | BC104 翻转金字塔图案

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。

输入描述:

多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

示例1:


思路 :

首先要分两个步骤 控制每一行的打印

而每一行又由 空格+* 组成

先打印每一行的的空格

再打印每一行的 星号 把两个分开来

//(j = 0; j<i;j++)

//i为0的时候j从0开始 这里一次都不打印 i为1的时候j从0开始 这里打印一次

//i为2的时候j从0开始 这里打印两次 i为3的时候j从0开始 这里打印3次

//......

(j = 0; j<n-i; j++)

//第一行 i是0 5减0 等于0 第二行 i等于1 5减1等于4 打印四个*加空格

//第三行 i是2 5减2 等于三 打印三个*加空格

//......


  1. 读取输入:首先,需要读取用户输入的整数,这个整数决定了翻转金字塔最底层的星号数量。

  2. 循环控制:使用一个for循环来控制打印的行数,循环的次数等于输入的整数。

  3. 计算空格:在每一行中,需要首先打印一定数量的空格,以使星号右对齐并形成金字塔形状。空格的数量可以通过n - i - 1来计算,其中n是输入的整数,i是当前的行数(从0开始)。

  4. 打印星号:在打印完空格之后,使用另一个for循环来打印星号。内层循环的次数等于2*i + 1,这是因为除了第一行和最后一行外,每行的星号数量是奇数,并且随着行数的增加而增加。

  5. 换行:在每行的星号打印完毕后,使用printf("\n");打印一个换行符,以便开始新的一行。

  6. 循环结束:当for循环完成所有迭代后,整个翻转金字塔图案打印完毕。


代码 1 :

/*思路 : 首先要分两个步骤 控制每一行的打印
而每一行又由 空格+* 组成
先打印每一行的的空格
再打印每一行的 星号 把两个分开来 
//(j = 0; j<i;j++)
//i为0的时候j从0开始 这里一次都不打印 i为1的时候j从0开始 这里打印一次
//i为2的时候j从0开始 这里打印两次 i为3的时候j从0开始 这里打印3次
//......

(j = 0; j<n-i; j++)
//第一行 i是0 5减0 等于0 第二行 i等于1 5减1等于4 打印四个*加空格
//第三行 i是2 5减2 等于三 打印三个*加空格
//...

*/

# include <stdio.h>
int main ()

{
    int n = 0;
    
    while(scanf("%d",&n)!=EOF)
    {
        int i = 0;
        //每一行的打印 每打印一行退出依次循环 
        //先打印一行 打印空格
        for(i = 0; i<n; i++)
        {
            int j = 0;
    //先打印每一行的空格 因为每一行都是由空格和星号组成的
    //i为0的时候j从0开始 这里一次都不打印 i为1的时候j从0开始 这里打印一次
    //i为2的时候j从0开始 这里打印两次 i为3的时候j从0开始 这里打印3次
            //......
            for(j = 0; j<i;j++)
            {
                printf(" ");
            }
    //再打印每一行的星星 每一行都是有空格和星星组成
    //再打印*+空格
    //第一行 i是0 5减0 等于0 第二行 i等于1 5减1等于4 打印四个*加空格
    //第三行 i是2 5减2 等于三 打印三个*加空格
    //...
            for(j = 0; j<n-i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}
------------------------------------------------------
#include <stdio.h> // 包含标准输入输出库

int main() // 主函数的开始
{
    int n = 0; // 定义一个整型变量n,用于存储用户输入的翻转金字塔边长

    while(scanf("%d",&n)!=EOF) // 使用while循环来处理多组输入直到文件结束符EOF
    {
        int i = 0; // 定义一个整型变量i,用于控制外层循环,表示当前行数

        // 外层循环,控制每一行的打印
        for(i = 0; i < n; i++)
        {
            int j = 0; // 定义一个整型变量j,用于控制内层循环

            // 内层循环1,先打印每一行前面的空格
            // 空格的数量随着行数的增加而减少
            for(j = 0; j < i; j++) // 循环i次,打印i个空格
            {
                printf(" "); // 打印一个空格
            }

            // 内层循环2,再打印每一行的星号
            // 星号的数量等于n-i,随着行数的增加而减少
            for(j = 0; j < n-i; j++) // 循环n-i次,打印n-i个星号和空格
            {
                printf("* "); // 打印一个星号和一个空格
            }
            printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印
        }
    }
    return 0; // 主函数结束,返回0表示程序正常结束
}

程序使用while循环来处理多组输入,直到遇到EOF。在每次循环中,首先读取用户输入的整数n,这个整数表示翻转金字塔最底层的星号数量。

外层for循环控制行数,从0到n-1。

在每次迭代中,首先有一个内层循环用于打印空格,空格的数量等于当前行数i。接着,另一个内层循环用于打印星号和空格,星号的数量等于n-i

每完成一行的打印后,使用printf("\n")来换行,准备打印下一行。当所有行都打印完毕后,while循环结束,程序返回0,表示正常退出。

代码 2 :

#include <stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 读取输入直到EOF
        if (n < 2 || n > 20) break; // 输入验证,确保n在2到20之间

        // 外层循环控制行数
        for (int i = 0; i < n; i++) {
            // 打印空格
            for (int j = 0; j < n - i - 1; j++) {
                printf(" ");
            }
            
            // 打印星号
            for (int k = 0; k < 2 * i + 1; k++) {
                printf("*");
            }
            
            // 换行
            printf("\n");
        }
    }
    
    return 0; // 程序结束
}

 这段代码首先包含了stdio.h头文件,定义了主函数main,并在其中定义了一个整数变量n来存储用户输入的翻转金字塔最底层的星号数量。

然后,程序使用while循环来读取输入直到EOF,并验证输入是否在2到20之间。

外层for循环控制行数,内层两个for循环分别用来打印空格和星号。

每完成一行的打印后,程序使用printf("\n")来换行。当输入结束时,程序返回0,表示正常退出。

代码  3 :

#include <stdio.h> // 包含标准输入输出库

int main() // 主函数的开始
{
    int a = 0; // 定义一个整型变量a,用于存储用户输入的翻转金字塔边长

    // 使用while循环来处理多组输入直到文件结束符EOF
    while ((scanf("%d", &a)) != EOF)
    {
        int j = 0; // 定义一个整型变量j,用于控制每行开头的空格数,初始化为0
        int k = a; // 定义一个整型变量k,用于控制每行的星号数,初始化为a

        // for循环控制打印的行数,共打印a行
        for (int i = 0; i < a; i++)
        {
            // 内层第一个for循环,打印每行开头的空格
            // 空格数从0开始,每行递增1
            for (int b = 0; b < j; b++)
            {
                printf(" "); // 打印一个空格
            }

            // 内层第二个for循环,打印每行的星号
            // 星号数从a开始,每行递减1
            for (int c = 0; c < k; c++)
            {
                printf("* "); // 打印一个星号和一个空格
            }

            printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印
            j++; // 每行之后空格数增加1
            k--; // 每行之后星号数减少1
        }
    }
    return 0; // 主函数结束,返回0表示程序正常结束
}

程序使用while循环来处理多组输入,直到遇到EOF。

在每次循环中,首先读取用户输入的整数a,这个整数表示翻转金字塔最底层的星号数量。

外层for循环控制打印的行数,从0到a-1。

在每次迭代中,首先有一个内层循环用于打印空格,空格的数量由变量j控制,每行递增。接着,另一个内层循环用于打印星号和空格,星号的数量由变量k控制,每行递减。

每完成一行的打印后,使用printf("\n")来换行,准备打印下一行。

每行打印后,jk分别更新,以准备下一行的打印。当所有行都打印完毕后,while循环结束,程序返回0,表示正常退出。

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/669801.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop+Spark大数据技术 第七次作业

第七次作业 1. 简述Spark SQL使用的数据抽象DataFrame与Dataset的区别。 DataFrame: 基于 Row 对象的二维表格结构&#xff0c;类似于关系型数据库中的表。 行和列都有明确的 Schema&#xff08;模式&#xff09;&#xff0c;可以进行类型推断。 提供了丰富的操作接口&#xff…

打开C语言常用的内存函数大门(三) —— memset()函数(内含讲解用法和模拟实现)

文章目录 1. 前言2. memset函数2.1 memset函数原型2.2 memset函数参数的介绍2.3 memset函数的使用演示 3. memset函数的模拟实现4. 总结 1. 前言 哈喽&#xff0c;我们又见面了。通过前面两个内存函数(memcpy、memmove函数)讲解的锤炼后&#xff0c;对如何解析一个自己从来没有…

9. C++通过epoll+fork的方式实现高性能网络服务器

epollfork 实现高性能网络服务器 一般在服务器上&#xff0c;CPU是多核的&#xff0c;上述epoll实现方式只使用了其中的一个核&#xff0c;造成了资源的大量浪费。因此我们可以将epoll和fork结合来实现更高性能的网络服务器。 创建子进程函数–fork( ) 要了解线程我们先来了解…

Linux input输入子系统

Linux input 更多内容可以查看我的github Linux输入子系统框架 Linux输入子系统由驱动层、核心层、事件处理层三部分组成。 驱动层&#xff1a;输入设备的具体驱动程序&#xff0c;负责与具体的硬件设备进行交互&#xff0c;并将底层的硬件输入转化为统一的事件形式&#xff…

自然语言处理(NLP)—— 信息提取与文档分类

1. 初识信息提取 1.1 信息提取的基本知识 1.1.1 信息提取的概念 信息提取&#xff08;IE, Information Extraction&#xff09;是自然语言处理&#xff08;NLP&#xff09;领域的一个重要分支&#xff0c;它专注于从文档或语料库中提取结构化信息。这与信息检索&#xff08;I…

江协科技STM32学习-1 购买24Mhz采样逻辑分析仪

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技STM32”视频的学习笔记&#xff0c;在这里会记录下江协科技STM32开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技STM32教学视频和链接中的内容。 引用&#xff1a; STM32入门教程-2023版 细致讲…

windows11家庭版、专业版、工作站版区别

windows11家庭版、专业版、工作站版区别 1、windows11家庭版和专业版的区别2、windows11家庭版和工作站版的区别 1、windows11家庭版和专业版的区别 windows11专业版需要$808 windows11专业版和家庭版功能对比 2、windows11家庭版和工作站版的区别 windows11工作站版需要$168…

Python基础教程——数据类型和变量

数据类型和变量 Python使用缩进来组织代码块,一般使用4个空格的缩进.使用#来注释一行,其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块.Python对大小写敏感. 1.1 整数 Python可以处理任意大小的整数,包括负整数,写法与数学上写法一致,例如&#xff1a;-10…

揭秘小程序商城的团购奇迹:独特模式引领盈利新纪元

在数字经济的新纪元里&#xff0c;你是否对那些不张扬却充满潜力的商业模式心生好奇&#xff1f;今天&#xff0c;我要为你揭示一种别出心裁的商业模式&#xff0c;它以其独特的魅力&#xff0c;不仅迅速吸引了大量用户的目光&#xff0c;更在短短一个月内创造了超过600万的惊人…

javascript DOM 设置样式

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、直接…

EXSI虚拟机新增磁盘并将空间扩充到已有分区

这里写自定义目录标题 1、在EXSI虚拟机中新增一块磁盘配置大小2、确认新磁盘3、格式化新分区4、添加新分区到LVM5、将新增分区添加到已有分区里 1、在EXSI虚拟机中新增一块磁盘配置大小 注意事项&#xff1a; (1)需确保虚拟机已关闭活处于维护模式&#xff0c;避免数据丢失 (2…

【通信专题】I2C上拉电阻计算方法

I2C 通信总线是电子设计中常见的总线之一,由于 I2C 的硬件芯片内部为开漏输出,所以要求在外部增加一个上拉电阻,总线上拉电阻的选取受多个因素的影响,因此如何计算 I2C 总线的上拉电阻阻值成为硬件工程师在使用 I2C总统时需要关注的话题。 从本质上讲: I2C 总线电容和上升…

善听提醒遵循易经原则。世界大同只此一路。

如果说前路是一个大深坑&#xff0c;那必然是你之前做的事情做的不太好&#xff0c;当坏的时候&#xff0c;坏的结果来的时候&#xff0c;是因为你之前的行为&#xff0c;你也就不会再纠结了&#xff0c;会如何走出这个困境&#xff0c;是好的来了&#xff0c;不骄不躁&#xf…

阿里云 通过EIP实现VPC下的SNAT以及DNAT

192.168.0.85 有公网地址192.1680.95无公网地址 在192.168.0.85&#xff08;有公网地址服务器上操作&#xff09; #开启端口转发 echo "net.ipv4.ip_forward 1" >> /etc/sysctl.conf sysctl -p#仅允许192.168.0.95 iptables -t nat -I POSTROUTING -s 192.16…

中医的悠久历史文化

中医&#xff0c;作为中华民族的传统医学&#xff0c;拥有着悠久的历史和深厚的文化底蕴。自古以来&#xff0c;中医便以其独特的理论体系和治疗方法&#xff0c;为中华民族的繁衍昌盛做出了巨大贡献。如今&#xff0c;随着现代医学的不断发展&#xff0c;中医依然以其独特的魅…

使用onnxruntime加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集&#xff0c;使用 LabelMe 工具进行标注&#xff0c;然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件&#xff0c;并自动生成YOLOv8支持的目录结构&#xff0c;包括melon.yaml文件&#xff0c;其内容…

Unity实现简单的持久化存储

在Unity中&#xff0c;运行过程中的内容是不会保存的&#xff0c;但是如果我们有些游戏数据需要持久化存储&#xff0c;应该怎么办呢&#xff0c;所以Unity为我们提供了一个简单的数据存储的API。 附上代码片段 //写入数据PlayerPrefs.SetInt("IntType", 1);PlayerPr…

CMake的作用域:public/private/interface

在 CMake 中&#xff0c;public、private和 interface是用来指定目标属性的作用域的关键字&#xff0c;这三个有什么区别呢&#xff1f;这些关键字用于控制属性的可见性和传递性&#xff0c;影响了目标之间的依赖关系和属性传递。 public 如果在一个目标上使用 public关键字时…

子集树与排列树的构造

排列树的构造&#xff1a; 无重复画法&#xff1a;一条线前面出现的不再出现。 有重复画法&#xff1a;一条线前面出现的不再出现&#xff0c;如果仅仅只是相似可以出现&#xff1b;兄弟不能相似。 目标函数是&#xff1a;cnt 总元素个数分支策略是全遍历&#xff0c;不过存…

AI播客下载:a16z (主题为AI、web3、生物技术等风险投资)

a16z播客是一个综合性的科技和创新领域的媒体平台&#xff0c;通过多种节目形式和丰富的内容&#xff0c;为广大听众提供了一个了解最新科技趋势和创新思维的窗口。a16z播客是由安德里森霍罗威茨&#xff08;Andreessen Horowitz&#xff0c;简称a16z&#xff09;推出的一个科技…