牛客网刷题 | BC99 正方形图案
目前主要分为三个专栏,后续还会添加:
专栏如下: 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");}elseprintf("* ");}}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到xfor(int i=1; i<=x; i++){// 内层循环控制列,从1到xfor(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等。
- 优化代码:考虑是否可以减少不必要的打印语句,使代码更加简洁。
- 编写注释:在关键的循环和打印语句处添加注释,说明代码的作用。
- 回顾和总结:思考如何改进代码,比如是否可以使用更少的循环或更简洁的表达式。
相关文章:

牛客网刷题 | BC99 正方形图案
目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…...
启动小程序F12窗口管理器
如何使用小程序F12任务窗口管理器教学流程 一、引言 小程序的开发者们,是否希望有一款工具能帮助你们更好地管理任务窗口? 二、前置准备 观看视频教程 访问B站视频链接:https://www.bilibili.com/video/BV1aa4y197UU/?spm_id_from333.9…...

完全背包之零钱兑换I
上次分享完完全背包问题的解决思路后,这次分享一道和完全背包有关的leetcode题。 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果…...
Flutter 中的 FittedBox 小部件:全面指南
Flutter 中的 FittedBox 小部件:全面指南 在Flutter的丰富布局小部件中,FittedBox扮演着一个独特而重要的角色。它是一个灵活的组件,用于将子组件的大小和位置适应到给定的约束条件中。本文将提供FittedBox的全面指南,帮助你了解…...

Java的线程的使用
一.两种创建线程的方式 1.继承Thread类(匿名内部类) 创建方式: 1.定义一个子类继承Thread,重写run方法 2.创建子类对象, 3.调用子类对象的start方法(启动还是执行的run方法) 优缺点&#x…...
行为型模式 (Python版)
模板方法模式 """案例:写简历内容:最近有个招聘会,可以带上简历去应聘了。但是,其中有一家公司不接受简历,而是给应聘者发了两张公司自己定制的简历表,分别是A类型的简历表和B类型的简历表…...

vscode:如何解决”检测到include错误,请更新includePath“
vscode:如何解决”检测到include错误,请更新includePath“ 前言解决办法1 获取includePath路径2 将includePath路径添加到指定文件3 保存 前言 配置vscode是出现如下错误: 解决办法 1 获取includePath路径 通过cmd打开终端,输入如下指令&a…...

区块链会议投稿资讯CCF A--USENIX Security 2025 截止9.4、1.22 附录用率
会议名称:34th USENIX Security Symposium CCF等级:CCF A类学术会议 类别:网络与信息安全 录用率:2023年接收率29%,2024录用的区块链相关文章请查看 Symposium Topics System security Operating systems security …...

vue实现可拖拽移动悬浮球
封装悬浮球组件,文件名s-icons.vue <template><div ref"icons" class"icons-container" :style"{ left: left px, top: top px }"><slot></slot></div> </template> <script> export …...

立体库堆垛机的精密构造与功能(收藏版)
导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在现代物流仓储体系中,堆垛机以其高效、精准的操作能力,成为了自动化存储与检索系统的关键所在。 其复杂的构造和多样化的…...
算法提高之你能回答这些问题吗
算法提高之你能回答这些问题吗 核心思想:线段树 用sum,lmax,rmax,tmax分别存线段长度,最大前缀,最大后缀,最大子段和 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 500010;int n,m;int w[N];s…...

C++-指针
在C中,指针是至关重要的组成部分。它是C语言最强大的功能之一,也是最棘手的功能之一。 指针具有强大的能力,其本质是协助程序员完成内存的直接操纵。 指针:特定类型数据在内存中的存储地址,即内存地址。 指针变量的定…...

Three.js 研究:2、如何让动画线性运动
1、默认的动画含有加速度并非线性的 制作好的动画很明显是非线性的,这是一个运动环,为了让环运行线性进行如下设置。 2、设置动画成为线性动画...

z3-加法器实验
补码器加减法,运算方法简介 我们要知道什么是补码的加法,我们为什么要用补码的加法? 补码的加法其实就是将两个补码形式的二进制数字直接相加,处理的时候忽略超出固定位数的进位。补码的加法运算和无符号二进制数的加法操作一样&…...

解决git克隆项目出现fatal无法访问git clone https://github.com/lvgl/lvgl.git
Windows 11系统 报错 $ git clone https://github.com/lvgl/lvgl.git Cloning into lvgl... fatal: unable to access https://github.com/lvgl/lvgl.git/: Failed to connect to github.com port 443 after 21141 ms: Couldnt connect to server 解决方法 git运行这两段代码…...
Vue中引入组件需要哪三步
在Vue中引入组件通常需要以下三步: 导入组件:首先,你需要在父组件中导入你想要使用的子组件。这通常是通过ES6的import语法完成的。 注册组件:接下来,你需要在父组件中注册这个子组件。这可以通过components选项完成&…...

到底该用英文括号还是中文括号?
这篇博客写的还挺详细的,不错。...
一个普通双非女生的秋招之路
大家好,我是小布丁。 先简单地做个自我介绍: 我今年本科毕业于某双非院校(属于那种没什么人听说过的小学校),学的是计算机专业,英语四级水平(没办法,六级确实没过)。我本…...
一个模型用了几层神经网络怎么算?
有权重参数的层算作一层,没有权重参数的就是参数不更新,不能称之为一层 有权重:卷积层、全连接层 没有权重的层:激活函数层、池化层 即数卷积层和全连接层的个数,就是这个模型用了几层神经网络。...
python获取cookie的方式
通过js获取cookie,避免反复登录操作。 经验证在JD上没有用,cookie应该无痕或者加密了,只能用单浏览器不关的模式来实现,但是代码留着,其他网站可能有用。 def cookie_set():driver webdriver.Chrome(optionschrome_…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...