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;
}
相关推荐
小何code1 小时前
C语言【初阶】第1节,初识C语言
c语言·开发语言
莫陌尛.2 小时前
Fuzzy C-Mean Clustering (FCM)
c语言·开发语言
飞天狗1113 小时前
2025第十六届蓝桥杯c/c++B组国赛题解
c语言·c++·算法·蓝桥杯
mN9B2uk173 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
zlinear数据采集卡4 小时前
电源纹波无处遁形!工业采集卡电源去耦与滤波电路深度解析
c语言·嵌入式硬件·fpga开发·自动化·硬件架构
QiLinkOS4 小时前
合肥气链科技有限公司创办与未来技术应用
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法
Byte Wizard5 小时前
动态内存管理
c语言·开发语言
无忧.芙桃5 小时前
C语言文件操作
c语言·开发语言
zhangfeng11335 小时前
glibc = GNU C Library (GNU C 标准库)CentOS 7 (glibc 2.17) pip支持
c语言·人工智能·神经网络·机器学习·centos·gnu
bucenggaibian5 小时前
搭建CMD编译C语言环境
linux·c语言·windows