牛客网刷题 | 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形图案的下半部分
    }
}

 

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

今日好料推荐(大数据湖体系规划)

今日好料推荐&#xff08;大数据湖体系规划&#xff09; 参考资料在文末获取&#xff0c;关注我&#xff0c;获取优质资源。 大数据湖体系规划 一、大数据湖简介 大数据湖&#xff08;Data Lake&#xff09;是一个集中式的存储库&#xff0c;用于存储来自各种来源的结构化和…

墨天轮《2023年中国数据库行业年度分析报告》正式发布!

为明晰发展脉络&#xff0c;把握未来趋势&#xff0c;墨天轮于5月29日正式发布 《2023年中国数据库年度行业分析报告》。该报告由墨天轮联合业界专家学者共同编写&#xff0c;共330页&#xff0c;旨在梳理和洞察中国数据库行业的发展趋势、技术创新、市场动态以及面临的挑战&am…

微信群活码生成系统网源码

微信群二维码活码工具&#xff0c;生成微信群活码&#xff0c;随时可以切换二维码&#xff01;微信官方群二维码有效期是7天&#xff0c;过期后无法扫码进群&#xff0c;或者是群人数满200人就无法扫码进群&#xff0c;如果我们在推广的时候&#xff0c;群满人或者过期了&#…

M-G364PD惯性测量单元:相机及微小层面的革命性应用

在现代科技飞速发展的今天&#xff0c;精准控制和精确测量是众多高端设备实现卓越性能的关键。爱普生推出的M-G364PD惯性测量单元&#xff08;IMU&#xff09;&#xff0c;因其卓越的性能和微小尺寸&#xff0c;成为相机以及其他微小层面应用的理想选择&#xff0c;为科技创新提…

IDEA中,MybatisPlus整合Spring项目的基础用法

一、本文涉及的知识点【重点】 IDEA中使用MybatisPlus生成代码&#xff0c;并使用。 Spring整合了Mybatis框架后&#xff0c;开发变得方便了很多&#xff0c;然而&#xff0c;Mapper、Service和XML文件&#xff0c;在Spring开发中常常会重复地使用&#xff0c;每一次的创建、修…

pytorch学习笔记4

开启tensorboard 在terminal中输入tensorboard --logdir文件名 文件名中不能含有空格 tensorboard --logdirlogs --port6007#将端口调整为6007tensorboard --logdirlogs --port 0 自动分配一个端口&#xff0c;成功访问打开的时候如果发现没数据可以把logs换成文件夹的绝对路径…

[无监督学习] 10.详细图解PCA

PCA 在众多降维算法中&#xff0c;PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;历史悠久&#xff0c;被广泛应用于各个领域。 使用 PCA 可以将相关的多变量数据以主成分简洁地表现出来。 概述 PCA 是一种用于减少数据中的变量的算法。它对…

11.3 指针和函数

11.3 指针和函数 本节必须掌握的知识点&#xff1a; 指针作为函数的参数 数组作为函数的参数 指针作为函数的返回值 在C语言中&#xff0c;指针的一个重要作用就是作为函数参数使用&#xff0c;本节将介绍这一重要作用。 11.3.1 指针作为函数的参数 实验一百一十三&#xff…

从功能性磁共振成像(fMRI)数据重建音频

听觉是人类最重要的感官之一&#xff0c;它负责接收外部的听觉刺激&#xff0c;并将这些信息传递给大脑进行处理和理解。研究人员正致力于从神经科学和计算机科学两个领域探索人脑的听觉感知机制。一个关键目标是从人脑中解码神经信息&#xff0c;并重建原始的刺激。常见的大脑…

深入解析 YOLOv8 中的 `conv.py`(代码图文全解析-下)

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《yolov8》系列专栏&…

快速排序详讲(两种方法)

目录 原理 实现方式 正常实现 理由 先从右到左&#xff0c;在从左到右 先从左到右&#xff0c;先从右到左 挖坑法 效率 优化 测试 代码 原理 快速排序是将最左侧的数字当作关键数字&#xff0c;将关键数字放在对应位置&#xff0c;且关键数字左侧均大于它&#xff…

【深度学习】【STWave】时空图预测,车流量预测,Efficient Spectral Graph Attention Network

Spatio-Temporal meets Wavelet: Disentangled Traffic Flow Forecasting via Efficient Spectral Graph Attention Network 代码&#xff1a;https://github.com/LMissher/STWave 论文&#xff1a;https://arxiv.org/abs/2112.02740 帮助&#xff1a; https://docs.qq.com/s…

使用pycharm+opencv进行视频抽帧(可以用来扩充数据集)+ labelimg的使用(数据标准)

一.视频抽帧 1.新创建一个空Pycharm项目文件&#xff0c;命名为streach zhen 注&#xff1a;然后要做一个前期工作 创建opencv环境 &#xff08;1&#xff09;我们在这个pycharm项目的终端里面输入下面的命令&#xff1a; pip install opencv-python --user -i https://pypi.t…

【Kubernetes】Pod理论详解

一、Pod基础概念&#xff1a; Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行…

网页音频提取在线工具有哪些 网页音频提取在线工具下载

别再到处去借会员账号啦。教你一招&#xff0c;无视版权和地区限制&#xff0c;直接下载网页中的音频文件。没有复杂的操作步骤&#xff0c;也不用学习任何代码。只要是网页中播放的音频文件&#xff0c;都可以把它下载到本地保存。 一、网页音频提取在线工具有哪些 市面上的…

python的元组

元组与列表的区别 元组和列表非常相似。不同之处在于&#xff0c;外观上&#xff1a;列表是被 方括号 包裹起来的&#xff0c;而元组是被 圆括号 包裹起来的。本质上&#xff1a;列表里的元素可修改&#xff0c;元组里的元素是 不可以“增删改” 。 还有一个微妙的地方要注意…

网络研究观-20240601

新战争时代的商业风险 美国人已经将战争视为遥远战场上发生的事件。然而&#xff0c;网络空间打破了这种看法&#xff0c;让全球战争的真正影响来到了美国家门口。 攻击不再局限于遥远的战场&#xff0c;而是在最意想不到的时间和地点发动袭击。 谁将主宰第五次工业革命&…

智慧校园的机遇与挑战

随着5G、物联网、大数据等技能的日渐老练&#xff0c;数字化正在渗透到各行各业中&#xff0c;为事务立异和价值增加供给支撑。在教育职业&#xff0c;运用智能化体系赋能教育办理越来越受欢迎&#xff0c;教育信息化方针一再出台&#xff0c;进一步加快了智慧校园落地的脚步。…

Dijkstra求最短路篇一(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)

前言&#xff1a; Dijkstra算法博客讲解分为两篇讲解&#xff0c;这两篇博客对所有有难点的问题都会讲解&#xff0c;小白也能很好理解。看完这两篇博客后保证收获满满。 本篇博客讲解朴素Dijkstra算法&#xff0c;第二篇博客讲解堆优化Dijkstra算法Dijkstra求最短路篇二(全网…

联合和枚举(自定义类型)

1.枚举&#xff08;关键字&#xff1a;enum) 1.1枚举类型的声明 把可能的值一一列举 赋的值是可能取值 1.2枚举类型的优点 1&#xff09;增加代码的可读性和可维护性 2&#xff09;和#define定义的标识符比较枚举有类型检查&#xff0c;更加严谨 3&#xff09;便于调试&a…