牛客网刷题 | BC99 正方形图案

news2024/11/13 11:26:58

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

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

感谢阅读!

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


描述

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

输入描述:

多组输入,一个整数(1~20),表示正方形的长度,也表示输出行数。

输出描述:

针对每行输入,输出用“*”组成的对应边长的正方形,每个“*”后面有一个空格。


思路 :

/*使用嵌套循环来解决这题

两层嵌套for循环 就和乘法口诀表差不多

由此可以看出,当进入第二层循环的时候,是从左往右打印当这五个*打印完成之后

换行操作,然后进入第一层循环然后继续判断,继续从左往右打印*直到循环结束

一开始我也不会写这种题目,理不清是怎么一回事

其实只要套入进去就行了,然后写完在VS里面调试一下就能明白大概是什么意思了。

*/


代码 1 :

/*使用嵌套循环来解决这题
        两层嵌套for循环 就和乘法口诀表差不多
由此可以看出,当进入第二层循环的时候,是从左往右打印当这五个*打印完成之后
换行操作,然后进入第一层循环然后继续判断,继续从左往右打印*直到循环结束
一开始我也不会写这种题目,理不清是怎么一回事
其实只要套入进去就行了,然后写完在VS里面调试一下就能明白大概是什么意思了。
*/

# 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<=i;n++)//控制行
        {
            printf("* ");
        }
    
        printf("\n");

        }
    } 
    
    return 0;
}

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

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

    // 使用while循环读取用户输入,直到输入结束(EOF)
    while (scanf("%d",&i)!=EOF)
    {
        // 外层循环控制列数,从1开始到用户输入的数字i结束
        for(int j = 1;j<=i;j++)
        {
            // 内层循环控制行数,从1开始到用户输入的数字i结束
            for(int n = 1;n<=i;n++)
            {
                printf("* "); // 打印一个星号和一个空格
            }
            
            printf("\n"); // 内层循环结束后,打印一个换行符,准备打印下一行
        }
    } 
    
    return 0; // 程序正常结束
}

代码 2 :

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


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

int main() // 主函数的开始
{
    int x, i; // 定义两个整型变量x和i,x用于存储用户输入的数字,i用于循环计数

    // 使用while循环读取用户输入,直到输入结束(EOF)
    while(scanf("%d",&x)!=EOF)
    {
        // 外层循环控制总的打印次数,即x的平方
        for(i=1; i<=(x*x); i++)
        {
            // 判断当前打印的星号是否是一行的最后一个
            if(i%x==0) // 如果i能被x整除,说明是一行的最后一个星号
            {
                printf("*\n"); // 打印一个星号后换行,开始新的一行
            }
            else // 如果不是一行的最后一个星号
                printf("* "); // 打印一个星号后跟一个空格
        }
    }
    return 0; // 程序正常结束
}

代码 3 :

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

int main() // 主函数的开始
{
    int x; // 定义一个整型变量x,用于存储用户输入的数字,代表矩阵的边长

    // 使用while循环读取用户输入,直到输入结束(EOF)
    while(scanf("%d",&x)!=EOF)
    {
        // 外层循环控制行,从1到x
        for(int i=1; i<=x; i++)
        {
            // 内层循环控制列,从1到x
            for(int j=1; j<=x; j++)
            {
                // 如果是列的最后一个星号,打印星号后换行
                if(j==x) 
                    printf("*\n");
                // 否则打印星号后跟一个空格
                else 
                    printf("* ");
            }
        }
    }
    // 主函数结束,返回0表示程序正常结束
    return 0;
}

这段代码通过两层嵌套循环来打印矩阵。

外层循环控制行,内层循环控制列。

在内层循环中,如果当前是列的最后一个元素(即j==x),则打印一个星号后换行;否则,打印一个星号后跟一个空格。

这样,每完成一行的打印后,就会自动换到下一行的开头,继续打印,直到整个矩阵打印完毕。


 扩展 :

  • 理解题目要求

    • 仔细阅读题目,弄清楚需要解决的问题是什么,输出的格式是什么样的。
  • 确定循环结构

    • 根据题目要求,确定需要几层循环。通常,每一层循环对应输出结构中的一个维度。
    • 例如,打印一个矩阵通常需要两层循环:外层循环控制行,内层循环控制列。
  • 设计循环变量

    • 为每一层循环定义一个循环变量,这个变量通常从1开始,到某个特定的值结束。
  • 编写循环体

    • 在循环体内编写需要执行的操作,比如打印字符、计算数值等。
    • 考虑循环体内的逻辑,比如何时换行、何时打印特定的字符等。
  • 处理边界条件

    • 考虑循环的起始和结束条件,以及循环变量的取值范围。
    • 特别注意循环的终止条件,避免无限循环。
  • 测试和调试

    • 编写完代码后,进行测试,检查输出是否符合预期。
    • 使用一些简单的测试用例,比如边界值,来验证代码的正确性。
    • 如果输出不正确,使用调试工具或打印语句来逐步跟踪代码的执行过程,找出问题所在。
  • 优化代码

    • 在确保代码能够正确运行的基础上,考虑是否可以优化循环结构或逻辑,使代码更加简洁高效。
  • 编写注释

    • 给关键的代码段添加注释,说明代码的功能和逻辑,便于他人阅读和理解。
  • 回顾和总结

    • 完成题目后,回顾整个解题过程,总结经验教训,提高解题能力。
  • 以打印乘法口诀表为例,可以这样思考:
  • 题目要求:打印一个乘法口诀表。
  • 循环结构:两层循环,外层控制行(乘数),内层控制列(被乘数)。
  • 循环变量:外层循环变量从1开始,到9结束;内层循环变量也从1开始,到9结束。
  • 循环体:在内层循环体内打印乘法表达式和结果,每完成一行后换行。
  • 边界条件:确保循环变量不超过9。
  • 测试和调试:使用几个简单的数字测试代码,比如输入1、2等。
  • 优化代码:考虑是否可以减少不必要的打印语句,使代码更加简洁。
  • 编写注释:在关键的循环和打印语句处添加注释,说明代码的作用。
  • 回顾和总结:思考如何改进代码,比如是否可以使用更少的循环或更简洁的表达式。

  

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

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

相关文章

CST初级教程 六

本篇教程将以差分线为例&#xff0c;实例讲解参数化建模及参数扫描。 一 Project创建 点击New and Recent&#xff0c;再点击New Template 点击MICROVAVES & RF/OTICAL&#xff0c;然后在选中Circuit & Components。 点击对话框中Next按钮&#xff0c;在弹出对话框…

C语言中的七种常用排序

今天&#xff0c;为大家整理了C语言中几种常用的排序&#xff0c;以及他们在实际中的运用&#xff08;有Bug请在下方评论&#xff09;&#xff1a; 一.桶排序 #include <stdio.h> int main() {int book[1001],i,j,t,n;for(i0;i<1000;i)book[i]0;scanf("%d"…

B树与B+树区别

B树和B树是常见的数据库索引结构&#xff0c;都具有相较于二叉树层级较少&#xff0c;查找效率高的特点&#xff0c;它们之间有以下几个主要区别&#xff1a; 1.节点存储数据的方式不同 B树的叶子结点和非叶子节点都会存储数据&#xff0c;指针和数据共同保存在同一节点中B树…

MySQL的索引, 到底怎么创建?

目录 前言 MySQL的数据结构 索引是一把双刃剑 索引创建原则 如何给一个列挑选索引? 索引列的基数, 要尽量小 索引列的类型尽量小 索引长字符串的前缀 不要对索引列进行计算操作或者函数计算. 不要老想着查询, 想想插入该怎么办? 避免索引冗余和重复 前言 今天在…

【二叉树】:LeetCode:100.相同的数(分治)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;初阶初阶结构刷题 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 1.问题描述&#xff1a; 2.问题分析&#xff1a; 二叉树是区分结构的&#xff0c;即左右子树是不一…

上5个B端系统的设计规范,让你的开发比着葫芦画瓢。

B端系统设计规范在企业级系统开发中起着重要的作用&#xff0c;具体包括以下几个方面&#xff1a; 统一风格和布局&#xff1a;设计规范能够统一系统的风格和布局&#xff0c;使不同功能模块的界面看起来一致&#xff0c;提升用户的使用体验和学习成本。通过统一的设计规范&am…

模型驱动架构设计方法及应用

引言 模型驱动架构&#xff08;Model Driven Architecture&#xff0c;MDA&#xff09;是一种软件开发方法论&#xff0c;它强调使用一系列抽象层次的模型&#xff0c;并利用模型之间的转换来实现从需求到设计、直至代码生成的全过程。MDA的核心思想是在软件开发过程中强调使用…

druid 1.2.14,application.yaml配置文件中,如何进行数据库加密配置

步骤一&#xff1a;先生成加密的密码&#xff1a; 步骤二&#xff1a;配置application.yaml文件&#xff1a; spring:datasource:driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:username: rootpassword: aPJ35saFz6ASmnmNt…

CentOS 7.9部署宝塔面板超详细

CentOS7 部署宝塔面板 Linux的宝塔面板搭建起来非常轻松&#xff0c;也可以用一句话来形容&#xff0c;如果喝水一样简单&#xff0c;只需一条命令剩下的交给时间&#xff0c;几分钟就能部署好&#xff0c;然后就可以直接进行登录&#xff0c;直接可以安装LNMP、LAMP平台&…

数据结构与算法(Java版) | 详解十大经典排序算法之一:希尔排序

接下来&#xff0c;我来给大家讲解第四种排序算法&#xff0c;即希尔排序。 简单插入排序所存在的问题 在上篇文章中&#xff0c;我已经给大家讲解完插入排序了&#xff0c;虽说是讲完了&#xff0c;但在这里我还是想请大家开动脑筋思考一下&#xff0c;就是咱们讲解的插入排…

SDK崩溃后怎么打开已有工程

1.进到SDK里面&#xff0c;保留&#xff1a;platform、bsp和工程包&#xff08;这里是C&#xff09;&#xff0c;其他都删掉 2.windows窗口运行sdk 3.导入sdk工程

基于springboot+vue的4S店车辆管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

人工智能场景下的网络负载均衡技术

AI技术驱动智能应用井喷&#xff0c;智能算力增速远超通用算力。IDC预测&#xff0c;未来五年&#xff0c;我国智能算力规模年复合增长率将超50%&#xff0c;开启数据中心算力新纪元。随着需求激增&#xff0c;数据中心或智算网络亟需扩容、增速、减时延&#xff0c;确保网络稳…

数据结构(三)栈 队列 数组

2024年5月26日一稿(王道P78) 栈 基本概念 基本操作 顺序存储结构 基本操作 共享栈

数据库管理-第194期 网络加速RDMA初探(20240526)

数据库管理194期 2024-05-26 数据库管理-第194期 网络加速RDMA初探&#xff08;20240526&#xff09;1 概念2 发展3 使用总结 数据库管理-第194期 网络加速RDMA初探&#xff08;20240526&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle ACE A…

PLSQL连接Linux Oracle21c

PLSQL连接Linux Oracle21c 一、安装PLsql 下载官网 https://www.allroundautomations.com/registered-plsqldev/ 二、Oracle Instant Client下载 使用plsql连接oracle的时候是需要本地先安装oracle客户端&#xff0c;英文名就是Oracle Instant Client。 官方下载地址&…

RedHat9 | DNS剖析-配置辅助DNS服务器

一、实验环境 1、辅助域名DNS服务器 DNS通过划分为若干个区域进行管理&#xff0c;每一个区域由1台或多台DNS服务器负责解析&#xff0c;如果仅仅采用1台DNS服务器&#xff0c;在DNS服务器出现故障后&#xff0c;用户将无法完成解析。 辅助DNS服务器的优点 容灾备份&#x…

PaddleSeg训练推理及模型转换全流程

文章目录 1、数据准备1.1 数据标注1.2 数据导出1.3 标签较验1.4 数据集整理1.5 标签可视化 2、 模型训练3、模型验证4、模型推理5、模型导出6、导出文件的推理7、将模型转换成onnx8、使用onnx进行推理 本文记录一下使用paddleseg进行语议分割模型对人体进行分割的使用流程。事实…

自然资源-各级国土空间总体规划的审查要点及流程总结

自然资源-各级国土空间总体规划的审查要点及流程总结 国土空间规划是对一定区域国土空间开发保护在空间和时间上作出的安排&#xff0c;包括总体规划、详细规划和相关专项规划。 国土空间规划管理是国土空间规划中重要的一环。中共中央、国务院发布《关于建立国土空间规划体系…

数据与结构--AVL树

目录 AVL树的概念 AVL树的性质 AVL树结点的定义 AVL树的插入 AVL树的旋转 左单旋 右单旋 左右双旋 右左单旋 AVL树的验证 AVL树的查找 AVL树的修改 AVL树的删除 AVL树的概念 二叉搜索树虽然可以提高我们查找数据的效率&#xff0c;但如果插入二叉搜索树的数据是…