牛客网刷题 | BC102 带空格直角三角形图案

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

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

感谢阅读!

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


描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。

输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。


思路 :

仔细观察题目答案的输出可以发现

每一次打印都是两个空格加上一个空格一个星号

先打印一行的内容 j=0;j<n-1-i;j++ 这是控制打印两个空格的代码

i是0的时候等于没减 i是1的时候减去1 i是2的时候减去2 i是3的时候减去3

(减去空格的个数)

j=0;j<=i;j++  这是控制星号的代码

i是从0进入来的 当i等于1的时候 打印一次 * i等于2的时候打印两次 *

以此类推。


  1. 初始化变量:首先,你需要定义一个变量来存储用户输入的整数,这个整数表示三角形的行数。

  2. 读取用户输入:使用scanf函数读取用户输入的整数,并存储在之前定义的变量中。

  3. 输入验证:验证用户输入的整数是否在题目要求的范围内(2到20)。如果不在这个范围内,可以打印一条错误消息并退出程序。

  4. 外层循环:设置一个for循环,循环的迭代次数等于用户输入的整数。这个循环将控制三角形的行数。

  5. 打印空格:在每行的开始,你需要打印一定数量的空格,以便星号能够正确对齐形成三角形。空格的数量随着行数的增加而减少。可以使用另一个for循环来打印空格,循环的次数为n - i,其中n是三角形的行数,i是当前的行数。

  6. 内层循环:在外层循环内部,设置另一个for循环来打印星号。这个循环的迭代次数等于当前行数i。在每次迭代中,打印一个星号和一个空格。

  7. 换行:在内层循环结束后,使用printf("\n");打印一个换行符,以便开始新的一行。

  8. 循环结束:外层循环继续执行,直到打印完所有行。

  9. 程序结束:当外层循环完成所有迭代后,三角形图案打印完毕,程序可以正常结束。


代码 1 :

/*思路 : 仔细观察题目答案的输出可以发现 
每一次打印都是两个空格加上一个空格一个星号
先打印一行的内容 j=0;j<n-1-i;j++ 这是控制打印两个空格的代码
i是0的时候等于没减 i是1的时候减去1 i是2的时候减去2 i是3的时候减去3
(减去空格的个数)
j=0;j<=i;j++  这是控制星号的代码
i是从0进入来的 当i等于1的时候 打印一次 * i等于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;
        for(j = 0; j<n-1-i;j++)
            {   
                printf("  ");
            }
        for(j = 0; j<=i; j++)
            {
                printf("* ");
            }
        printf("\n");
        }
        
    }
    return 0;
}

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

int main() // 主函数的开始
{
    int n = 0; // 定义一个整型变量n,用于存储用户输入的行数
    // 使用while循环来处理多组输入直到文件结束符EOF
    while(scanf("%d",&n)!=EOF)
    {
        // 控制行数的循环开始
        int i = 0; // 定义一个整型变量i,用于控制外层循环,从0开始,直到n-1
        for(i = 0; i<n;i++) // 外层循环,i从0到n-1
        {
            // 控制每行空格数量的循环开始
            int j = 0; // 定义一个整型变量j,用于控制内层循环
            // 打印每行前面的空格,空格数量为n-1-i,随着i的增加,空格数量减少
            for(j = 0; j<n-1-i;j++) // 内层循环1,打印空格
            {   
                printf("  "); // 打印两个空格
            }
            // 控制每行星号数量的循环开始
            // 打印星号,星号数量为i+1,随着i的增加,星号数量增加
            for(j = 0; j<=i; j++) // 内层循环2,打印星号和空格
            {
                printf("* "); // 打印一个星号和一个空格
            }
            printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印
        }
    }
    return 0; // 主函数结束,返回0表示程序正常结束
}

 这段代码首先包含了stdio.h头文件,这是进行输入输出操作所必需的。main函数是程序的入口点。程序使用while循环来处理多组输入,直到遇到EOF。

在每次循环中,首先定义并初始化了变量i,它将控制外层for循环的迭代次数,即三角形的行数。

然后,程序有两个嵌套的for循环:第一个内层循环用于打印每行开始的空格,第二个内层循环用于打印星号和每个星号后的空格。

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

当输入结束时,while循环结束,程序返回0,表示正常退出。

代码 2 :

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n;
    while (scanf("%d",&n)!=EOF){
        for (int i=n;i>0;i--){
            for (int j=1;j<=n;j++)
                j>=i?printf("* "):printf("  ");
            printf("\n");
        }
    }
    return 0;
}

#include<stdio.h> // 包含标准输入输出库
#include<stdlib.h> // 包含标准库,这里用于EOF的宏定义

int main() // 主函数的开始
{
    int n; // 定义一个整型变量n,用于存储用户输入的行数

    // 使用while循环来处理多组输入直到文件结束符EOF
    while (scanf("%d",&n)!=EOF)
    {
        // 外层循环,从n开始递减到1
        for (int i = n; i > 0; i--)
        {
            // 内层循环,从1到n
            for (int j = 1; j <= n; j++)
            {
                // 使用三元运算符进行条件判断
                // 如果j大于等于i,则打印"* "
                // 否则打印"  "
                j >= i ? printf("* ") : printf("  ");
            }
            printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印
        }
    }
    return 0; // 主函数结束,返回0表示程序正常结束
}

代码开始部分包含了两个头文件:stdio.h用于输入输出操作,stdlib.h用于EOF的宏定义。main函数是程序的入口点。

程序使用while循环来处理多组输入,直到遇到EOF。在每次循环中,首先读取用户输入的整数n,这个整数表示三角形的行数。

外层循环使用一个倒序的for循环,从n开始递减到1。内层循环是一个从1到n的顺序for循环。在内层循环中,使用三元运算符(条件运算符)? :来进行条件判断:如果当前的循环变量j大于等于外层循环变量i,则打印一个星号和一个空格"* ",否则打印两个空格" "

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

  

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

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

相关文章

#1 深度优先搜索

深搜思想 DFS其实是针对图论的一种搜索算法&#xff0c;由一个节点出发&#xff0c;不撞南墙不回头式的遍历所有的节点。 如先遍历1&#xff0c;沿&#xff08;1,2&#xff09;遍历2&#xff0c;再沿&#xff08;2,4&#xff09;遍历4&#xff0c;撞南墙&#xff08;边界条件…

bcaktrader策略编写1

。 1 Backtrader策略类编写说明 在上一篇&#xff0c;我大体记录了整个backtrader整体最简流程&#xff0c;策略类中没有实现任何买卖逻辑&#xff0c;只是单纯的打印了每日的收盘价。今天&#xff0c;我将详细介绍策略编写类的构建过程&#xff0c;并构建一个简单的均线策略…

林业调查具体是做些什么?

林业调查是对森林资源进行系统的信息收集和处理的过程。 林业调查涵盖了对林木、林地以及林区内生长的动植物及其环境条件的全面评估&#xff0c;旨在及时掌握森林资源的数量、质量和生长消亡的动态规律。这种调查不仅关注森林本身&#xff0c;还包括与之相关的自然环境和经济…

分销与传销的界限

分销与传销&#xff0c;作为商业活动中的两种销售模式&#xff0c;确实在核心特征和法律地位上存在显著的区别。以下是关于两者的详细分析&#xff0c;以及为什么选择微信分销小程序时&#xff0c;通常建议找外包公司的理由。 一、分销与传销的区别 商业模式&#xff1a; 分销…

【String 类 常用方法详解和归类】全网最细总结

目录 一、 String 介绍二、String 类中查找字符串的方法2.1 常用查找在这里插入图片描述2.2、其他查找 三、转换功能3.1 常用转换方法3.2、其他转换方法 四、判断、比较相关方法4.1、常用判断、比较方法4.2、其他判断、比较方法 五、拆分,截取,替换方法5.1、常用拆分,截取,替换…

linux---生产者和消费者模型

生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯&#xff0c;而通过阻塞队列来进行通讯&#xff0c;所以生产者生产完数据之后不用等待消费者处理&#xff0c;直接扔给阻塞队列&#xff0c;消费者不找生产者要数据&#…

[数据集][目标检测]吉他检测数据集VOC+YOLO格式66张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;66 标注数量(xml文件个数)&#xff1a;66 标注数量(txt文件个数)&#xff1a;66 标注类别数…

面试二十七、 CAS和Atomic

CAS锁机制&#xff08;无锁、自旋锁、乐观锁、轻量级锁&#xff09;-CSDN博客 1. ABA问题 在C中&#xff0c;可以使用std::atomic和版本号来解决ABA问题。C标准库没有直接提供类似Java的AtomicStampedReference&#xff0c;但可以通过将版本号和指针组合在一起实现类似的效果。…

win系统游戏提示找不到d3dx9_37.dll丢失的解决方法-最简单的解决方法

d3dx9_37.dll 是一个动态链接库文件&#xff0c;属于 Microsoft DirectX 9 的一部分。DirectX 9 是一个用于多媒体应用&#xff0c;特别是游戏和视频的 API&#xff0c;它提供了一套丰富的功能&#xff0c;用于处理图形、声音和输入设备等。d3dx9_37.dll 文件包含了 Direct3D 9…

巨细巨细的白痴级vulntarget-a靶场wp再不会你打死我

ad一&#xff0c;靶场搭建 下载靶场&#xff1a;GitHub - crow821/vulntarget: vulntarget靶场系列 官方拓补图 ps&#xff1a;此处 攻击机ip192.168.87.134&#xff0c;win7ip1为192.168.87.144 下载完毕后直接装入虚拟机不要进去&#xff0c;不要进去&#xff0c;不要进去…

使用LLaMA-Factory微调大模型

使用LLaMA-Factory微调大模型 github 地址 https://github.com/hiyouga/LLaMA-Factory 搭建环境 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory在 LLaMA-Factory 路径下 创建虚拟环境 conda create -p ./venv python3.10激活环境 c…

RabbiMQ怎么保证可靠性

RabbiMQ怎么保证可靠性 前言生产端问题解决方案代码验证 RabbitMQ问题消费端问题解决方案代码验证 总结 前言 RabbitMQ相信大家都非常熟悉了&#xff0c;今天咱们来聊聊怎么保证RabbitMQ的可靠性。 那什么时候会出现问题呢&#xff1f; 第一种是生产端出现的问题。我们向队列…

CTFHUB-信息泄露-目录遍历和PHPINFO

目录 目录遍历 PHPINFO 目录遍历 很简单&#xff0c;挨着把每个目录都点开看一下 发现2目录下有个 flag.txt 文件&#xff0c;点开发现了本关的flag PHPINFO 这关也很简单&#xff0c;进来之后是一个phpinfo页面&#xff0c;按 CTRL F键打开查询&#xff0c;输入flag&#…

成功解决“ypeError: An Integer Is Required”错误的全面指南

成功解决“ypeError: An Integer Is Required”错误的全面指南 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x…

【科研基础】证明积累

1-Bayesian Estimation (P317) Suppose that x = θ + ν w h e r e ν i s a n N ( 0 , σ ) random variable and θ is the value of a n N ( θ 0 , σ 0 ) random variable θ (Fig. 8-7). Find the bayesian estimate θ o f θ . \begin{align…

神经网络与深度学习——第6章 循环神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第6章 循环神经网络 给网络增加记忆能力 延时神经网络 有外部输入的非线性自回归模型 循环神经网络 简单循环网络 循环神经网络的计算能力 循环神经网络的通用近似定理 图灵完备 应用到机器学习 序列到类…

用贪心算法计算十进制数转二进制数(小数部分)

在上一篇博文用贪心算法计算十进制数转二进制数&#xff08;整数部分&#xff09;-CSDN博客中&#xff0c;小编介绍了用贪心算法进行十进制整数转化为二进制数的操作步骤&#xff0c;那么有朋友问我&#xff0c;那十进制小数转二进制&#xff0c;可以用贪心算法来计算吗&#x…

支付系统对接商户

target&#xff1a;离开柬埔寨倒计时-214day 还是美女作为开篇 前言 昨天没有写文章&#xff0c;因为部门团建&#xff0c;我得去给他们画饼&#xff0c;说起来也真的是唏嘘&#xff0c;我一个已经都在计划着离开柬埔寨的人&#xff0c;昨天聚餐还一个个给他们描述未来的前景&a…

5G无线标准演进综述及新技术引入

摘 要 随着经济和社会的发展&#xff0c;5G业务越来越丰富多彩&#xff0c;1080P高清视频、裸眼3D、网联汽车、云手机等新业务、新终端对网络的要求也越来越高&#xff1b;另一方面&#xff0c;5G标准持续演进&#xff0c;在MIMO、载波聚合、移动性管理、uRLLC、切片、定位等方…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(19)-Yolov10探索

YOLOv10 开源有几天了,看性能是比较强的,但是试过的一些人说没有YOLOv8好,实际效果以测试结果为准,这里创新点算是去掉了之前YOLO的NMS步骤,论文题目也说了NMS-Free,以此来提高小目标检测率,减少计算冗余,也没有NMS的计算时间提高实时性。 这个倒是让我看到了以后可以…