C语言 棱形图案

目录

一、问题分析

上部分:

下部分:

二、代码演示


一、问题分析

如上图所示,我们可以将棱形进行拆解,分为上下两个部分。

上部分:

通过观察,我们得到 单边空格数 = 上半部分总行数 - 行数 - 1

星号 = 行数 × 2 + 1

所以我们设 line 为上半部分总行数 i 为行数 。

那么代码如下:

复制代码
	for(i=0; i<line; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for(j=0; j<line-1-i; j++)
		{
			printf(" ");//打印空格
		}
		//打印*
		for(j=0; j<2*i+1; j++)
		{
			printf("*");//打印星号
		}
		printf("\n");
	}

下部分:

通过观察,我们得知 下半部分的 单边空格数 = 行数

下半部分的 星号 = (下半部分总行数 - 行数 )× 2 - 1

于是我们可以设 下半部分总行数为 上半部分行数-1 也就是 line -1 , i为行数

那么代码如下:

复制代码
	for(i=0; i<line-1; i++)
	{
		//打印一行
		int j = 0;
		for(j=0; j<=i; j++)
		{
			printf(" ");//打印空格
		}
		for(j=0; j<2*(line-1-i)-1; j++)
		{
			printf("*");//打印星号
		}
		printf("\n");
	}

二、代码演示

复制代码
int main()
{
	int line = 0;
	int i = 0;
	scanf("%d", &line);//7
	//打印上半部分
	for(i=0; i<line; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for(j=0; j<line-1-i; j++)
		{
			printf(" ");
		}
		//打印*
		for(j=0; j<2*i+1; j++)
		{
			printf("*");
		}
		printf("\n");
	}


	//打印下半部分
	for(i=0; i<line-1; i++)
	{
		//打印一行
		int j = 0;
		for(j=0; j<=i; j++)
		{
			printf(" ");
		}
		for(j=0; j<2*(line-1-i)-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}
相关推荐
方圆工作室5 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
sycmancia9 小时前
C语言学习03——数据类型
c语言
黎雁·泠崖11 小时前
整数的N进制字符串表示【递归+循环双版满分实现】
c语言·开发语言
小美单片机11 小时前
Proteus 报错 Unable to open HEX file ‘..\1、程序\jio\jtd.hex‘. [U1]
c语言·单片机·嵌入式硬件·51单片机·proteus
济61713 小时前
c语言基础(1)--数据类型说明
c语言·开发语言
qeen8714 小时前
【数据结构】顺序表的详细解析及其简单通讯录实现
c语言·数据结构·学习
2401_8582861115 小时前
从Redis 8.4.0源码看快速排序(1) 宏函数min和swapcode
c语言·数据库·redis·缓存·快速排序·宏函数
l1t15 小时前
利用豆包辅助编写数独隐式唯一数填充c程序
c语言·开发语言·人工智能·算法·豆包·deepseek
松涛和鸣16 小时前
55、ARM与IMX6ULL入门
c语言·arm开发·数据库·单片机·sqlite·html