牛客网刷题 | BC106 K形图案

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

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

感谢阅读!

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


描述

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

输入描述:

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

输出描述:

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

 


思路 :

由输出可以看出 这由一个正着直角三角形和一个倒立的直角三角形组成

也可以分成两部分 上面一部分 下面一部分


  1. 理解K形图案:K形图案是一个中心对称的图案,从上到下,每行的星号数量逐渐增加,直到中间行,然后每行的星号数量逐渐减少,回到第一行。

  2. 确定行数:输入的整数n决定了K形图案的行数。如果n是奇数,那么中间行就是第(n+1)/2行;如果n是偶数,中间行是n/2n/2 + 1行。

  3. 打印图案

    • 增加星号:从第1行开始,每行打印相应数量的星号,直到中间行。如果n是奇数,中间行有(n+1)/2个星号;如果n是偶数,中间两行各有n/2个星号。
    • 打印空格:每打印一个星号后,打印一个空格。
    • 减少星号:从中间行之后,每行的星号数量逐渐减少,直到第1行。如果n是奇数,从(n+3)/2行开始减少;如果n是偶数,从n/2 + 2行开始减少。
  4. 处理边界情况:当n=2时,图案是对称的,需要特别处理。这种情况下,第一行和第二行有1个星号,第三行和第四行有2个星号。

  5. 实现逻辑

    • 使用一个循环来控制行数,从1到n
    • 在每一行,首先确定该行应该有多少个星号。这可以通过计算当前行数与中间行数的关系来实现。
    • 然后,使用另一个循环来实际打印星号和空格。
    • 最后,每打印完一行后,打印一个换行符以开始新的一行。

代码 1:

#define _CRT_SECURE_NO_WARNINGS/*由输出可以看出 这由一个正着直角三角形和一个倒立的直角三角形组成
也可以分成两部分 上面一部分 下面一部分
*/# include <stdio.h>
int main(){int n = 0;while (scanf("%d", &n) != EOF){int i = 0;//上半部分//控制每行的打印for (i = 0; i < n; i++)//这里是n行  下半部分就是n+1行{//上半部分 倒立的直角三角形//一个星号和一个空格int j = 0;for (j = 0; j < n+1-i; j++)//n+1-i 的意思就是按照题目的意思来打印星号和空格//当我们输入4的时候//总共的打印是n+1个 当打印第一行的时候 i就是0 就打印n+1就可以了//第二行的时候 i就是1 打印n就可以了//第三行的时候 i就是2 打印n-1个就可以了//因为i是小于n的 当i为3 的时候 i<4成立 继续打印//然后i为4的时候 条件不成立 退出循环 打印换行符 就行下半部分的打印{printf("* ");//按照题目的格式来输出}printf("\n");}//下半部分for (i = 0; i < n+1; i++)//n+1行{int j = 0;for (j = 0; j <= i; j++)//i是从0开始计算的 每次累积//i是1的时候打印一个星号和空格 是2的时候打印两个 是3的时候打印三个......{printf("* ");}printf("\n");}}return 0;
}

 代码 2 :

// 打印*号的方法
void printXuqiu(int count) // 定义一个函数printXuqiu,用于打印K形图案的上半部分
{for (int i = 0; i <= count; ++i) // 循环从0到count(包括count),控制打印的行数{printf("* "); // 打印一个星号和一个空格if (i == count) // 当打印到上半部分的最后一行时{printf("\n"); // 打印一个换行符,结束当前行printXuqiu(--count); // 递归调用printXuqiu函数,打印下半部分,count减1}}
}// 打印下半部分*号的方法
void printXiaBan(int count) // 定义一个函数printXiaBan,用于打印K形图案的下半部分
{int num = 2; // 初始化变量num为2,用于控制每行打印的星号数量for (int i = 1; i <= count; ++i) // 循环从1到count,控制打印的行数{for (int j = 0; j < num; ++j) // 内层循环,打印当前行的星号{printf("* "); // 打印一个星号和一个空格}if (num <= count) // 当当前行不是最后一行时{printf("\n"); // 打印一个换行符,结束当前行num++; // 增加num的值,以便下一行打印更多的星号}}
}int main() // 定义主函数
{int count = 0; // 定义一个整型变量count,用于存储用户输入的行数scanf("%d", &count); // 读取用户输入的行数if (count >= 2 && count <= 20) // 检查输入的行数是否在2到20之间{printXuqiu(count); // 调用printXuqiu函数,打印K形图案的上半部分printXiaBan(count); // 调用printXiaBan函数,打印K形图案的下半部分}
}

 

  

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

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

相关文章

WPS部分快捷操作汇总

记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接&#xff1a; 1、用WPS打开文档&#xff1b; 2、用Ctrla全选&#xff0c;或者点击上方的【选择】-【全选】&#xff0c;选中文档全部内容&#xff1b; 3、按CTRLSHIFTF9组合键&#xff0c;即可一次性将取文档中所有…

Linux的程序管理2:设置优先级,程序的查看与处理---ps命令详解与kill,killall,top,renice,nice搭配使用管理linux

前言 程序的管理除了前文说到的前后台执行&#xff0c;离线执行。还包括下面几个方面&#xff1a; 1&#xff1a;如何找到最耗费系统资源的程序&#xff1f; &#xff08;使用top命令找到PID然后排查原因&#xff09; 2&#xff1a;设置程序的优先级&#xff0c;让其被执行的概…

“论软件的可靠性评价”必过范文,突击2024软考高项论文

论文部分 摘要 2023年03月&#xff0c;我参与了某艺术品公司线上拍卖管理平台的研发。该项目的目标是建立一个互联网在线拍卖平台&#xff0c;用户可以通过手机或PC浏览器进入拍卖平台&#xff0c;对喜欢的拍品进行参拍出价。平台提供了在线支付、在线出价、保证金管理、拍品…

Android开机动画的结束过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) 路径frameworks/base/cmds/bootanimation/bootanimation_main.cpp init进程把我们的BootAnimation的二进制文件拉起来了&#xf…

YOLOv5改进 | 添加注意力篇 | 利用YOLOv10提出的PSA注意力机制助力YOLOv5有效涨点(附代码 + 详细修改教程)

一、本文介绍 本文给大家带来的改进机制是YOLOv10提出的PSA注意力机制&#xff0c;自注意力在各种视觉任务中得到了广泛应用&#xff0c;因为它具有显著的全局建模能力。然而&#xff0c;自注意力机制表现出较高的计算复杂度和内存占用。为了解决这个问题&#xff0c;鉴于注意…

一个可以自动生成随机区组试验的excel VBA小程序

在作物品种区域试验时&#xff0c;通常会采用随机区组试验设计&#xff0c;特制作了一个可以自动生成随机区组试验的小程序。excel参数界面如下&#xff1a; 参数含义如下&#xff1a; 1、生成新表的名称&#xff1a;程序将新建表格&#xff0c;用于生成随机区组试验。若此处为…

arm cortex-m架构 SVC指令详解以及其在freertos的应用

1. 前置知识 本文基于arm cortex-m架构描述&#xff0c; 关于arm cortex-m的一些基础知识可以参考我另外几篇文章&#xff1a; arm cortex-m 架构简述arm异常处理分析c语言函数调用规范-基于arm 分析 2 SVC指令 2.1 SVC指令位域表示 bit15 - bit12&#xff1a;条件码&#…

SOFA-RPC学习记录

文章目录 需求分析模块划分微服务模块交互模块 可拓展架构插件机制 功能分析交互模块 学习微服务模块交互模块 dubbo与nacos集成学习Nacos配置中心实战 dubbo与apollo集成学习配置中心组件与k8s的抉择参考资料 结论 本报告旨在深入学习SOFA-RPC框架&#xff0c;特别是其动态配置…

Linux综合实践(Ubuntu)

目录 一、配置任务 1.1 配置该服务器的软件源为中科大软件源 1.2 安装相关软件openssh-server和vim 1.3 设置双网卡&#xff0c;网卡1为NAT模式&#xff0c;网卡2为桥接模式(桥接模式下&#xff0c;使用静态ip&#xff0c;该网卡数据跟实验室主机网络设置相似&#xff0c;除…

如何搜索[仅有1个文件]或[指定个数范围、名称、类型文件等复杂情况]的文件夹

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 打开工具&#xff0c;切换到批量复制板块&#xff0c;用Ctrl5可以快速切换 然后鼠标移动到工具的贴边的右侧&#xff0c;不是移出工具外面&#xff0c;还在…

【赠书第22期】AI绘画全面精通

文章目录 前言 1 AI绘画基础知识 2 AI绘画技术应用 2.1 风格迁移 2.2 自动绘画 2.3 辅助绘画 3 AI绘画发展前景 3.1 艺术创作领域的变革 3.2 跨领域融合与创新 3.3 个性化艺术创作的普及 4 结语 5 推荐图书 6 粉丝福利 前言 随着科技的飞速发展&#xff0c;人工智…

自学 Java 怎么入门?

关于自学 Java 如何入门这一重要课题&#xff0c;在此为大家进行详细阐述。 在此之前&#xff0c;如果大家有兴趣的话&#xff0c;可以看看我自己精心整理的嵌入式入门资料&#xff0c;这些资料将全部免费送给大家。其中包含了编程教学内容、详细的视频讲解、实用的数据库资料…

锅炉智能制造工厂工业物联数字孪生平台,推进制造业数字化转型

在制造业快速发展的今天&#xff0c;数字化转型已经成为企业提升竞争力的关键途径。锅炉智能制造工厂工业物联数字孪生平台&#xff0c;作为一种创新的技术解决方案&#xff0c;正以其独特的优势&#xff0c;为制造业的数字化转型提供强大动力。锅炉智能制造工厂工业物联数字孪…

libevent源码跨平台编译(windows/macos/linux)

1.windows编译: 克隆: git clone https://github.com/libevent/libevent.git 克隆成功 生成makefile 生成成功 默认不支持OpenSSL,MbedTLS,ZLIB这三个库 编译: cmake --build . --config release

深入分析 Android Service (完)

文章目录 深入分析 Android Service (完)1. Service 的生命周期管理2. Service 的生命周期方法2.1 onCreate()2.2 onStartCommand(Intent intent, int flags, int startId)2.3 onBind(Intent intent)2.4 onUnbind(Intent intent)2.5 onRebind(Intent intent)2.6 onDestroy() 3.…

子集树与排列树的构造

排列树的构造&#xff1a; 无重复画法&#xff1a;一条线前面出现的不再出现。 有重复画法&#xff1a;一条线前面出现的不再出现&#xff0c;如果仅仅只是相似可以出现&#xff1b;兄弟不能相似。 目标函数是&#xff1a;cnt 总元素个数分支策略是全遍历&#xff0c;不过存…

二级指针简单介绍

我们之前学习的&#xff1a;变量的地址是存入指针变量中的&#xff0c;然而指针变量也是变量&#xff0c;是变量就有地址&#xff0c;那么指针变量的地址存放在哪里 &#xff1f; 这也就是二级指针 #include<stdio.h> int main() {int a10;int*p&a;int**pp&p;re…

微软如何打造数字零售力航母系列科普12 - 使用Microsoft Fabric将客户数据带入人工智能时代

【世界上充斥着数据&#xff0c;在过去的2年里&#xff0c;我们都看到了人工智能如何有潜力彻底改变我们的日常业务。人们对利用生成性人工智能体验的力量的需求越来越大&#xff0c;但这样做需要一个干净的数据庄园&#xff0c;而且可能会因为各种技术堆栈、分散的团队和无处不…

如何让Google快速收录?

要让Google快速收录你的网站&#xff0c;可以考虑使用GSI服务&#xff0c;这是一种专门设计来加速网站被Google搜索引擎收录的服务&#xff0c;下面详细解释GSI服务的基本原理和具体好处&#xff1a; GSI服务通过一种名为GPC爬虫池的系统实现&#xff0c;这个系统是基于对Goog…