牛客网刷题 | 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_…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...