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;
}
相关推荐
切糕师学AI12 小时前
位带操作(Bit-Banding)是什么?
c语言·arm·嵌入式开发·cortex-m·位带操作
学习路上_write13 小时前
嵌入式系统bringup指南:软硬件调试
c语言·单片机·嵌入式硬件
say_fall13 小时前
C语言编程实战:每日一题 - day7
c语言·开发语言
小龙报13 小时前
《算法通关指南数据结构和算法篇(2)--- 链表专题》
c语言·数据结构·c++·算法·链表·学习方法·visual studio
醉颜凉13 小时前
环形房屋如何 “安全劫舍”?动态规划解题逻辑与技巧
c语言·算法·动态规划
望眼欲穿的程序猿14 小时前
Win系统Vscode+CoNan+Cmake实现调试与构建
c语言·c++·后端
星轨初途15 小时前
数据结构排序算法详解(2)——选择排序(附动图)
c语言·数据结构·经验分享·笔记·b树·算法·排序算法
合作小小程序员小小店15 小时前
游戏开发,桌面%小游戏,俄罗斯方块%demo,基于vs2022,c语言,背景音乐,easyX,无数据库,
c语言·开发语言
EXtreme3516 小时前
【C 语言专栏收官】预处理完全攻略:宏、条件编译与代码安全的最后一道防线
c语言·预处理·
yuuki23323317 小时前
【C++】初识C++基础
c语言·c++·后端