广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言详解实现字符菱形的方法
  • 179
分享到

C语言详解实现字符菱形的方法

2024-04-02 19:04:59 179人浏览 独家记忆
摘要

目录前言1.定义stdio.h头文件2.定义主函数3.定义行数-单数4.得出分割行数5.定义字符6.初始化打印字符数与打印空白数7.循环打印菱形8.打印上部分9.打印剩下部分10.完

前言

好,今天就来讲一下如何解这道题。

#include<stdio.h>
 
main()
{
    char ch = getchar();
    printf("  %c  \n %c%c%c \n%c%c%c%c%c\n %c%c%c \n  %c  \n",ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch);
}

好的,讲解完了再见。

等等,骗你的,上面是死方法,下面才是活方法。

1.定义stdio.h头文件

想必大家都会,我不信,有人不会。

#include<stdio.h>//定义stdio.h头文件

2.定义主函数

这也是很简单的。

int main()//主函数
{
    return 0;
}

3.定义行数-单数

制造一个字符菱形,我们先需要定义一个他的大小,也就是行数,一个完美的菱形,它的行数一定是单数。

{
    int hang;//定义行数-单数
    printf("定义行数-单数:");
    scanf("%d", &hang);//定义行数-单数
}

4.得出分割行数

通过我们定义的行数,得出上下分割部处的行数。

{
    int shang_xia = (hang / 2 + 1);//定义分割行数
}

5.定义字符

定义字符需要注意一点,我们先前定义了行数,其中缓存区有个回车,我们得先清除一下缓存区,这里我推荐用setbuf(stdin, NULL),清除缓存区,主要是方便。

{
    setbuf(stdin, NULL);//清除缓存域
	printf("定义字符:");
	char a = getchar();//定义字符
}

6.初始化打印字符数与打印空白数

刚开始我们打印的字符数,与空白数肯定要初始化一下,字符数刚开始都是1,这不用想,还有空白数的话,这是行数hang/2,因为行数是单数,所以/2后,会空出一个格子。

{
    int ci = 1,//定义打印字符数
		kon_ci = hang / 2;//定义打印空白数
}

7.循环打印菱形

首先我们打印菱形,肯定需要一个大循环,每打印一行,都需要一个回车,所以这边直接加上,行数减一防止多打一个回车影响美观。

for (int i = 0; i < hang; i++)//循环打印菱形
{
    //打印到上部分
    //打印剩下部分
	if(i<hang-1)//防止多打
	    printf("\n");//打印回车
}

8.打印上部分

打印上半部分,这时候就需要我们的分割行数,上半部分的打印是,先利用循环打印空白,再打印字符数,因为菱形每层更加饱满,所以空白数要减少一点,还打印的字符要加两个,再打印回车。按照这个原理循环,上半部分就成功了。

{
    if (i < shang_xia)//打印上部分
		{
			for (int j = 0; j < kon_ci; j++)//打印空白数
				printf(" ");打印空白
			for (int j = 0; j < ci; j++)//打印字符数
				printf("%c", a);//打印字符
			ci += 2;//每次打印字符数+2
			kon_ci--;//每次空白数-1
		}
}

9.打印剩下部分

打印剩下部分就比较简单了,上面每次空白减1,这里就加1,上面字符加2,这你就减2,跟他反着来就行了,不知道你们有没有注意到,上面有一个减一和加二,运算之后没有用到,所以我们得先减去。之后就完成了。

{
    if (i > hang / 2)//打印剩下部分
		{
			if (i == shang_xia)//打印到分割行数时多加一次没用,所以减去
			{
				ci -= 2;//每次打印字符数-2
				kon_ci++;//每次空白数+1
			}
			ci -= 2;//每次打印字符数-2
			kon_ci++;//每次空白数+1
			for (int j = 0; j < kon_ci; j++)//打印空白数
				printf(" ");//打印空白
			for (int j = 0; j < ci; j++)//打印字符数
				printf("%c", a);//打印字符
		}
}

10.完整代码

第1次做有点水,请多多海涵。

#include<stdio.h>//定义stdio.h头文件
 
int main()//主函数
{
	int hang;//定义行数-单数
	printf("定义行数-单数:");
	scanf("%d", &hang);//定义行数-单数
	int shang_xia = (hang / 2 + 1);//定义分割行数
	setbuf(stdin, NULL);//清除缓存域
	printf("定义字符:");
	char a = getchar();//定义字符
	int ci = 1,//定义打印字符数
		kon_ci = hang / 2;//定义打印空白数
	for (int i = 0; i < hang; i++)//循环打印菱形
	{
		if (i < shang_xia)//打印上部分
		{
			for (int j = 0; j < kon_ci; j++)//打印空白数
				printf(" ");打印空白
			for (int j = 0; j < ci; j++)//打印字符数
				printf("%c", a);//打印字符
			ci += 2;//每次打印字符数+2
			kon_ci--;//每次空白数-1
		}
		if (i > hang / 2)//打印剩下部分
		{
			if (i == shang_xia)//打印到分割行数时多加一次没用,所以减去
			{
				ci -= 2;//每次打印字符数-2
				kon_ci++;//每次空白数+1
			}
			ci -= 2;//每次打印字符数-2
			kon_ci++;//每次空白数+1
			for (int j = 0; j < kon_ci; j++)//打印空白数
				printf(" ");//打印空白
			for (int j = 0; j < ci; j++)//打印字符数
				printf("%c", a);//打印字符
		}
		if(i<hang-1)//防止多打
			printf("\n");//打印回车
	}
	return 0;
}

11.完整效果

录屏链接

到此这篇关于C语言详解实现字符菱形的方法的文章就介绍到这了,更多相关C语言 字符菱形内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言详解实现字符菱形的方法

本文链接: https://www.lsjlt.com/news/146039.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言详解实现字符菱形的方法
    目录前言1.定义stdio.h头文件2.定义主函数3.定义行数-单数4.得出分割行数5.定义字符6.初始化打印字符数与打印空白数7.循环打印菱形8.打印上部分9.打印剩下部分10.完...
    99+
    2022-11-13
  • C语言实现字符串字符反向排列的方法详解
    目录前言非递归方法1.循环实现2.函数实现递归方法1.递归方法2.递归方法小结前言 重点的话说在前头,注意不是逆序打印 今天写题,碰到一个很好的题,在这里来个大家做个分享,我会用多种...
    99+
    2022-11-13
  • 详解C语言对字符串处理函数的实现方法
    目录strlen:1.计数器版本:2.递归的版本3.指针-指针版本strcat:strcmp:总结strlen: 1.计数器版本: #include<stdio.h>...
    99+
    2022-11-12
  • C语言实现短字符串压缩的三种方法详解
    目录前言一、通用算法的短字符压缩二、短字符串压缩(1)Smaz(2)Shoco(3)Unisox2三、总结前言 上一篇探索了LZ4的压缩和解压性能,以及对LZ4和ZSTD的压缩、解压...
    99+
    2022-11-13
    C语言短字符串压缩 C语言 字符串压缩
  • C语言长字符串的换行方法详解
    目录1.长字符串示例2.书写长字符串的换行方法方法一:利用双引号对长字符串进行换行方法二:利用反斜杠对长字符串进行换行3.总结在编写C程序时,如果想要打印某个字符串,而字符串的内容比...
    99+
    2022-11-12
  • 详解C语言内核字符串转换方法
    在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING,这两种格式是微软推出的安全版本的字符串结构体,也是微软推荐使用的格式,通常情况下ANSI_STRIN...
    99+
    2022-11-13
  • C语言详解Z字形变换排列的实现
    目录方法一方法二题目链接:Z 字形变换 方法一 ——找规律模拟数组 题目要求构造一个从左到右的Z型矩阵。 通过分析,可以看出这个Z型矩阵的特点 Z型矩阵就...
    99+
    2022-11-13
  • C语言递归实现字符串逆序的方式详解
    C语言实现字符串逆序,具体内容如下所示: 一、迭代的方式实现 贴上代码:迭代的方式实现 '//字符串逆序:不可用字符串操作函数' #include <stdio.h&g...
    99+
    2022-11-12
  • 详解C++中菱形继承的原理与解决方法
    目录菱形继承形成原因应对方案虚继承 vitrual解决二义性变量内存布局–虚基表感悟菱形继承形成原因 多继承,呈菱形状 菱形继承代码: class A { publi...
    99+
    2023-02-01
    C++菱形继承原理 C++菱形继承解决方法 C++菱形继承
  • C语言字符串左旋的两种实现方法
    目录题目内容:方法一:方法2:三步翻转法补充:C语言--左旋字符串中的k个字符总结题目内容: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA。 ...
    99+
    2023-02-06
    c语言字符串左移 左旋转字符串 c语言字符串左旋
  • C语言实现井字棋详解
    目录1.主函数2.menu菜单3.test函数4.game函数(1)4.1数据存储的二维数组:InitBoard4.2棋盘的打印:DisplayBoard4.3玩家下棋:Player...
    99+
    2022-11-12
  • c语言查找字符串指定字符的方法
    小编给大家分享一下c语言查找字符串指定字符的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器...
    99+
    2023-06-14
  • C语言的字符函数和字符串函数详解
    目录0. 前言1.函数介绍及部分函数模拟实现1.1 strlen模拟实现1.2 strcpy模拟实现1.3 strcat模拟实现1.4 strcmp 模拟实现1.5 str...
    99+
    2022-11-13
  • C语言字符串压缩之ZSTD算法详解
    目录前言一、zstd压缩与解压二、ZSTD压缩与解压性能探索三、zstd的高级用法四、总结前言 最近项目上有大量的字符串数据需要存储到内存,并且需要储存至一定时间,于是自然而然的想到...
    99+
    2022-11-13
    C语言字符串压缩 C语言 ZSTD算法 C语言 ZSTD 字符串压缩
  • C语言操作符#与##使用方法详解
    目录一、# 运算符二、## 运算符三、小结一、# 运算符 # 运算符用于在预处理期将宏参数转换为字符串# 的转换作用是在预处理期完成的,因此只在宏定义中有效编译器不知道 # 的转换作...
    99+
    2022-11-13
  • C语言字符串替换空格实例详解
    目录一、题目描述二、思路分析三、整体代码总结一、题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例: 输入:s = "We a...
    99+
    2022-11-13
  • C语言中字符串的两种定义方式详解
    目录方式1方式2总结我们知道C语言中是没有字符串这种数据类型的,我们只能依靠数组进行存储,即字符数组,而我们定义并且初始化数组有两种方式。下面将给大家介绍这两种方式并且介绍这两种方式...
    99+
    2022-11-12
  • C语言中字符串的定义方法
    本篇内容介绍了“C语言中字符串的定义方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • C语言实现倒置字符串的两种方法分享
    目录前言一、题目二、思路讲解 三、代码实现四、代码总结五、第二种方法倒置字符串六、总结 前言 今天在牛客网上刷了一道题,我感觉挺有意义的,现在我就分享给大家,并且...
    99+
    2022-11-13
    C语言 倒置字符串方法 C语言倒置字符串 C语言 字符串
  • C语言实现手写JSON解析的方法详解
    目录什么是JSONJSON支持的数据类型JSON语法规则JSON的解析JSON基本语法编写解析器头文件实现文件什么是JSON JSON(JavaScript Object Notat...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作