牛客网刷题 | BC100 直角三角形图案

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

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

感谢阅读!

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


描述

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

输入描述:

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

输出描述:

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


解题思路 :

/*

依旧使用嵌套循环 一个控制行 一个控制列

这个就和乘法口诀表差不多了

只不过不需要输入乘法之类的东西

当用户输入一个数字之后就会进入for循环,判断是否小于等于i的值

当条件成立的时候,将进入第二条for循环,这里n<=j 的意思就是 从左到右打印 *

当条件不成立的时候就会跳出这个for循环,从第一层for循环开始,继续往下执行

其中最核心的地方就是两个圆圈圈起来的地方

如果把n<=j写成 n<=i 的话 就会一直打印,输入数字几,就会横着打印几个 *

和之前的题一样了

*/


代码 1 :

/*思路 : 依旧使用嵌套循环 一个控制行 一个控制列
          这个就和乘法口诀表差不多了
          只不过不需要输入乘法之类的东西
当用户输入一个数字之后就会进入for循环,判断是否小于等于i的值
当条件成立的时候,将进入第二条for循环,这里n<=j 的意思就是 从左到右打印 *
当条件不成立的时候就会跳出这个for循环,从第一层for循环开始,继续往下执行
其中最核心的地方就是两个圆圈圈起来的地方
如果把n<=j写成 n<=i 的话 就会一直打印,输入数字几,就会横着打印几个 *
和之前的题一样了
*/

# include <stdio.h>
int main()

{
    int i = 0;
    while (scanf("%d",&i)!=EOF)
    {
        for(int j = 1; j <= i; j++)//控制列
    {
        for(int n = 1; n<=j;n++)//控制行
        {
            printf("* ");
        }
        
        printf("\n");
    }
    }
    
    return 0;
}
//————————————————————————————————————————————————————————————

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

int main() // 主函数的开始
{
    int i = 0; // 定义一个整型变量i并初始化为0
    while (scanf("%d",&i)!=EOF) // 当输入不是文件结束符EOF时,循环读取i的值
    {
        for(int j = 1; j <= i; j++) // 外层循环,控制列数,从1开始到i结束
        {
            for(int n = 1; n<=j;n++) // 内层循环,控制每行打印的星号数量,从1开始到j结束
            {
                printf("* "); // 打印一个星号和一个空格
            }
            printf("\n"); // 每行打印完毕后,换行
        }
    }
    return 0; // 程序正常结束,返回0
}

代码 2 :


void print(int num)
{
    int i,j;
    for(i = 0; i < num; i++)
    {
        for(j = 0; j < i +1; j++)
        {
            printf("* ");
        }
        printf("\n");
    }
}

int main()
{
    int num;
    while(scanf("%d",&num) != EOF)
    {
        print(num);
    }
    return 0;
}


//——————————————————————————————————————————————————————————————————————

void print(int num) // 定义一个名为print的函数,它接受一个整型参数num
{
    int i,j; // 定义两个循环计数器i和j
    for(i = 0; i < num; i++) // 外层循环,控制行数,从0到num-1
    {
        for(j = 0; j < i +1; j++) // 内层循环,控制每行打印的星号数量,从0到i
        {
            printf("* "); // 打印一个星号和一个空格
        }
        printf("\n"); // 每行打印完毕后,换行
    }
}

int main() // 主函数的开始
{
    int num; // 定义一个整型变量num用于存储用户输入
    while(scanf("%d",&num) != EOF) // 当输入不是文件结束符EOF时,循环读取num的值
    {
        print(num); // 调用print函数,打印由星号组成的三角形
    }
    return 0; // 程序正常结束,返回0
}

这段代码的功能是:用户可以连续输入整数,每次输入后程序会调用print函数打印出一个由星号组成的三角形,三角形的高度由用户输入的整数决定。

当用户输入文件结束符EOF时,程序结束。


扩展 : 

如何解答图形问题

 1. 理解图案的几何特性

首先,你需要清楚地了解你想要打印的图案的几何特性。例如,一个简单的三角形图案可能具有以下特性:

  • 行数递增
  • 每行的星号数量递增
  • 星号之间可能有或没有空格
  • 可能需要在星号之间或图案周围打印空格以形成特定的形状

2. 设计循环结构

根据图案的特性,设计循环结构来控制打印过程。通常,这涉及到两个嵌套的循环:

  • 外层循环:控制图案的行数。例如,如果用户输入数字5,外层循环将执行5次。
  • 内层循环:控制每行打印的字符数量。例如,第一行打印1个星号,第二行打印2个星号,依此类推。

3. 使用条件语句

条件语句(如ifelse)可以用来控制打印的模式,特别是在需要根据当前行或列的特定条件来改变打印行为时。

4. 变量控制

使用变量来控制打印的模式,例如:

  • 使用变量来记录当前行应该打印的星号数量。
  • 使用变量来控制是否需要在星号之间或图案周围打印空格。

5. 字符串和数组

对于更复杂的图案,可以使用字符串数组来存储每一行的打印内容,然后再统一输出。这种方法可以更容易地管理和调整图案的格式。

6. 递归方法

对于一些可以递归定义的图案(如分形图案),递归函数可以是一种优雅且简洁的解决方案。

7. 图形库的使用

在某些编程语言中,可以使用图形库来简化图形的打印和绘制。这些库提供了更高级的抽象,可以更容易地创建复杂的图形。

8. 调试和测试

在开发过程中,逐步调试和测试代码:

  • 逐步执行:观察每一行代码的执行结果,确保循环和条件语句按预期工作。
  • 打印变量值:在关键点打印变量的值,以确保它们遵循正确的模式。
  • 调整逻辑:根据测试结果调整循环条件、条件语句或打印逻辑。

9. 优化和改进

一旦基本的图案打印正确,考虑优化代码:

  • 减少不必要的计算:例如,预先计算循环次数或星号数量,而不是在循环内部重复计算。
  • 改进可读性:使用清晰的变量名和函数名,添加注释,使代码易于理解和维护。

10. 用户交互

如果图案的打印依赖于用户输入,确保用户交互部分的代码健壮且易于使用:

  • 输入验证:确保用户输入的数据是有效的,并且符合预期的格式。
  • 错误处理:优雅地处理错误输入或异常情况。

  

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

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

相关文章

注意力机制篇 | YOLOv8改进之引入用于目标检测的混合局部通道注意力MLCA

前言:Hello大家好,我是小哥谈。注意力机制是可以帮助神经网络突出重要元素,抑制无关元素。然而,绝大多数通道注意力机制只包含通道特征信息,忽略了空间特征信息,导致模型表示效果或目标检测性能较差,且空间注意模块往往较为复杂。为了在性能和复杂性之间取得平衡,本文提…

AI遇上遥感,未来会怎样?

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

C++基础与深度解析 | 泛型算法 | bind | Lambda表达式

文章目录 一、泛型算法1.泛型算法的分类2.迭代器分类 二、bind与lambda表达式1.bind2.lambda表达式 三、泛型算法的改进--ranges(c20) 一、泛型算法 C中的泛型算法是标准模板库&#xff08;STL&#xff09;的一部分&#xff08;这里重点讨论 C 标准库中定义的算法&#xff0c;而…

5.25机器人基础-空间描述和变换1

参考资料&#xff1a;《机器人学导论》John.J.Craig 彻底搞懂“旋转矩阵/欧拉角/四元数”&#xff0c;让你体会三维旋转之美_欧拉角判断动作-CSDN博客 机器人操作的定义是指通过某种机构使零件和工具在空间运动。因此&#xff0c;对于坐标系的定义显得尤为重要&#xff0c;相…

模型评价指标笔记:混淆矩阵+F1+PR曲线+mAP

评价指标 二分类评价指标 混淆矩阵 TP: 正确预测为了正样本&#xff0c;原来也是正样本 FN: 错误的预测为负样本&#xff0c;原来是正样本 (漏报&#xff0c;没有找到正确匹配的数目) FP: 错误的预测为正样本&#xff0c;原来是负样本 (误报&#xff0c;没有的匹配不正确) TN…

Rust腐蚀怎么用服务器一键开服联机教程

1、进入控制面板 首次登陆需要点击下方重置密码&#xff0c;如何再点击登录面板&#xff0c;点击后会跳转到登录页面&#xff0c;输入用户名和密码登录即可 2、设置游戏端口 由于腐蚀的设置需要三个端口&#xff0c;它们用于游戏端口&#xff08;必须为首选端口&#xff09;&a…

springboot3微服务下结合springsecurity的认证授权实现

1. 简介 在微服务架构中&#xff0c;系统被拆分成许多小型、独立的服务&#xff0c;每个服务负责一个功能模块。这种架构风格带来了一系列的优势&#xff0c;如服务的独立性、弹性、可伸缩性等。然而&#xff0c;它也带来了一些挑战&#xff0c;特别是在安全性方面。这时候就体…

HTML跳动的爱心

目录 写在前面 HTML简介 跳动的爱心 代码分析 运行结果 推荐文章 写在后面 写在前面 哎呀&#xff0c;这是谁的小心心&#xff1f;跳得好快吖&#xff01; HTML简介 老生常谈啦&#xff0c;咱们还是从HTML开始吧&#xff01; HTML是超文本标记语言&#xff08;Hyper…

数据结构--二叉搜索树

目录 二叉搜索树的概念 二叉树的实现 结点类 函数接口总览 实现二叉树 二叉搜索树的应用 K模型 KV模型 二叉搜索树的性能分析 二叉搜索树的概念 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;是一种特殊的二叉树&#xff0c;其具有以下几…

Installing Tinyproxy on CentOS 7 测试可用

Installing Tinyproxy on CentOS 7 For RHEL/CentOS 7 systems, Tinyproxy is part of EPEL (Extra Packages for Enterprise Linux). Install EPEL on CentOS 7 yum install epel-release -y yum update -y Install Tinyproxy on CentOS 7 yum install tinyproxy -y 编辑…

重开之数据结构(二刷)

引言: 由于前段时间学习效率不高,导致后面复习前面数据结构没有一个大纲,因此打算重新来学习以下数据结构,期望再次把数据结构学透,并有深刻的印象.并且记录每一次的学习记录 以便于后续复习 二分查找 需求:在有序数组arr内,查找target值 如果找到返回索引位置如果找不到返回…

使用python对指定文件夹下的pdf文件进行合并

使用python对指定文件夹下的pdf文件进行合并 介绍效果代码 介绍 对指定文件夹下的所有pdf文件进行合并成一个pdf文件。 效果 要合并的pdf文件&#xff0c;共计16个1页的pdf文件。 合并成功的pdf文件&#xff1a;一个16页的pdf文件。 代码 import os from PyPDF2 import …

3款简洁个人网站引导页(附带源码)

3款个人网站引导页 效果图及部分源码1.个人页2.引导页3.导航页 领取源码下期更新预报 效果图及部分源码 1.个人页 部分源码 * {margin: 0;padding: 0; }body {background-image: linear-gradient(to left, rgba(255, 0, 149, 0.2), rgba(0, 247, 255, 0.2)), url(../img/bg.j…

贪心算法4(c++)

过河的最短时间 题目描述 输入 在漆黑的夜里&#xff0c;N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话&#xff0c;大家是无论如何也不敢过桥去的。不幸的是&#xff0c;N个人一共只带了一只手电筒&#xff0c;而桥窄得只够让两个人同时过&#xff0c;如果…

Spark搭建 Standalone模式详细步骤

Standalone模式概述&#xff1a; Standalone模式是Spark自带的一种集群模式&#xff08;本地集群&#xff0c;不依赖与外部集群&#xff0c;比如Yarn&#xff09;&#xff0c;可以真实地在多个机器之间搭建Spark集群的环境。 Standalone是完整的Spark运行环境,其中: Master角…

QGraphicsView实现简易地图16『爆炸效果』

前文链接&#xff1a;QGraphicsView实现简易地图15『测量面积』 一种简单的爆炸波扩散效果 动态演示效果&#xff1a; 静态展示图片&#xff1a; 核心代码&#xff1a; #pragma once #include "../AbstractGeoItem.h" #include "DataStruct/GeoData.h"…

Minecraft服务器如何搭建

Minecraft这是原版英文名称&#xff0c;在中国大陆被译为《我的世界》&#xff0c;这款游戏很火爆。台湾的很多小伙伴也在玩&#xff0c;其译名为《我的创世神》。现在这款游戏在国内已经被网易代理了。因为这款游戏开源&#xff0c;所以任何人都可以搭建服务器端&#xff0c;如…

Aloha机械臂的mujoco仿真问题记录

今天在测试ACT代码时&#xff0c;遇到了仿真中的机械臂无法摆放正确的姿势来抓去红色方块。 后来经过测试&#xff0c;发现应该是python包的版本问题有误&#xff0c;下面记录下正确的包版本&#xff1a; 官方给出的包&#xff1a; conda create -n aloha python3.8.10 conda…

LearnOpenGL(二十)之立方体贴图

一、创建立方体贴图 首先&#xff0c;生成一个纹理&#xff0c;并将其绑定到纹理目标GL_TEXTURE_CUBE_MAP&#xff1a; unsigned int textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 因为立方体贴图包含有6个纹理&#xff0…

【Spring Boot】分层开发 Web 应用程序(含实例)

分层开发 Web 应用程序 1.应用程序分层开发模式&#xff1a;MVC1.1 了解 MVC 模式1.2 MVC 和三层架构的关系 2.视图技术 Thymeleaf3.使用控制器3.1 常用注解3.1.1 Controller3.1.2 RestController3.1.3 RequestMapping3.1.4 PathVariable 3.2 将 URL 映射到方法3.3 在方法中使用…