单位网站制作费用报价单/seo网站建设优化什么意思
引言
本篇文章讲了一些常见的图形编程题,并总结了一些规律。
1、打印空心正方形
1.1 代码展示:
#include<stdio.h>
int main()
{int a = 0;//边长初始化scanf("%d", &a);//输入边长的值{int i = 0;for (i = 0; i < a; i++)//控制行数{int j = 0;for (j = 0; j < a; j++)//控制列数{if (i == 0 || i == a - 1)//判断行数是否打印 *{printf("* ");//*后面留一个空格}else if (j == 0 || j == a - 1)//判断列数是否打印 *{printf("* ");//*后面留一个空格}else{printf(" ");//这里留两个空格} }printf("\n");//换行} }return 0;
}
图案展示:
1.2 代码解析:
1.通过scanf函数获得输入的边长值
2.通过两层循环来控制每行每列的输出
- 外层循环控制行数,当行号为 0(第一行)或
a - 1
(最后一行)时,整行打印 *。 - 内层循环控制列数,当列号为 0(第一列)或
a - 1
(最后一列)且当前行不是第一行和最后一行时,打印*
,其他位置打印两个空格。
3.每行打印完换行。
1.3 分析i == 0 || i == a - 1
为什么满足这个条件就打印*就可以得到空心正方形?看下图:
这里就用图解释了,如果还有些不明白,可以私我
2、空心三角形
2.1 思路分析
- 使用两个嵌套的循环,外层循环控制行数,内层循环控制每行的输出。
- 对于每行,先打印一定数量的空格,使得三角形对齐。
- 然后判断当前行的位置,如果是第一行、最后一行或者是每行的第一个和最后一个字符位置,打印
*
,否则打印空格。
2.2 代码展示:
#include <stdio.h>int main() {int rows = 0;scanf("%d", &rows);//输入行数for (int i = 1; i <= rows; i++) { // 外层循环控制行数for (int j = 1; j <= rows - i; j++) { // 打印每行前面的空格printf(" ");}for (int k = 1; k <= 2 * i - 1; k++) { // 处理每行的字符输出if (k == 1 || k == 2 * i - 1 || i == rows) { // 第一行、最后一行、每行的首尾位置打印*printf("*");} else { // 中间位置打印空格printf(" ");}}printf("\n"); // 换行}return 0;
}
2.3 代码解析:
- 定义一个变量rows用来存储行数
- 内层的第一个
for
循环for (int j = 1; j <= rows - i; j++)
用于在每行的开头打印适当数量的空格,以使三角形对齐。 - 内层的第二个
for
循环for (int k = 1; k <= 2 * i - 1; k++)
处理每行的字符输出。if (k == 1 || k == 2 * i - 1 || i == rows)
这个条件判断用于确定是否打印*
。当是每行的第一个字符(k == 1
)、最后一个字符(k == 2 * i - 1
)或者是最后一行(i == rows
)时,打印*
,否则打印空格。
3、X形图案
3.1代码展示:
#include <stdio.h>int main()
{int size = 0; // 初始化scanf("%d", &size);//输入值int i = 0;for ( i = 0; i < size; i++) // 行循环{ int j = 0;for ( j = 0; j < size; j++)// 列循环{ if (i == j || i + j == size - 1)// 判断是否为对角线上的位置{ printf("*"); // 打印 '*'}else {printf(" "); // 否则打印空格}}printf("\n"); // 换行}return 0;
}
图案展示:
3.2 代码解析:
1.先定义一个变量size来表示图案的大小;
2.使用两个嵌套的for循环,外层控制行数,内层控制列数;
3.你可以将图案看作在一张表格上,对于每个位置( i , j ),通过条件判断 i == j 表示主对角线(从左上角到右下角)上的位置,
i + j == size - 1表示副对角线(从右上角到左下角)上的位置。
4.如果当前位置在对角线上,则打印 *,否则打印空格。
5.每行打印完后,记得换行。
3.3 i == j || i + j == size - 1解释
假设我们有一个 size*
size
的二维矩阵(例如 5×5)。
对于主对角线(从左上角到右下角),行索引 i
和列索引 j
是相等的,即 i == j
。(索引即下标);
例如,在 5*5 的矩阵中,主对角线上的点为 (0, 0)、(1, 1)、(2, 2)、(3, 3)、(4, 4),都满足 i == j
。
对于副对角线(从右上角到左下角),行索引 i
与列索引 j
的和等于矩阵的边长减 1,即 i + j == size - 1
。
例如,在 5*5 的矩阵中,副对角线上的点为 (0, 4)、(1, 3)、(2, 2)、(3, 1)、(4, 0),都满足 i + j == 4
(因为 5 - 1 = 4)。
所以,当满足 (i == j || i + j == size - 1)
这个条件时,就可以确定是在这两条对角线上。
3.4 注意事项:
printf("\n"); //换行不要写到内循环里面去了,否则会出现下面这种情况
4.沙漏
4.1 代码展示:
#include <stdio.h>
int main() {int a = 0;printf("请输入沙漏的行数(奇数): ");scanf("%d", &a);//输入行数for (int i = 1; i <= a; i++) { //外层循环控制上半部分沙漏的行数,从第 1 行到第 a 行for (int j = 1; j < i; j++) { //内层循环打印每行开头的空格,空格数量逐行递增printf(" ");}for (int k = 1; k <= 2 * (a - i + 1) - 1; k++) {printf("*");//内层循环打印星号,星号数量逐行递减}printf("\n");//换行}for (int i = a - 1; i >= 1; i--) { // 外层循环控制下半部分沙漏的行数,从倒数第 2 行到第 1 行for (int j = 1; j < i; j++) { // 内层循环打印每行开头的空格,空格数量逐行递减printf(" ");}for (int k = 1; k <= 2 * (a - i + 1) - 1; k++) {printf("*");// 内层循环打印星号,星号数量逐行递增}printf("\n");}return 0;
}
图案演示:
4.2 分析(结合注释)
对于上半部分:
- 随着
i
的增加,每行前面的空格数量也增加,因为j < i
。 - 同时,星号的数量通过
2 * (a - i + 1) - 1
计算得到,随着i
的增加而减少。
对于下半部分:(对称)
- 随着
i
的减小,每行前面的空格数量减少。 - 星号的数量通过相同的公式计算,随着
i
的减小而增加,从而形成与上半部分对称的沙漏形状。
5、一些规律
1 使用嵌套的循环结构
外层循环通常控制图形的行数。内层循环控制每行的输出内容,比如空格数量、特定字符的数量等。
2 利用对称性
对于对称的图形,常常可以利用上半部分和下半部分的对称关系,通过修改循环的条件和范围来减少重复的代码。
3 注意边界条件
例如对于三角形、矩形等图形,要正确处理第一行、最后一行、第一列和最后一列的输出,以确保图形的形状完整和准确。
4 使用控制语句
如 if-else
语句来区分不同的行或列的输出模式。
5 以行列的思想为基础
学会逐行逐列构造图形。
结语:
图形化编程题目对于帮助我们熟悉循环和控制结构的使用非常有帮助。通过这些题目,我们可以更加深入地理解循环和控制结构的工作原理,并且能够在实践中更好地应用它们。
明天开始更新C语言的知识模块!!!
相关文章:

C:图案打印
引言 本篇文章讲了一些常见的图形编程题,并总结了一些规律。 1、打印空心正方形 1.1 代码展示: #include<stdio.h> int main() {int a 0;//边长初始化scanf("%d", &a);//输入边长的值{int i 0;for (i 0; i < a; i)//控制行…...

WebLogic:弱口令,木马反弹连接
weblogic WebLogic 是 Oracle 公司开发的应用服务器,主要用作开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器。它在历史上曾出现过多个安全漏洞,其中包括弱口令、任意文件上传、SSRF、反序列化漏洞等 常见版本&a…...

深度学习图像处理环境搭建
Anaconda安装 Anaconda介绍 Anaconda是一个用于科学计算和数据科学的开源发行版,它包含了许多流行的Python库和工具,旨在简化数据分析和机器学习任务的开发过程。Anaconda提供了一个集成的开发环境,包括Python解释器、包管理工具࿰…...

这几个高级爬虫软件和插件真的强!
亮数据(Bright Data) 亮数据是一款强大的数据采集工具,以其全球代理IP网络和强大数据采集技术而闻名。它能够轻松采集各种网页数据,包括产品信息、价格、评论和社交媒体数据等。 网站:https://get.brightdata.com/we…...

【实战】机器学习Kaggle比赛—House Prices - Advanced Regression Techniques
House Prices - Advanced Regression Techniques 一、准备工作(1)查看项目概述(2)下载数据集(3)导入部分必要的库(4)参数设置(图形显示大小屏蔽警告)…...

【前端面试题】前端工程化、Webpack、Vite、Git项目管理相关问题
目录 关于前端工程化关于Webpack关于Vite关于Git项目管理综合性问题 关于前端工程化 1. 前端工程化的定义和好处 问题:什么是前端工程化?它的主要好处是什么?答案:前端工程化是指在前端开发中应用系统化、自动化和标准化的方法&…...

【号外】「省点时间」新功能暖心上线!
好消息,好消息,重大好消息! 应广大用户朋友的要求,经过一个多月的鏖战,「省点时间」的VIP功能终于上线啦! 新版本在原有基础上,新增VIP功能,用户拥有了更多选择,赶快来…...

Python面试题:如何使用WebSocket实现实时Web应用
使用 WebSocket 实现实时 Web 应用可以使你的应用程序具备实时双向通信的能力。以下是一个完整的指南,展示如何使用 Django Channels 和 WebSocket 实现一个简单的实时 Web 应用。 环境准备 安装 Django Channels: pip install channels创建 Django 项目: django-a…...

公交信息在线查询小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,线路信息管理,站点分类管理,站点信息管理,周边分类管理周边信息管理,系统管理 微信端账号功能包括:系统首页࿰…...

Airtest实施手机精准截图
Airtest实施手机精准截图 一、接口查找 首先我们需要知道我们应该怎么实现用脚本去进行局部截图,我们可以通过翻阅Airtest的API文档发现,Airtest提供了 crop_image(img, rect) 方法可以帮助我们实现局部截图,在我们往期的推文里也介绍过该接…...

前端面试宝典【设计模式】【2】
欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…...

技术汇总笔记7:条件分支相关内容
嵌套Switch语句的使用和改进 嵌套的switch语句虽然在语法上是允许的,但可能会使代码难以阅读和维护。例如: switch (_get_urgency_ob_type(sData.structure_name)) {case URGENCY_OB_PRESSUREINFO:{switch(_get_urgency_ob_sub_type( sData.attribute_…...

一文让你学会python:面向对象
面向对象编程(OOP) 一.类与实例 1.类: 是对现实世界描述的一种类型,是抽象的,是实例的模板,类名采用大驼峰,定义方式为 class 类名: pass 。 2.实例: 根据类创建的具体对象&…...

mac电脑安装 docker镜像 btpanel/baota
PS:docker链接:https://hub.docker.com/r/btpanel/baota 1、将docker下载到本地,然后运行端口映射 docker run -d --restart unless-stopped --name baota -p 8888:8888 -p 22:22 -p 443:443 -p 80:80 -p 888:888 -v ~/website_data:/www/w…...

Python写UI自动化--playwright(pytest.ini配置)
在 pytest.ini 文件中配置 playwright 的选项可以更好地控制测试执行的过程。 在终端输入pytest --help,可以找到playwright的配置参数 目录 1. --browser{chromium,firefox,webkit} 2. --headed 3. --browser-channelBROWSER_CHANNEL 4. --slowmoSLOWMO 5. …...

java实现序列化操作
Java序列化是一种将对象转换为字节流的过程,以便在网络上传输或将对象持久化到磁盘中。在Java中,实现序列化的关键是实现Serializable接口。当一个类实现了Serializable接口时,它可以被Java序列化机制序列化成字节流,然后再反序列…...

视频帧的概念
一个视频帧是视频中的单一静态图像。视频帧的概念与电影胶片中的单一帧类似,视频帧序列的快速播放形成了连续运动的视觉效果。以下是视频帧的详细解释: 视频帧的定义: 视频帧:视频中的单一静态图像。视频是由一系列连续的帧按一定…...

卫星导航系统的应用领域与发展前景
当人们提到卫星导航系统,往往会联想到车载导航仪或手机上的地图应用。然而,卫星导航系统的应用远不止于此,它在许多领域都发挥着重要作用。下面将介绍几个卫星导航系统的应用领域及其发展前景。首先是海洋航行安全领域。在过去,海…...

FPGA开发——数码管的使用(二)
一、概述 在上一篇文章中我们针对单个数码管的静态显示和动态显示进行了一个设计和实现,这篇文章中我们针对多个数码管同时显示进行一个设计。这里和上一篇文章唯一不同的是就是数码管位选进行了一个改变,原来是单个数码管的显示,所以位选就直…...

技术汇总记录笔记5:在 C++ 中,如何使用正则表达式来验证一个字符串是否只包含数字?
在C中,你可以使用 <regex> 头文件中定义的正则表达式功能来验证一个字符串是否只包含数字。以下是一个基本的示例,展示如何使用正则表达式来检查一个字符串是否完全是数字: #include <iostream> #include <string> #inclu…...

ai模特换装软件哪个好用?不知道怎么穿搭就用这几个
最近#紫色跑道的city穿搭#风靡全网,大家纷纷晒出自己的紫色风情。 可一想到衣橱里堆积如山的衣服和钱包的“瘦身计划”,是不是有点小纠结? 别怕,科技来救场!那就是“一键换装在线工具”,让你无需剁手&…...

HCL实验2:VLAN
目的:让PC_3和PC_5处于vlan1, PC_4和PC_6处于vlan2 SW1的配置命令: vlan 2 port GigabitEthernet 1/0/2 quit int g1/0/3 port link-type trunk port trunk permit vlan all quit SW2的配置命令: vlan 2 port GigabitEthernet 1/0/2 quit int g1/0/3 p…...

输出总分题目
题目描述 依次输入三位同学的语文、数学和英语成绩,依次输出他们的总分。 输入输出格式 输入 三行,每行三个整数,用空格隔开,分别表示这三个同学的语文、数学和英语成绩。 输出 一行三个整数,用空格隔开…...

自定义协议(应用层协议)——网络版计算机基于TCP传输协议
应用层:自定义网络协议:序列化和反序列化,如果是TCP传输的:还要关心区分报文边界(在序列化设计的时候设计好)——粘包问题 ——两个问题:粘包、序列化反序列化 1、首先想要使用TCP协议传输的网…...

在jmeter中使用javascript脚本
工作上遇到一个压力测试的需求,需要测试几个考试相关的接口。其中有一个获取试题详情的接口,和一个提交答题信息的接口。后一个接口以上一接口的返回内容为参数,添加上用户的答案即可。jmeter提供了非常多的方式可以实现该需求,这…...

[Bugku] web-CTF靶场详解!!!
平台为“山东安信安全技术有限公司”自研CTF/AWD一体化平台,部分赛题采用动态FLAG形式,避免直接抄袭答案。 平台有题库、赛事预告、工具库、Writeup库等模块。 ------------------------------- Simple_SSTI_1 启动环境: 页面提示传入参数f…...

系统架构师(每日一练11)
每日一练 1.CORBA服务端构件模型中,()是CORBA对象的真正实现,负责完成客户端请求答案与解析 A.伺服对象(Servant) B.对象适配器(Object Adapter) C.对象请求代理(Object Request Broker) D.适配器激活器(AdapterActivator) 2.DMA(直接存储器访问)工作方…...

【前端】fis框架学习
文章目录 1. 介绍2. 安装 1. 介绍 FIS是专为解决前端开发中自动化工具、性能优化、模块化框架、开发规范、代码部署、开发流程等> 问题的工具框架 使用FIS我们可以快速的完成各种前端项目的资源压缩、合并等等各种性能优化工作,同时FIS还提> 供了大量的开发辅…...

STM32高级运动控制系统教程
目录 引言环境准备高级运动控制系统基础代码实现:实现高级运动控制系统 4.1 传感器数据采集模块 4.2 数据处理与运动控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:运动控制与优化问题解决方案与优化收尾与总结 1. 引言 高级运动…...

链式栈,队列与树形结构
链式栈 链式存储的栈 实现方式:可以使用单向链表完成 对单向链表进行头插(入栈)、头删(出栈),此时链表的头部就是链栈的栈顶,链表的尾部,就是链栈的栈底 队列 概念 队列&#…...