牛客网刷题 | BC107 箭形图案

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

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

感谢阅读!

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


描述

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

输入描述:

本题多组输入,每行一个整数(2~20)。

输出描述:

针对每行输入,输出用“*”组成的箭形。


思路 :

也可以分为上下两部分 上面n行 下面n+1行

由空格和星号组成 两个控制

一个控制打印每行星号一个控制打印空格

  1. 读取输入:使用scanf函数读取用户输入的整数n。

  2. 打印上半部分:对于每一行i(从1到n),计算空格数为n - i,星号数为2 * i - 1。使用循环打印空格和星号。

  3. 打印下半部分:对于每一行i(从n-1到1),计算空格数为n - i,星号数为2 * i - 1。同样使用循环打印空格和星号。

  4. 输出换行:每打印完一行后,使用printf("\n")输出换行符。


代码 1 :

#define _CRT_SECURE_NO_WARNINGS
/*
思路 : 也可以分为上下两部分 上面n行 下面n+1行
由空格和星号组成 两个控制
一个控制打印每行星号一个控制打印空格
*/
# 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;
            //打印空格
            //分析 上半部分的 空格 与n是双倍关系
            //例如输入3 第一行是 6 个空格 第二行 4个空格 第三行 2个空格
            //for (j = 0; j < n * 2 - 2; j++) error
            //上面的代码 n*2-2 是不对的 空格数没有随着变化 所以改成
            //因为由题目可知 
            //当i为0的时候 正好是6 个空格 i为1的时候 为4个空格
            //......
            for(j = 0; j < n*2-2*i;j++)
            {
                printf(" ");
            }
            for (j = 0; j <= i; j++)
            {
                printf("*");
            }
            printf("\n");

        }
        for (i = 0; i < n + 1; i++)
        {
            int j = 0;
            //控制空格
            //例如输入 3 
            //空格数从 0 2 4 6 以此累积
            //从上半部分可以看出 与i有关 2倍的关系
            //for (j = 0; j < n + 2 * i; j++) error
            //for (j = 0; j < n - 2 * i; j++) error
            //上面两个代码是错误的 
            //原因是因为不能出现 n 因为一出现n的话 n是用户输入的数值 
            //就代表有数值,也有空格数了 当 i为0的时候 正好打印4个星星
            //i为1的时候打印 三个星星 
            //空格数从 0 2 4 6 以此累积

            for (j = 0; j < 2 * i; j++)//正确
            {
                printf(" ");
            }
            //假如输入 3 
            //这里的for循环 中 n+1-i 它的第一行星星数 4 3 2 1 
            //因为 以此递减的 而减去 i 正好
            for (j = 0; j < n + 1 - i; j++)
            {
                printf("*");
            }
            printf("\n");
        }
    }

    return 0;
}

 代码 2 :

#include<stdio.h>
int main()
{
    int num;
    int i,j,k;
    while(scanf("%d",&num)!=EOF)
        //将火箭图案从中间分开 上部分一个大循环 下部分一个循环
    {
        for(i=0;i<=num;i++)//上部分循环从此开始  此处确定了上部分循环的行数
        {
            for(j=0;j<num-i;j++)//此处为先开始打印空格
            {
                printf("  ");
            }
            for(k=0;k<=i;k++)//此处打印图案*
            {
                printf("*");
            }
            printf("\n");//至此一次大循环完成 打印了一行的图形 在此换行
        }
        for(i=0;i<num;i++)
        {
            for(j=0;j<=i;j++)
            {
                printf("  ");
            }
            for(k=0;k<num-i;k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}

————————————————————————————————————————————————————————————————

#include<stdio.h> // 包含标准输入输出库

int main() // 主函数入口
{
    int num; // 用于存储用户输入的行数
    int i, j, k; // 循环计数器

    while(scanf("%d",&num)!=EOF) // 当输入不是文件结束符时,循环读取输入
    {
        // 上半部分循环
        for(i = 0; i <= num; i++) // 确定上部分循环的行数,从0到num
        {
            // 打印空格
            for(j = 0; j < num - i; j++) // 根据当前行数i,计算并打印相应数量的空格
            {
                printf("  "); // 打印两个空格
            }
            // 打印星号
            for(k = 0; k <= i; k++) // 打印当前行的星号,数量从0增至i
            {
                printf("*"); // 打印一个星号
            }
            printf("\n"); // 完成一行的打印,换行
        }

        // 下半部分循环
        for(i = 0; i < num; i++) // 确定下部分循环的行数,从0到num-1
        {
            // 打印空格
            for(j = 0; j <= i; j++) // 根据当前行数i,计算并打印相应数量的空格
            {
                printf("  "); // 打印两个空格
            }
            // 打印星号
            for(k = 0; k < num - i; k++) // 打印当前行的星号,数量从num-i递减至0
            {
                printf("*"); // 打印一个星号
            }
            printf("\n"); // 完成一行的打印,换行
        }
    }

    return 0; // 程序正常结束
}

  

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

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

相关文章

IO流(2)

缓冲流 字节缓冲流 利用字节缓冲区拷贝文件&#xff0c;一次读取一个字节&#xff1a; public class test {public static void main(String [] args) throws IOException {//利用字节缓冲区来拷贝文件BufferedInputStream bisnew BufferedInputStream(new FileInputStream(&…

【CTF MISC】XCTF GFSJ0008 low Writeup(LSB隐写+QR Code识别)

low 暂无 解法 用 StegSolve 打开&#xff0c;Green plane 1 中疑似隐藏有二维码。 使用大佬写的代码&#xff1a; from PIL import Imageimg Image.open("./low.bmp") img_tmp img.copy() pix img_tmp.load() width, height img_tmp.size for w in range(wid…

[论文精读]Supervised Community Detection with Line Graph Neural Networks

论文网址:[1705.08415] Supervised Community Detection with Line Graph Neural Networks (arxiv.org) 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 ⭐内涵大量可视…

基于Springboot开发的外卖餐购项目(后台管理+消费者端)

免费获取方式↓↓↓ 项目介绍039&#xff1a; 系统运行 后端登录页: http://localhost:8081/backend/page/login/login.html 消费端请求:消费端主页: http://localhost:8081/front/index.html 管理员账号 admin 123456 消费者不需要登录 采用技术栈 前端&#xff1a;Eleme…

嵌入式期末复习

一、选择题&#xff08;20&#xff09; 二、判断题&#xff08;10&#xff09; 三、填空题&#xff08;10&#xff09; 主机-目标机的文件传输方式主要有串口传输方式、网络传输方式、USB接口传输方式、JTAG接口传输方式、移动存储设备方式。常用的远程调试技术主要有 插桩/st…

设计模式(八)结构型模式---装饰者模式

文章目录 装饰者模式简介结构UML图具体实现UML图代码实现 装饰者模式简介 装饰者模式&#xff08;Decorator Pattern&#xff09;是动态的将新对象依附到对象上。相当于对象可以包裹对象本身&#xff0c;然后可以根据递归方式获取想要的信息。实际使用&#xff1a; JDK中的IO流…

python根据版本下载外部库的.whl文件、python下载离线whl文件、python查找whl历史版本

文章目录 一、python下载外部库的.whl文件 当遇到pip源中没有对应的包&#xff0c;或者网络波动时&#xff0c;可能出现需要离线安装的方法。这里记录一下下载安装whl文件的操作。 一、python下载外部库的.whl文件 1、在浏览器输入https://pypi.org/进入PYPI官网 2、在弹出的…

LitCTF 2024(公开赛道)——WP

目录 Misc 涐贪恋和伱、甾―⑺d毎兮毎秒 你说得对&#xff0c;但__ 盯帧珍珠 Everywhere We Go 关键&#xff0c;太关键了! 女装照流量 原铁&#xff0c;启动&#xff01; 舔到最后应有尽有 The love Web exx 一个....池子&#xff1f; SAS - Serializing Authent…

WSL2-Ubuntu22.04-配置

WSL2-Ubuntu22.04-配置 准备1. WSL相关命令[^1]2. WSL2-Ubuntu22.04可视化3. WSL2 设置 CUDA4. 设置OpenGL 本文介绍了WSL2的基本使用方法及可视化&#xff0c;着重介绍了GPU和OpenGL的设置。 准备 名称版本windows11wsl2CUDA12.5 1. WSL相关命令1 查看已安装的wsl distribut…

大话C语言:第21篇 数组

1 数组概述 数组是若干个相同类型的变量在内存中有序存储的集合。 数组是 C 语言中的一种数据结构&#xff0c;用于存储一组具有相同数据类型的数据。 数组在内存中会开辟一块连续的空间 数组中的每个元素可以通过一个索引&#xff08;下标&#xff09;来访问&#xff0c;索…

网上帮别人开网店卖货的骗局!

小红书帮别人开店卖货的骗局主要涉及到一些不法分子利用小红书平台的流量和用户信任度&#xff0c;通过虚假宣传、承诺高额利润等手段&#xff0c;诱骗用户开店并**所谓的“赚钱机会”。 这些骗局往往以“轻松创业、快速致富”为诱饵&#xff0c;吸引那些对创业充满热情但缺乏经…

汽美汽修店管理系统会员小程序的作用是什么

汽车后市场汽美汽修赛道同样存在着大量商家&#xff0c;连锁品牌店或个人小店等&#xff0c;门店扎堆且区域覆盖面积广&#xff0c;当然每天车来车往也有不少生意。 随着线上化程度加深和商家不断拓展市场的需要&#xff0c;传统运营模式可能难以满足现状&#xff0c;尤其是年…

多个短视频剪辑成一个视频:四川京之华锦信息技术公司

多个短视频剪辑成一个视频&#xff1a;创作中的艺术与技术 在数字时代&#xff0c;短视频以其短小精悍、内容丰富的特点&#xff0c;迅速成为社交媒体上的热门内容形式。然而&#xff0c;有时单一的短视频难以完全表达创作者的意图或满足观众的观赏需求。因此&#xff0c;将多…

【Qt秘籍】[009]-自定义槽函数/信号

自定义槽函数 在Qt中自定义槽函数是一个直接的过程&#xff0c;槽函数本质上是类的一个成员函数&#xff0c;它可以响应信号。所谓的自定义槽函数&#xff0c;实际上操作过程和定义普通的成员函数相似。以下是如何在Qt中定义一个自定义槽函数的步骤&#xff1a; 步骤 1: 定义槽…

springboot+vue+mybatis博物馆售票系统+PPT+论文+讲解+售后

如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统博物馆售票系统信息管理难度大&#xff0c;容错率低&#xff0c;…

高速模拟信号链的设计学习

目录 概述&#xff1a; 定义&#xff1a; 断开&#xff1a; 链路设计&#xff1a; 结论&#xff1a; 概述&#xff1a; 由于对共模参数及其与设备之间的关联缺乏了解&#xff0c;客户仍然会提出许多技术支持问题。ADC数据表指定了模拟输入的共模电压要求。关于这方面没有太…

物联网实战--平台篇之(十二)设备管理前端

目录 一、界面演示 二、设备列表 三、抖动单元格 四、设备模型 五、设备编辑 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.htm…

彩灯控制器设计 74ls160+ne555实现

一、选题背景 数字电子技术在我们生活中的应用非常之广泛,不论是在各个方面都会涉及到它,小到家用电器的自动控制,大到神舟九号和天空一号航天器的设计,都无可避免的要运用它。并且鉴于以理论推动实践及理论实践相结合为指导思想,特此用我们所学的理论知识来实践这次课程设…

Nginx编译安装,信号,升级nginx

编译安装nginx&#xff1a;前面博客有写编译安装过程 systemctl stop firewalld setenforce 0 mkdir /data cd /data wget http://nginx.org/download/nginx-1.18.0.tar.gz tar xf nginx-1.18.0.tar.gz cd nginx-1.18.0/ yum -y install make gcc pcre-devel openssl-devel …