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;
}
相关推荐
小付同学呀8 小时前
C语言学习(五)——输入/输出
c语言·开发语言·学习
梦幻精灵_cq8 小时前
学C之路:不可或缺的main()主函数框架(Learn-C 1st)
c语言·开发语言
m0_5312371713 小时前
C语言-操作符进阶
c语言·开发语言
无限进步_14 小时前
21. 合并两个有序链表 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
海盗猫鸥15 小时前
Linux权限详解
linux·c语言
wengqidaifeng15 小时前
数据结构与算法经典OJ题目详解(C语言):从数组到链表的进阶之路(上)
c语言·数据结构·链表
爱编码的小八嘎15 小时前
第3章 Windows运行机理-3.1 内核分析(10)
c语言
祈安_15 小时前
深入理解指针(七)
c语言·后端
m0_5312371718 小时前
C语言-编程实例2
c语言·开发语言
zjxtxdy18 小时前
C语言(续)
c语言·开发语言