打印菱形

article/2025/9/27 12:49:00

各种各样的打印菱形

打印菱形

  • 打印菱形
    • 打印挖空菱形
      • 打印数字菱形

打印菱形

1.初级版
Description
由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。

输入样例
2

输出样例在这里插入图片描述

代码实现1:

#include <stdio.h>
#include <stdlib.h>int main()
{int i,j,k,n;scanf("%d",&n);for(i=1;i<=n+1;i++){for(j=1;j<=n+1-i;j++)printf(" ");for(k=1;k<=2*i-1;k++)printf("*");printf("\n");}for(i=1;i<=n;i++){for(j=1;j<=i;j++)printf(" ");for(k=1;k<=(2*n+1)-2*i;k++)printf("*");printf("\n");}return 0;
}

解析:
分为上半部分和下半部分

上半部分
在这里插入图片描述
一共有n+1行,最外面的循环控制行数,所以有
for(i=1;i<=n+1;i++)

接下来将图形分为打印空格和打印 * 号

打印空格:
(用o代表*前的空格数)
在这里插入图片描述
可以看出
每行空格数和行数的关系是

空格=n+1-行数

所以空格处用循环
for(j=1;j<=n+1-i;j++)

打印*号:
易看出 每行 * 号和行数的关系是

*号=2×行数-1

所以打印 * 用循环
for(k=1;k<=2*i-1;k++)

每循环一行别忘了换行哦

下半部分:
在这里插入图片描述
不难看出一共有n行
控制行数用循环:for(i=1;i<=n;i++)
每行的空格数显然和该行 行序数一样
(下半部分重新从第一行开始计算 )在这里插入图片描述
所以打印空格的循环用
for(j=1;j<=i;j++)
打印*号
在这里插入图片描述
结合 * 号最多的这行来看
*和空格存在关系

2×n+1=2×空格个数+*个数

所以打印*用循环
for(k=1;k<=2 * n+1-2 * i;k++)
----------over-----------
代码实现2:(绝对值)

#include "stdio.h"
#define abs(x) ((x)>0?(x):-(x))
main()
{   int n,i,j;scanf("%d",&n);for(i=-n;i<=n;i++){for(j=1;j<=abs(i);j++)  printf(" ");for(j=1;j<=2*n+1-2*abs(i);j++)  printf("*");printf("\n");}
}

2.空心菱形

打印挖空菱形

一.打印边框菱形
在这里插入图片描述

代码

#include <stdio.h>
#include <stdlib.h>int main()
{int n;int i,j,k,l,m;scanf("%d",&n);for(i=1;i<=n;i++)printf("*");printf("\n");for(i=1;i<=(n-1)/2;i++){for(j=1;j<=(n+1)/2-i;j++)printf("*");for(k=1;k<=i;k++)printf(" ");for(k=1;k<=i-1;k++)printf(" ");for(j=1;j<=(n+1)/2-i;j++)printf("*");printf("\n");}for(i=1;i<=(n-1)/2-1;i++){for(j=1;j<=i+1;j++)printf("*");for(k=1;k<=(n+1)/2-(j-1);k++)printf(" ");for(k=1;k<=(n-1)/2-(j-1);k++)printf(" ");for(j=1;j<=i+1;j++)printf("*");printf("\n");}for(i=1;i<=n;i++)printf("*");return 0;
}

想法:
老规矩 将菱形拆分成上下两部分
这里有一点不同是原来用来呈现菱形的*号作为背景,而背景用 * 号呈现
上半部分:在这里插入图片描述
再将上半部分拆分成四个部分:左 * 左空格(图上o部分) 右空格(图上p部分) 右 *
在这里插入图片描述
我们需要寻找 * 和空格之间的关系,但如果加上顶行,我们发现好像关系比较难找,所以将第一行全是 * 的单独写一个循环实现:for(i=1;i<=n;i++)

接下来我们可以找规律了:
从有空格的一行开始计数,一共是(n-1)/2行,最外层用一个for循环控制行数:for(i=1;i<=(n-1)/2;i++)

左半部分一共是有(n+1)/2个符号,而左空格的个数刚好和行数i一致,左 * 的个数即为(n+1)/2-i个

o+ * =(n+1)/2

先打印 * :for(j=1;j<=(n+1)/2-i;j++) printf("*");
再打印空格:for(k=1;k<=i;k++) printf(" ");

/ * 右半部分(p和*)一共有(n-1)/2个符号,右 * 和左 * 个数相等,所以右空格个数=(n-1)/2-(j-1) //这里是j-1而不是j的原因是因为
右半部分:先打印空格:for(k=1;k<=(n-1)/2-j;
*/
下半部分:

在这里插入图片描述

空心菱形改进版:
描述
由键盘输入n(n为奇数),打印如下图空心菱形

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>int main()
{int n;scanf("%d",&n);int i,j,k;for(i=1;i<=(n+1)/2;i++){for(j=1;j<=(n+1)/2-i;j++)printf(" ");printf("*");for(k=1;k<=(i-1)*2-1;k++)printf(" ");if(i>=2)printf("*");printf("\n");}for(i=1;i<=(n-1)/2;i++){for(j=1;j<=i;j++)printf(" ");printf("*");if(i<(n-1)/2){for(j=1;j<=n-2*i-2;j++)printf(" ");printf("*");}printf("\n");}return 0;
}

打印数字菱形

1.在这里插入图片描述
代码

#include <stdio.h>
#include <stdlib.h>int main()
{int n,j,i,k;int m;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf(" ");for(k=1;k<=i;k++)printf("%d",k);for(m=i-1;m>=1;m--)printf("%d",m);printf("\n");}for(i=1;i<=n-1;i++){for(j=1;j<=i;j++)printf(" ");for(k=1;k<=n-i;k++)printf("%d",k);for(m=n-i-1;m>=1;m--)printf("%d",m);printf("\n");}return 0;
}

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

相关文章

打印菱形-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…

Excel VBA Dictionary excel vba 字典大全

Excel VBA Dictionary - A Complete Guide - Excel Macro Mastery A Quick Guide to the VBA Dictionary FunctionParamsEarly binding reference“Microsoft Scripting Runtime” (Add using Tools->References from the VB menu)Declare (early binding)Dim dict As Scr…

vba字典学习案例

一、案例概述&#xff1a; 本次案例主要讲解字典的学习和应用&#xff0c;通过使用字典的方式来将每一行不重复的数值进行汇总形成一个字符串&#xff0c;且将该字符串展示到指定单元格中。二、案例展示&#xff1a; &#xff08;1&#xff09;源数据&#xff1a; &#xff08;…

VBA字典(dictionary)

这是我看到的最简单明了的Excel VBA字典(dictionary)的教程&#xff0c;把字典的应用&#xff0c;用短短几百字&#xff0c;全部道尽&#xff0c;简&#xff01;但精彩&#xff01;原文如下&#xff1a; 当年我(原作者&#xff1a;彭希仁)向LDY版主求教字典的时候&#xff0c;他…

在Excel VBA中使用字典

序言 VBA的基础数据类型里面并没有字典类型&#xff0c;但字典其实在很多应用场景中都很有用&#xff0c;那么如何在VBA中使用字典&#xff0c;本文就用几个例子和大家交流探讨一下。 场景1 某个医院每天都会从不同的制造商那里进三种材料中的一种&#xff0c;每天的进价都有…

VBA -[知识点]: 字典

VBA字典 记录一次VBA字典的使用部分代码 1. VBA 中创建一个字典对象2. 字典对象添加key 和 value3. 获取字典对象的key list4. 判断是否存在某个key5. 修改字典值6. 修改字典key 名称6. 删除某个item7. 删除所有item 记录一次VBA字典的使用 部分代码 Public Sub MainRun()1. …

VBA字典(详解,示例)

文章目录 创建字典对象字典的属性|方法案例去重求和计数匹配key的组合和分割字典value多字段累加字典求和和计数同时进行类似sql的join操作 创建字典对象 后期绑定&#xff1a;方便代码在其他电脑上运行&#xff0c;推荐。 dim dic as object Set dic CreateObject("scr…

JavaScript 动态生成表格

要求&#xff1a; HTML标签只写一行表头通过JS来写动态的表格&#xff08;有多少组数据&#xff0c;就自动创建多少行表格&#xff09;为学习和演示&#xff0c;采用固定的数据&#xff0c;不涉及调用后台数据 实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html…