牛客网刷题 | BC105 菱形图案

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

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

感谢阅读!

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


 描述

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

输入描述:

多组输入,一个整数(2~20)。

输出描述:

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


思路 :

可以分成两个部分来看 上面是n行 下面是n+1行

for(j=0;j<n-i;j++)

//如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2

for(j=0;j<=i;j++)

//因为这里j都是每次从0开始的

//当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个

//......

//i随着变化而变化

 for(j=0;j<i;j++)

//打印空格

//当i为0的时候不打印 当i为1的时候打印一个空格

//当i为2的时候打印两个 ......

for(j=0;j<n+1-i;j++)

//这里是因为是n+1行 所以要写成n+1

//这里是5的时候 i为0 就打印五个

//为4的时候 i为1 打印四个

//为3的时候 i为2 打印三个

//......


1. 理解菱形图案的结构

菱形图案由两部分组成:上半部分和下半部分。上半部分从中间的1个星号开始,每行递增一个星号,直到达到最宽行(星号数量等于输入的整数)。下半部分则从最宽行开始,每行递减一个星号,直到回到中间的1个星号。

2. 输入处理

程序需要读取用户输入的整数(2~20),这个整数代表菱形最宽行的星号数量。由于可能有多次输入,所以使用while循环结合scanf函数来持续读取输入,直到遇到文件结束符EOF。

3. 打印上半部分

  • 初始化行数变量i为0。
  • 使用for循环,从0开始递增,直到达到最宽行(i < n)。
  • 在每行开始,首先打印空格,空格数量为n - i - 1。这是因为菱形是中心对称的,需要在星号两侧留出相应的空格以保持图案居中。
  • 接着打印星号,星号数量为i + 1,使用内层for循环实现,每打印一个星号后跟一个空格。
  • 每行结束后打印换行符\n

4. 打印下半部分

  • 下半部分的打印逻辑与上半部分类似,但是行数递减,星号数量也随之递减。
  • 使用另一个for循环,从n - 1开始递减,直到1(i > 0)。
  • 同样首先打印空格,空格数量为i - 1
  • 然后打印星号,星号数量为n - i,使用内层for循环实现,每打印一个星号后跟一个空格。
  • 每行结束后打印换行符\n

代码 1 :

/*思路 : 可以分成两个部分来看 上面是n行 下面是n+1行
for(j=0;j<n-i;j++)
//如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2
for(j=0;j<=i;j++)
//因为这里j都是每次从0开始的 
//当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个
//......
//i随着变化而变化for(j=0;j<i;j++)
//打印空格
//当i为0的时候不打印 当i为1的时候打印一个空格
//当i为2的时候打印两个 ......
for(j=0;j<n+1-i;j++)
//这里是因为是n+1行 所以要写成n+1
//这里是5的时候 i为0 就打印五个
//为4的时候 i为1 打印四个
//为3的时候 i为2 打印三个
//......
*/
# include <stdio.h>
int main (){int n = 0;while(scanf("%d",&n)!=EOF){int i = 0;for(i = 0; i<n; i++){//上半部分int j = 0;//先打印空格for(j=0;j<n-i;j++)//如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2//......{printf(" ");}//接下来打印 空格+星号for(j=0;j<=i;j++)//因为这里j都是每次从0开始的 //当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个//......//i随着变化而变化{printf("* ");}printf("\n");}//下半部分//n+1 行//依旧是有空格加型号组成的for(i=0;i<n+1;i++){int j = 0;for(j=0;j<i;j++)//打印空格//当i为0的时候不打印 当i为1的时候打印一个空格//当i为2的时候打印两个 ......{printf(" ");}for(j=0;j<n+1-i;j++)//这里是因为是n+1行 所以要写成n+1//这里是5的时候 i为0 就打印五个//为4的时候 i为1 打印四个//为3的时候 i为2 打印三个//......{printf("* ");}printf("\n");}}return 0;
}

 代码 2 :

#include <stdio.h>int main() {int n;// 处理多组输入直到EOFwhile (scanf("%d", &n) != EOF) {int i, j; // 定义循环变量i和j// 打印菱形的上半部分for (i = 0; i < n; i++) {// 打印空格for (j = 0; j < n - i - 1; j++) {printf(" ");}// 打印星号和空格for (j = 0; j <= i; j++) {printf("* ");}printf("\n"); // 换行}// 打印菱形的下半部分for (i = n - 1; i > 0; i--) {// 打印空格for (j = 0; j < i - 1; j++) {printf(" ");}// 打印星号和空格for (j = 0; j < n - i; j++) {printf("* ");}printf("\n"); // 换行}}return 0; // 程序结束
}

这段代码首先包含了stdio.h头文件,定义了主函数main

然后,程序使用while循环来读取输入直到EOF。

外层for循环首先控制打印菱形的上半部分,内层两个for循环分别用来打印空格和星号。接着,另一个外层for循环控制打印菱形的下半部分。

每完成一行的打印后,程序使用printf("\n")来换行。

当所有行都打印完毕后,while循环结束,程序返回0,表示正常退出。 

代码 3 :

#include <stdio.h> // 引入标准输入输出库函数int main() // 主函数开始
{int n = 0; // 定义一个整型变量n,用于存储用户输入的菱形最宽处的星号数量while(scanf("%d",&n) != EOF) // 使用while循环处理多组输入直到文件结束符EOF{// 打印菱形的上半部分,包括中间行for (int i = 0; i < n + 1; i++) // 循环从0到n,包括n,打印上半部分和中间行{// 打印前面的空格,使星号居中for (int j = 0; j < n - i; j++){printf(" ");}// 打印星号,星号数量从0开始递增,等于当前行号ifor (int j = 0; j <= i; j++){printf("* ");}printf("\n"); // 每行结束后换行}// 打印菱形的下半部分for (int i = 0; i < n; i++) // 循环从0开始到n-1,打印下半部分{// 打印前面的空格,使星号居中for(int j = 0; j <= i; j++){printf(" ");}// 打印星号,星号数量从n-1开始递减,等于n-i-1for (int j = 0; j < n - i - 1; j++) // 这里j的初始值应为0,因为星号数量从n-i-1开始{printf("* ");}printf("\n"); // 每行结束后换行}}return 0; // 主函数结束,返回0表示程序正常退出
}

  

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Facebook代运营 | Facebook广告投放步骤及要点

Facebook体量大&#xff0c;素材的更新频率快&#xff0c;通过Facebook进行广告投放的用户也越来越多&#xff0c;Facebook坐拥大量用户&#xff0c;同时有着非常科学的用户画像构建系统和推送机制&#xff0c;对于很多广告涉足的伙伴来说&#xff0c;更加的友好。 1. 创建广告…

「计网」网络初识

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;计网 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 网络初识 &#x1f349;IP 地址 & 端口号&#x1f349;网络协议&#x1f34c;TCP/IP 网络协议 &#x1f349;封装和分用&#x1f349…

数据隐私新篇章:Facebook如何保护用户信息

随着数字化时代的到来&#xff0c;数据隐私保护成为了社交媒体平台和用户共同关注的焦点。作为全球最大的社交网络之一&#xff0c;Facebook一直致力于保护用户的隐私和数据安全。本文将深入探讨Facebook在数据隐私保护方面的措施和实践&#xff0c;以及其如何开启数据隐私的新…

领域建模(系统操作复习)

习题 问题 考察点 领域建模 识别概念类 固定模板 Conceptual Class Category Examples specifications,designs, or descriptions of things roles of people containers of other things things in a container abstract noun concepts organizations events processes (…

车载电子电器架构 —— 智能座舱技术范围(万字长文精讲)

车载电子电器架构 —— 智能座舱技术范围 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

0基础认识C语言(理论+实操3)

所有籍籍无名的日子里 我从未看轻自己半分 小伙伴们&#xff0c;一起开始我们今天的话题吧 一、算法操作符 1.双目操作符 为何叫双目操作符呢&#xff1f;其实是因为我们进行加减乘除的时候&#xff0c;至少得需要两个数字进行这些运算&#xff0c;而这个数字就被称为操作数…

算法题解记录27+++随机链表的复制(百日筑基)

一、题目描述&#xff1a; 题目难度&#xff1a;中等 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每…

Leetcode - 周赛399

目录 一&#xff0c;3162. 优质数对的总数 I 二&#xff0c;3163. 压缩字符串 III 三&#xff0c;3164. 优质数对的总数 II 四&#xff0c; 3165. 不包含相邻元素的子序列的最大和 一&#xff0c;3162. 优质数对的总数 I 假设 x 是 nums1 数组中的值&#xff0c;y 是 nums2…

WebGL实现医学教学软件

使用WebGL实现医学教学软件是一个复杂但非常有益的项目&#xff0c;可以显著提升医学教育的互动性和效果。以下是详细的实现步骤&#xff0c;包括需求分析、技术选型、开发流程和注意事项。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作…

Python自动实时查询预约网站的剩余名额并在有余额时发邮件提示

本文介绍基于Python语言&#xff0c;自动、定时监测某体检预约网站中指定日期的体检余额&#xff0c;并在有体检余额时自动给自己发送邮件提醒的方法。 来到春招末期&#xff0c;很多单位进入了体检流程。其中&#xff0c;银行&#xff08;尤其是四大行&#xff09;喜欢“海检”…

404.左叶子之和

计算给定二叉树的所有左叶子之和。 示例&#xff1a; 思路&#xff1a; 通过父节点来判断七子节点是不是我们要收集的元素。因为如果遍历到孩子节点&#xff0c;我们无法判断它是左孩子还是右孩子。 后序遍历&#xff0c;左右中。 判断当前节点是不是左叶子是无法判断的&…

33【Aseprite 作图】树——拆解

1 树叶 画树叶真累啊&#xff0c;可以先画一个轮廓&#xff0c;细节一点点修 2 1 2 &#xff1b;2 2 2 &#xff08;横着横&#xff09;&#xff0c;这样一点点画树叶 填充颜色&#xff0c;用了喷雾工具 2 树干部分 轮廓部分&#xff0c;左边的是3 3 3 &#xff1b;上下都是…

【上海大学计算机组成原理实验报告】六、内存系统实验

一、实验目的 学习内存访问机制。理解代码和数据的分区存放原理和技术。 二、实验原理 根据实验指导书的相关内容&#xff0c;地址寄存器MAR用来存放要进行读或写的存储器EM的地址。其内容经数据总线DBUS写入&#xff0c;因此必须在数据总线上具有数据后&#xff0c;配合MAR允…

(奇幻森林)POLYGON - Enchanted Forest - Nature Biomes - 3D Environment Art by Synty

各种雄伟的树木,装饰着优雅简化的树叶,在头顶形成了一个天堂般的树冠,在苔藓覆盖的森林地面上投下了宁静的咒语。 每一项资产,从引人入胜的环境材料到平缓的波浪状山丘,都经过精心制作,将您带到魔法和自然融合的地方。POLYGON-魔法森林-自然生物技术为数字领域注入真正魔…

AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica

✨ 1: Prompt2Sign 多语言手语数据集&#xff0c;便捷高效用于手语研究。 Prompt2Sign 是一个全面的多语言手语数据集&#xff0c;旨在通过工具自动获取和处理网络上的手语视频。该数据集具有高效、轻量的特点&#xff0c;旨在减少先前手语数据集的不足之处。该数据集目前包含…

【qt】多窗口开发

多窗口开发 一.应用场景二.嵌入的窗口1.设计Widget窗口2.创建窗口3.添加窗口4.总代码 三.独立的窗口1.创建窗口2.显示窗口 四.总结 一.应用场景 多窗口,顾名思义,有多个窗口可以供我们进行操作! 截个小图,你应该就知道了 OK,话不多说,直接开干,先来设计我们的主窗口 需要蔬菜…

数据整理的Compact流程 (二)|OceanBase数据转储合并技术解读(二)

上篇文章《数据整理的Compact流程 &#xff08;一&#xff09;&#xff5c;OceanBase数据转储合并技术解读&#xff08;二&#xff09;》中&#xff0c;有讲解到&#xff0c;在OceanBase数据库中&#xff0c;当MemTable写满时&#xff0c;将其下刷到Mini SSTable的过程包含两个…

使用 Django ORM 进行数据库操作

文章目录 创建Django项目和应用定义模型查询数据更新和删除数据总结与进阶聚合和注解跨模型查询原始SQL查询 Django是一个流行的Web应用程序框架&#xff0c;它提供了一个强大且易于使用的对象关系映射&#xff08;ORM&#xff09;工具&#xff0c;用于与数据库进行交互。在本文…

第六届“智能设计+运维”国产工业软件研讨会暨2024年天洑软件用户大会圆满召开

2024年5月23-24日&#xff0c;第六届“智能设计运维”国产工业软件研讨会暨2024年天洑软件用户大会在南京举办。来自国产工业软件研发企业、制造业企业、高校、科研院所的业内大咖&#xff0c;能源动力、船舶海事、车辆运载、航空航天、新能源汽车、动力电池、消费电子、石油石…

CATIA二次开发VBA入门(4)——进程外开发环境搭建,vb.net在Visual Studio中开发,创建圆柱曲面的宏录制到二次开发案例

目录 引出vb.net和vb6.0 进程外开发环境搭建vb.net开发环境搭建《CATIA二次开发技术基础》模板 添加宏库引用 vs开发环境初步vs中的立即窗口对象浏览器 建立模板案例&#xff1a;创建一堆圆柱曲面第一步&#xff1a;录制宏第二步&#xff1a;代码精简第三步&#xff1a;for循环…