牛客网刷题 | 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,一经查实,立即删除!

相关文章

Java 基础面试300题 (201-230)

Java 基础面试300题 &#xff08;201-230&#xff09; 201.下面代码片段的输出是什么&#xff1f; Predicate<Integer> numberChecker (num)–> num > 20; int input 10; System.out.println(input” greater than 20–”numberChecker.test(input)); //Line 1…

perl: URI::rtsp 是用来处理RTSP协议的的URI的模块。

在Perl中&#xff0c;URI::rtsp 是用来处理RTSP&#xff08;Real Time Streaming Protocol&#xff0c;实时流协议&#xff09;的URI的模块。 以下是一些使用 URI::rtsp 的方法&#xff1a; 1.创建一个RTSP URI use URI::rtsp;my $uri URI::rtsp->new("rtsp://user…

WPS部分快捷操作汇总

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

AI学习指南机器学习篇-线性回归统计推断

AI学习指南机器学习篇-线性回归统计推断 在机器学习领域&#xff0c;线性回归模型是最为常见且基础的模型之一。而统计推断则是为了更好地理解数据背后的规律而产生的一门重要学科。本文将探讨线性回归模型与统计推断的关系&#xff0c;重点讨论参数估计的置信区间和假设检验。…

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

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

Leetcode 第 397 场周赛题解

Leetcode 第 397 场周赛题解 Leetcode 第 397 场周赛题解题目1&#xff1a;3146. 两个字符串的排列差思路代码复杂度分析 题目2&#xff1a;思路代码复杂度分析 题目3&#xff1a;3148. 矩阵中的最大得分思路代码复杂度分析 题目4&#xff1a;3149. 找出分数最低的排列思路代码…

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

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

php fpdf使用记录

使用composer安装fpdf > composer require setasign/fpdf简单创建一个pdf文件并输出下载 //fpdf版本&#xff1a;&quot;setasign/fpdf&quot;: &quot;^1.8&quot;, // 创建PDF实例 $pdf new \FPDF();// 设置文档信息 $pdf->SetAuthor(Your Name); $pdf-…

深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)

在本篇文章中&#xff0c;我们将详细解读力扣第171题“Excel表列序号”。通过学习本篇文章&#xff0c;读者将掌握如何使用多种方法来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释和ASCII图解&#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…

iOS开发中的sceneDidEnterBackground和applicationDidEnterBackground

在 iOS 应用开发中&#xff0c;sceneDidEnterBackground 和 applicationDidEnterBackground 是两个不同的生命周期方法&#xff0c;它们分别属于 UISceneDelegate 和 UIApplicationDelegate&#xff0c;用于处理应用程序或场景进入后台时的逻辑。以下是它们的区别和用法&#x…

字符串和字节串

字符串和字节串 在 Python 中,字符串(String)和字节串(Byte String)是两种不同的数据类型。 字符串(String) 字符串是一种文本数据类型,它可以包含 Unicode 字符。Python 的字符串是使用 Unicode 编码的,可以包含任何语言的字符。 例如: s = "hello" …

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

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

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

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

2024年3月电子学会Python编程等级考试(四级)真题题库

2024年3月青少年软件编程Python等级考试&#xff08;四级&#xff09;真题试卷 题目总数&#xff1a;38 总分数&#xff1a;100 选择题 第 1 题 单选题 运行如下Python代码&#xff0c;若输入整数3&#xff0c;则最终输出的结果为&#xff1f;&#xff08; &#xff…

java动态获取实体类字段的方法

1.使用反射&#xff08;Reflection&#xff09;API来动态地获取实体类的字段 在Java中&#xff0c;我们可以使用反射&#xff08;Reflection&#xff09;API来动态地获取实体类的字段。以下是一个详细的代码示例&#xff0c;演示了如何获取一个实体类的所有字段&#xff1a; …

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;特别是其动态配置…

LeetCode 每日一题 2024/5/27-2024/6/2

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 5/27 2028. 找出缺失的观测数据5/28 2951. 找出峰值5/29 2981. 找出出现至少三次的最长特殊子字符串 I5/30 2982. 找出出现至少三次的最长特殊子字符串 II5/31 2965. 找出缺…

Linux综合实践(Ubuntu)

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