牛客网刷题 | BC103 金字塔图案

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

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

感谢阅读!

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


描述

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

输入描述:

多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,,也表示输出行数。

输出描述:

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


思路 :

首先可以想到这个由普通的直角三角形进行添加空格的操作

然后变成金字塔的形状 也是先打印空格 然后再打印星号加空格

*

**

***

****

*****

.......

由上面的直角三角形变形而来

先在星号后面加空格

然后在空格和星号前面加空格

 


  1. 理解问题:首先,要清楚题目要求打印一个等腰三角形图案,该三角形由星号(*)组成,且星号后面跟着一个空格。

  2. 确定输入:题目要求输入一个整数(2~20),这个整数表示金字塔一边的星号数量,同时也决定了打印的行数。

  3. 确定输出格式:每行的星号数量从1开始递增,直到达到最底层的n个星号。每行星号之间用空格分隔,星号后面也要跟一个空格。空格的数量需要根据当前行的位置来确定,以保证星号居中对齐。

  4. 设计算法

    • 使用一个外部循环(for循环)来控制行数,循环变量i从1遍历到n。
    • 对于每一行,首先需要打印一定数量的空格,使得星号能够居中。空格的数量可以通过(n - i) * 2来计算,因为除了最中间的星号外,每增加一行,两边都会多出一个空格。
    • 接着,使用一个内部循环(另一个for循环)来打印星号。每行的星号数量为2 * i - 1,这是因为除了第一行和最后一行外,其他每行的星号数量都是奇数,并且随着行数的增加,星号数量线性增加。
    • 每行打印完成后,使用printf("\n")输出一个换行符,以便开始打印下一行。
  5. 编写代码:根据上述算法设计,编写C语言代码实现功能。

  6. 处理多组输入:题目中提到有多组输入,因此使用while循环结合scanf函数来持续读取输入,直到EOF(文件结束符)。


代码 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;for(j=n-1;j>i;j--)//控制每行的空格 尤其要注意 j=n-1 //不能写成 j=n{printf(" ");}for(j=0;j<=i;j++)//这是打印星号和空格的循环{printf("* ");}printf("\n");}}return 0;
}-------------------------------------------------------------------
#include <stdio.h> // 包含标准输入输出库int main() // 主函数的开始
{int n = 0; // 定义一个整型变量n,用于存储用户输入的金字塔一边的长度// 使用while循环来处理多组输入直到文件结束符EOFwhile(scanf("%d",&n)!=EOF){int i = 0; // 定义一个整型变量i,用于控制外层循环,表示当前的行数// 外层循环,控制打印金字塔的每一行for(i = 0; i < n; i++) // 从第0行开始,直到第n-1行{int j = 0; // 定义一个整型变量j,用于控制内层循环// 内层第一个for循环,控制每行前面的空格数量// 空格的数量从最后一行的0个空格递增到第0行的n-1个空格for(j = n - 1; j > i; j--) // 从n-1开始递减到i,打印空格{printf(" "); // 打印一个空格}// 内层第二个for循环,控制每行打印星号和空格// 星号的数量随着行数的递增而递增,从第0行的1个星号到第n-1行的n个星号for(j = 0; j <= i; j++) // 从0开始递增,打印i+1个星号和空格{printf("* "); // 打印一个星号和一个空格}printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印}}return 0; // 主函数结束,返回0表示程序正常结束
}

程序使用while循环来处理多组输入,直到遇到EOF。在每次循环中,首先读取用户输入的整数n,这个整数表示金字塔一边的长度。

外层for循环控制打印金字塔的行数,从第0行开始直到第n-1行。

对于每一行,首先是内层第一个for循环,用于打印空格,空格的数量从最后一行的0个递增到第0行的n-1个。

接着是内层第二个for循环,用于打印星号和空格,星号的数量从第0行的1个递增到第n-1行的n个。

每完成一行的打印后,使用printf("\n")来换行,准备打印下一行。当所有行都打印完毕后,while循环结束,程序返回0,表示正常退出。

代码 2 :

#include <stdio.h>int main() {int n;// 使用while循环处理多组输入直到EOFwhile (scanf("%d", &n) != EOF) {// 外层循环控制打印的行数for (int i = 1; i <= n; i++) {// 打印空格,使星号居中for (int j = 0; j < (n - i) * 2; j++) {printf(" ");}// 打印星号,每行的星号数量为2*i - 1for (int k = 1; k <= 2 * i - 1; k++) {printf("* ");}// 每行结束后换行printf("\n");}}return 0; // 程序结束
}

代码 3 :

//对于有行有列的图形采用双循环,i控制行,j控制列
//对于这种金字塔,倒三角,我们可以先利用循环把空格打印出来,然后在相应的位置放上*.
#include<stdio.h>
int main()
{int i,j,n;while (scanf("%d", &n) != EOF) {for (int i = 0; i < n; i++) {  //行for (int j = 0; j <n - i-1; j++) {//列,观察列与行的关系printf(" ");}for (int j = 0; j<= i; j++) {printf("* ");}printf("\n");}}
}-----------------------------------------------------------------------------#include <stdio.h> // 引入标准输入输出库函数int main() // 主函数开始
{int i, j, n; // 定义三个整型变量i, j, n,分别用于控制行数,列数和读取用户输入的金字塔边长// 使用while循环处理多组输入直到文件结束符EOFwhile (scanf("%d", &n) != EOF){// 外层循环,控制金字塔的行数,从0到n-1for (int i = 0; i < n; i++){// 内层第一个循环,控制每行前面的空格数量// 空格的数量为n - i - 1,随着行数增加,前面的空格减少for (int j = 0; j < n - i - 1; j++) // 列循环,打印空格{printf(" "); // 打印一个空格}// 内层第二个循环,控制每行打印星号的数量// 星号的数量为i + 1,随着行数增加,星号数量增加for (int j = 0; j <= i; j++) // 列循环,打印星号和空格{printf("* "); // 打印一个星号和一个空格}printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印}}return 0; // 主函数结束,返回0表示程序正常退出
}

程序使用while循环来处理多组输入,直到遇到EOF。在每次循环中,首先读取用户输入的整数n,这个整数表示金字塔一边的长度。

外层for循环控制打印金字塔的行数,从第0行开始直到第n-1行。对于每一行,首先是内层第一个for循环,用于打印空格,空格的数量为n - i - 1

接着是内层第二个for循环,用于打印星号和空格,星号的数量为i + 1

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

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

  

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

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

相关文章

AI发展的探索与未来展望

随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;技术已经成为当今社会最热门的话题之一。从简单的自动化任务到复杂的决策支持系统&#xff0c;AI技术正以前所未有的速度改变着我们的世界。本文将深入探讨AI技术的发展历程、当前应用、面临的挑战以及未来的…

C++:细谈Sleep和_sleep

ZINCFFO的提醒 还记得上上上上上上上上上上上上上上上上上上&#xff08;上的个数是真实的&#xff09;篇文章吗&#xff1f; 随机应变——Sleep()和_sleep() 但在ZINCFFO的C怪谈-02中&#xff1a; 我不喜欢Sleep...... 奤&#xff1f;媜煞鷥&#xff01; 整活&#xff01;…

Java的JDK环境变量配置(Windows)

只写了需要配置的环境变量 注&#xff1a;从JDK1.5开始&#xff0c;配置Java环境变量时&#xff0c;不再需要配置CLASSPATH&#xff0c;只需要配置JAVA_HOME和Path 1、配置JAVA_HOME 找到自己的JDK位置&#xff0c;我这里是 C:\dev\java\jdk-17.0.119在环境变量-系统变量中&…

电商商城管理系统

前言&#x1f440;~ 将近一个月没更新了&#xff0c;最近忙着学校的大作业&#xff0c;一个是微信小程序的、一个是互联网编程的&#xff0c;也是忙完了这个大作业&#xff0c;这个大作业前端使用了vue、后端使用了java&#xff0c;接下来展示一些效果图&#xff0c;如果有需要…

计算机组成考试测试题

1.下列陈述中正确的是 ( ) 。 A.在DMA周期内&#xff0c;CPU不能执行程序 B.中断发生时&#xff0c;CPU首先执行入栈指令将程序计数器内容保护起来 C.DMA传送方式中,DMA控制器每传送一个数据就窃取一个指令周期 D.输入输出操作的最终目的是要实现 CPU与外设之间的数据传输 res…

负数二进制转成十进制

如果a ’1‘*32&#xff0c;由于a的第0位是’1‘&#xff0c;那么a为负数 转成十进制的负数分成三步&#xff1a; 1.num int&#xff08;a,2) -1 2.num num^0xffffffff ,其中有八个f 3.num -num a 11111111111111111111111111111111 num int(a,2)-1 num num^0xfffffff…

深度学习复盘与论文复现A

文章目录 一、查漏补缺复盘1、python中zip()用法2、Tensor和tensor的区别3、计算图中的迭代取数4、nn.Modlue及nn.Linear 源码理解5、知识杂项思考列表6、KL散度初步理解 二、处理多维特征的输入1、逻辑回归模型流程2、Mini-Batch (N samples) 三、加载数据集1、Python 魔法方法…

javascript读取本地目录

在JavaScript中&#xff0c;直接读取本地目录的能力受到浏览器安全限制&#xff0c;因为出于隐私和安全考虑&#xff0c;浏览器的JavaScript环境通常不允许直接访问用户的文件系统。然而&#xff0c;随着Web技术的发展&#xff0c;一些现代浏览器引入了File System API或Web Fi…

TPL0401B使用教程

1.前言 前面做程控放大器的时候&#xff0c;有除开AD602&#xff0c;还有一个AD620&#xff0c;性能更好&#xff0c;不过是通过外部电阻来控制放大倍数的&#xff0c;不过要是接滑动变阻器就太不优雅了&#xff0c;而且单片机怎么控制滑动变阻器&#xff1f;&#xff08;难不…

C++双层Vector容器详解

双层Vector容器 关于C中二维vector使用 双层vector的运用细节 插入元素 //正确的插入方式 vector<vector<int> > A; //A.push_back里必须是vector vector<int> B; B.push_back(0); B.push_back(1); B.push_back(2); A.push_back(B); B.clear(); B.push_back…

MySQL:CRUD进阶(七千五百字)

文章目录 前置文章&#xff1a;&#x1f4d1;1. 数据库约束&#x1f324;️1.1 约束类型&#x1f324;️1.2 NULL约束&#x1f324;️1.3 Unique&#xff1a;唯一约束&#x1f324;️1.4 Default&#xff1a;默认值约束&#x1f324;️1.5 Primary key&#xff1a;主键约束&…

Python解方程demo:scipy.optimize -root

该代码利用Python实现解方程功能 使用了scipy.optimize root 求解方程 可以正常调用numpy提供的数学计算函数可以给创建的方程传参 # 导入所需的模块 from scipy.optimize import root import numpy as np# 定义待求解方程 def Equation1(n_eff2, b_1, n_0, n_1, n_2, mode_n…

RK3588搭建QT开发环境

目录 1 我的RK3588开发板 2安装opencv 3 安装QT 4 摄像头节点 1 我的RK3588开发板 我把它放客厅了&#xff0c;连接电视。然后我在书房远程登录做开发&#xff0c; 2安装opencv 这里不下载源码编译了&#xff0c;直接用apt-get安装opencv sudo apt-get update sudo apt-g…

使用eclipse自动生成实体类

前言 在软件开发过程中&#xff0c;经常需要创建大量的实体类来映射数据库表或者表示业务模型。手动编写实体类既费时又容易出错&#xff0c;因此许多集成开发环境&#xff08;IDE&#xff09;提供了自动生成实体类的功能。本篇博客将介绍如何在 Eclipse 中内置功能来快速生成实…

最新的CleanMyMac X4.15.4中文破解版新功能介绍及CleanMyMac 安装激活指南

知名的Mac系统清理软件CleanMyMac发布了最新的CleanMyMac X4.15.4&#xff0c;更换了矩形图标&#xff0c;更好的融合和兼容macOS Snoma系统。新版CleanMyMac 支持Intel芯片和苹果M1/M2芯片的Mac。 优化 Mac 电脑&#xff0c;用 CleanMyMac X4.15.4中文版 就够了&#xff01;强…

std::string :我是真的不想拼接字符串啊~~~那就“汉阳造”吧

一、场景和炼狱 我想&#xff0c;你肯定也遇到过这样的场景&#xff0c;传入的多个参数要通过字符串拼接成一条指令&#xff0c;各种数据类型&#xff08;我们先只说基本数据类型&#xff09;&#xff0c;然后一通转换&#xff0c;一通拼接。如果处理的多了&#xff0c;这也将…

三丰云评测:免费虚拟主机和免费云服务器体验

今天我来为大家分享一下我的三丰云评测体验。三丰云是一家提供免费虚拟主机和免费云服务器的服务商&#xff0c;为了方便大家了解他们的服务&#xff0c;我特地注册了他们的免费虚拟主机和免费云服务器进行试用。在实际体验中&#xff0c;我发现三丰云的服务表现非常出色。首先…

Multipass虚拟机磁盘扩容

Multipass 是一个用于轻松创建和管理 Ubuntu 虚拟机的工具&#xff0c;特别适合开发环境。要使用 Multipass 扩大虚拟机的磁盘容量&#xff0c;你需要经历几个步骤&#xff0c;因为 Multipass 自身并不直接提供图形界面来调整磁盘大小。不过&#xff0c;你可以通过结合 Multipa…

HTTP的系统登录页面,如何避免明文传输用户密码?

对于系统登录页面来说&#xff0c;我们作为开发人员&#xff0c;应该没有陌生的吧。就像下面这样子。 点击登录&#xff0c;调用/login 接口。来看下面截图中的 载荷(payload)数据&#xff0c;其中&#xff0c;密码 password 的值是明文。 如果你的站点使用的是HTTPS协议&…

SO3控制器原理与实现(对飞行器的控制实践)

SO3控制器原理与实现 1. 概述 SO3Control是一个基于SO(3)特殊正交群的姿态控制器&#xff0c;用于控制四旋翼等飞行器的姿态。该控制器输入期望的位置、速度、加速度以及偏航角&#xff0c;输出期望的力和四元数表示的姿态。 具体应用为当有一条三维轨迹的时候&#xff0c;控…