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

news2024/12/23 10:14:22

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

        专栏如下:                 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. 用户交互

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

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

  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爽!AI手绘变插画,接单赚爆了!

我最近发现一款名叫Hyper-SD15-Scribble的AI项目&#xff0c;可以实现一键手绘变插画的功能&#xff0c;而且它搭载了字节出品的超快速生成图片的AI大模型Hyper-SD15&#xff0c;可以实现几乎实时生成图片&#xff0c;有了它&#xff0c;拿去接一些手绘商单分分钟出图&#xff…

java生产制造执行系统MES源码:系统环境:Java EE 8、Servlet 3.0、Apache Maven 3 2;

MES系统技术选型 系统环境&#xff1a;Java EE 8、Servlet 3.0、Apache Maven 3 2&#xff1b; 主框架&#xff1a;Spring Boot 2.2.x、Spring Framework 5.2.x、Spring Security 5.2.x 3 持久层&#xff1a;Apache MyBatis 3.5.x、Hibernate Validation 6.0.x、Alibaba Dru…

基于STM32实现智能气体检测报警系统

⬇帮大家整理了单片机的资料 包括stm32的项目合集【源码开发文档】 点击下方蓝字即可领取&#xff0c;感谢支持&#xff01;⬇ 点击领取更多嵌入式详细资料 问题讨论&#xff0c;stm32的资料领取可以私信&#xff01; 目录 引言环境准备智能气体检测报警系统基础代码示例&…

ZDH-智能营销-插件服务

目录 主题 项目源码 预览地址 安装包下载地址 插件服务 插件服务使用场景 插件服务日志 感谢支持 主题 本篇文章主要介绍ZDH-智能营销平台下的插件服务,包含插件的应用场景 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 zdh_magic_mirror: …

AIGC002-LoRA让大模型微调更加轻盈方便!

AIGC002-LoRA让大模型微调更加轻盈方便&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 这篇论文名为 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS&#xff0c;作者是 Edward Hu 等人。它提出了一种名为 低秩自适应 (Low-Rank Adaptation, LoRA) 的新方…

AI 谈“浔川AI翻译机”

在天工AI&#xff0c;天工AI在全网搜索“浔川AI翻译机”。 1 创作助手谈“浔川AI翻译机”&#xff1a; “浔川AI翻译机”是一个利用人工智能技术进行语言翻译的设备或应用程序。它可以将一种语言的文字或口语翻译成另一种语言&#xff0c;以实现不同语言之间的沟通和理解。浔…

网络布线与数制转换

信号与传输介质 信号概述 什么是信号 信息 人对现实世界事物存在方式或运动状态的某种认识 数据 用于描述事物的某些属性的具体量值 信号 信息传递的媒介 例如&#xff0c;描述某一件物体&#xff0c;它的长、宽、高、质地、颜色、气味等就是用以形容该物体的数据。通…

图书管理系统——Java版

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 顺序表的学习&#xff0c;点我 目录 图书管理系统菜单 基本框架&#xff1a; 书&#xff1a; 书架&#xff1a; 用户&#xff…

web及网络基础图文详解

目录 1.1TCP/IP 协议族 1.2TCP/IP 的分层管理 1.3TCP/IP通信传输流 1.4 与 HTTP 关系密切的协议 : IP、TCP 和 DNS &#xff08;1&#xff09;负责传输的 IP协议&#xff08;网络层&#xff09; &#xff08;2&#xff09;确保可靠的 TCP协议&#xff08;传输层&#xff…

sklearn实现线性回归

sklearn实现线性回归 一、数据集介绍二、使用sklearn实现线性回归一、数据集介绍 本案例使用女性身高体重数据集,数据集如下图所示: 可以看到,数据集有15行2列。 二、使用sklearn实现线性回归 sklearn中的线性模型模块是linear_model。这里使用linear_model下的普通线性…

TiDB学习4:Placement Driver

目录 1. PD架构 2. 路由功能 2. TSO 2.1 TSO 概念 2.2 TSO分配过程 2.3 TSO时间窗口 3. 调度 3.1 信息收集 3.2 生成调度(operator) 3.3 执行调度 4. Label 与高可用 4.1 Label 的配置 5. 小结 1. PD架构 PD是整个TiDB的总控&#xff0c;相当于集群的大脑 PD集成了…

易备数据备份软件: 快速备份 MySQL\SQL Server\Oracle\泛微 OA 数据库

易备数据备份软件支持对 SQL Server、Oracle、MySQL、PostgreSQL、MariaDB、泛微 OA 等数据库进行快速备份&#xff0c;备份过程不会对任何服务造成中断。 使用一份授权&#xff0c;可以备份无限量的数据库&#xff0c;不管数据库服务器是否在本机、本地网络、或是远程网络。可…

用LabVIEW进行CAN通信开发流程

本文详细介绍了在LabVIEW中开发CAN&#xff08;Controller Area Network&#xff09;通信的流程&#xff0c;包括硬件配置、软件编程和调试步骤。重点讨论了开发过程中需要注意的问题&#xff0c;如节点配置、数据帧格式和错误处理等&#xff0c;为开发高效可靠的CAN通信应用提…

可以在搜索结果中屏蔽指定网站的插件

可以在搜索结果中屏蔽指定网站的插件 | LogDict背景 在搜索引擎中搜索问题, 往往充斥各种无效内容 比如搜个技术类的问题, 前几页CSDN, 百度百家号, 百度经验, 百度知道, 腾讯云各类云爬的水文 CSDN基本都是复制粘贴的, 甚至格式都乱码了, 虽然我以前也干过 要复制粘贴无所谓, …

Java语法篇-易错

文章目录 类型转换switch case类之间关系及UMLtry catch finally 类型转换 隐式类型转换&#xff0c;不同数值类型参与计算时&#xff0c;低精度会转化为高精度参与运算 byte,short,char参与整数运算时会转成int float,int 参与浮点数运算时会转成double 强制类型转换 高精…

Hadoop概览以及编译hadoop说明

一、Hadoop概述 Hadoop 是一个用于跨计算机集群存储和处理大型数据集的软件框架。它旨在处理大数据&#xff0c;即传统数据库无法有效管理的极其庞大和复杂的数据集。Hadoop不是传统意义上的数据仓库&#xff0c;因为它们的用途不同&#xff0c;架构也不同。Hadoop 是一个跨分布…

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

OS复习笔记ch6-2

死锁的解决 死锁的预防&#xff08;打疫苗&#xff09;死锁的避免&#xff08;戴口罩&#xff09;死锁的检测&#xff08;做核酸&#xff09; 死锁的预防 前面我们提到了死锁的四个必要条件 防止前三个必要条件&#xff0c;就是间接预防防止最后一个必要条件–循环等待&…

每日一题23:统计文本中单词出现的次数

一、每日一题 解答&#xff1a; import pandas as pd def count_occurrences(files: pd.DataFrame) -> pd.DataFrame:bull_cnt len(files[files[content].str.contains(r\sbull\s)])bear_cnt len(files[files[content].str.contains(r\sbear\s)])res_df pd.DataFrame({…