打印菱形(两种思路)

article/2025/9/27 12:06:23

一、输入的行数等于上半部分的金字塔行数

 

 

思路:
仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。
上三角:先输出空格,后输出*,每行中空格:从上往下,一行减少一个*:2*i+1的方式递增下三角:先输出空格,后输出*,每行中空格:从上往下,每行多一个空格*: 从上往下,按照2*(line-1-i)-1的方式减少,其中:line表示总共有多少行
按照上述方式,将上三角和下三角中的空格和*分别输出即可。

以下是代码,其解析在注释中:


#include <stdio.h>
int main()
{int line = 0;scanf("%d", &line);int i = 0;//上半部分for (i = 0; i < line; i++)//外层循环是上半部分的,总行数的控制。比如你输入的line是7,那么就循环0~6。打印7行{//打印空格(上半部分的空格从上往下数,逐行减1)int j = 0;for (j = 0; j < line - 1 - i; j++)//这里的循环控制条件,比如说你输入的是7行,第1行需要打印6个空格。//如果就定义为j小于line-1它永远都是(7-1)不变,所以说需要减去i{printf(" ");}//打印*号for (j = 0; j < 2 * i + 1; j++)//因为第1行打印1个,第2行打印3个,第3行打印5个{								//就当相当于符合递增数列:2*i+1printf("*");}printf("\n");//以上两个for循环就是打印出完完整整的每一行,每一行打印完之后需要换行,打印下一行。}//下半部分for (i = 0; i < line - 1; i++)//这里的控制条件为什么是line-1呢?{							//比如说你输入的行数是7行,上面打印完7行,下面需要打印6六行,所以说控制条件是line-1//打印空格(下半部分的空格从上往下数,逐行加1)int n = 0;for (n = 0; n <= i; n++)//这里n的循环控制条件是小于等于i{						//下半部分的第1行打印1个空格,正好跟i逐层往下递增是有关联。printf(" ");}for (n = 0; n < 2 * (line - 1-i)-1; n++)//这里的循环控制条件需要自己举例推导{printf("*");}printf("\n");}return 0;
}

 

 

 

二、纯正的菱形(输入几行菱形就是几行)

思路还是跟第1种的思路是一样的,只不过多加了一个中间行m,解析在注释中:

#include<stdio.h> 
int main()
{int n, i, m, j, k;//n为输入的总行数,i为循环时表示正在第几行,m表示中间行,j表示“ ”的数量,k表示“*”的数量scanf("%d", &n);m = (n + 1) / 2;for (i = 0; i <= n; i++){if (i <= m)//分上下两部分讨论{for (j = 0; j < m - i; j++)//上半部分每一行需要打印的空格数为m-i(另外半边的空格是不需要打印的!){printf(" ");}//打印完空格后跳出循环进入到打印“*”的循环中for (k = 0; k < 2 * i - 1; k++)//上半部分每一行需打印的“*”,可把看做是数列求解通项{printf("*");}}else//现在讨论下半部分{for (j = 0; j < i - m; j++)printf(" ");for (k = 0; k <(n - (i - m) * 2); k++)//此处核心思想是用中间行的总打印数减去两边的空格数printf("*");}printf("\n");//别忘了换行}return 0;
}

        

 

        以上就是关于菱形的实例解析。如果对你有帮助,记得点赞👍+关注哦!
我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起成长吧!


http://chatgpt.dhexx.cn/article/FAemYa0u.shtml

相关文章

C语言实现——打印菱形

目录 前言 如何实现 代码实现 定义一个变量line来接收输入的行数 实现上半部分 实现下半部分 代码汇总 前言 输入一个数&#xff0c;打印对应的菱形 该菱形表现为&#xff1a; 从第一行到中间行的行数为输入的数&#xff0c; 从中间行到结束行的行数为输入的数。 如…

c语言经典例题:打印菱形

题目&#xff1a;打印出如下图案&#xff08;菱形&#xff09; 思路&#xff1a; 菱形这个图案很有趣&#xff0c;图案里的*数量&#xff0c;从上到下看&#xff0c;有着独特的规律&#xff0c; 1 &#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;5&#xff0c;3&#xf…

【C语言】打印菱形详解

打印菱形 写法一&#xff1a;下半部分的循环用i的方法打印 #include <stdio.h> int main() {int line 0;int i 0;int j 0;printf("请输入你要打印的行数\n");scanf("%d", &line);//先打印上部分的三角形for (i 1; i < line; i) //打印上…

C语言打印菱形

打印菱形这道题对于初学编程者来说简直是噩梦&#xff0c;曾经我就是栽在这上面的&#xff0c;后来编程编多了之后对打印菱形也觉得不再那么难了&#xff0c;去年在公众号写了一篇推送是关于打印菱形的&#xff0c;觉得对一些师弟师妹还是有所帮助的&#xff0c;今天就把这道题…

打印菱形图案的两种方法

打印菱形图案 本题要求编写程序&#xff0c;打印一个高度为n的、由“*”组成的正菱形图案。 输入格式: 输入在一行中给出一个正的奇数n。 输出格式: 输出由n行星号“*”组成的菱形&#xff0c;如样例所示。每个星号后跟一个空格。 输入样例: 7 输出样例: 方法一&#x…

C语言——打印菱形

输入上半部分的行数来打印出一个菱形&#xff0c;效果如图&#xff1a; 这里将他分为两部分来分析&#xff0c;主要就是找每一部分的空格个数与 * 个数的规律 分析上半部分&#xff1a; 代码如下&#xff1a; //上半部分&#xff1a;for (int i 1; i < n; i) { //行数做循…

打印菱形

各种各样的打印菱形 打印菱形 打印菱形打印挖空菱形打印数字菱形 打印菱形 1.初级版 Description 由键盘输入正数n&#xff08;n<30&#xff09;&#xff0c;要求输出如下2*n1行的菱形图案。 输入样例 2 输出样例 代码实现1&#xff1a; #include <stdio.h> #in…

打印菱形-c语言

分析&#xff1a;打印菱形&#xff0c;可以分上下两个部分来打印&#xff0c;因为上下两个部分是不一样的。 以打印7行的菱形为例&#xff1a; 上半部分&#xff1a;总共7行&#xff0c;一行一行的打印&#xff0c;先打印空格(空格控制缩进)&#xff0c;再打印*。 打印空格&am…

打印菱形(C语言)

打印菱形 首先&#xff0c;可以将菱形分成上下两部分 上部分&#xff1b; 总行数 line 1.先打印空格&#xff0c;从图中可以发现&#xff1a; 左侧空格数由(line -1)每次减少一个&#xff0c;到0为止。&#xff08;右侧同理&#xff09; 2.后打印*&#xff0c;从图中可以发现&…

如何打印菱形

方法一 拆分法 拆分法(将*和空格分开来考虑&#xff0c;简化问题)&#xff08;菱形大小无上限&#xff09; #include<stdio.h> int main() {int n 0;//输入上半行的行数scanf("%d",&n);int i 0;//打印上半行for (i 0; i < n; i){//打印空格int j 0…

详细讲解:打印菱形(随心所欲版)

C语言打印菱形--超详细讲解 文章目录 前言&#xff1a; 一、打印菱形的基本思路二、操作步骤 1.确定行数和每行中的元素个数2.打印空格和*总结 前言 在学习C语言的时候&#xff0c;会遇到打印菱形的题目。在开始时我也只是用printf函数直接打印&#xff0c;那样也可以&#xf…

C语言—打印菱形,过程分析非常详细

如何打印菱形&#xff0c;过程分析非常详细 思路&#xff1a; 要打印这个图形&#xff0c;我们应该一行行得去打印&#xff0c;每一行先打印空格&#xff0c;再打印星号&#xff0c;比如&#xff0c;第一行我们应该先打印3个空格再打印1个星号。 我们可以发现前四行空格数在减少…

【C语言练习——打印菱形及其变形】

菱形及其变形 前言1、打印菱形——中间对齐版2、打印菱形——上左下左对齐版3、打印菱形——上右下右对齐版4、打印菱形——上左下右对齐版5、打印菱形——上右下左对齐版总结 前言 菱形是一种特殊的平行四边形&#xff0c;定义见百度百科 本文主要是写关于菱形的练习题&#x…

VBA: 字典的介绍与实例

基本语句 Sub dictest() 字典简介字典对象相当于一种联合数组&#xff0c;它是由具有唯一性的关键字&#xff08;Key&#xff09;和它的项&#xff08;Item&#xff09;联合组成VBA字典有6个方法Add , Keys, Items, Exists, Remove, RemoveAllVBA字典有4个属性Count , Key, It…

VBA dictionary的用法

1.VBA中创建字典。 dictionary是保存数据键和项目对的对象。 下面代码示范如何创建 Dictionary 对象&#xff1a; Dim myd As Object Set myd CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ’添加键和项目。 d.Add "b…

VBA字典对象操作技巧

VBA 中集合的功能比较弱&#xff0c;常见的有数组 (array) 、集合 (Collection&#xff09;和字典&#xff0c;其中字典是 Key-Value Pair 类型的数据结构&#xff0c;适合按 Key 存储和查找。本篇介绍字典的操作方法。 VBA 语法本身并没有字典这种数据结构&#xff0c;需要引…

VBA 二维数组和字典

数据源: 二维数组和字典的主要使用方法 Sub test()Dim dict As ObjectSet dict CreateObject("Scripting.Dictionary")Set sh Worksheets("Sheet3")Set Rng sh.Range("A1:E" & sh.Range("E1").End(xlDown).Row)sh.Range("…

【原创】VBA学习笔记(313)VBA字典相关:遍历字典,用key查item, 用item查key的方法

1 字典的遍历方法 即使是后期绑定&#xff0c;也可以用 for each i in dict1.keys() 这里用到的 dict1.keys() 但不是 dict1.keys(i) 是可以的 Sub test_dict11()Dim dict1 As Object Set dict1 CreateObject("scripting.dictionary")dict1.Add 1, "h&qu…

【Excel VBA和Python对照学习】创建字典

Excel VBA和Python双语对照学习 我们从小学习语文&#xff0c;都用过字典。查字典时可以从第一页开始&#xff0c;一页一页地往下找&#xff0c;直到找到为止。这样做明显效率低下&#xff0c;特别是字的位置比较靠后的时候。所以查字典时不这样做&#xff0c;而是根据目录直接…

vba中字典的用法

字典对象的方法有6个&#xff1a; Add 添加一条关键字与条目 Keys 返回所有关键字(形成1维数组) Items 返回所有条目(形成1维数组) Exists 关键字是否存在(TRUE/FALSE) Remove 移除关键字与对应的条目 RemoveAll 移除所有关键字与对应的条 注意&#xff1a; 字典对象的属性有4…