栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言循环结构题目】在屏幕上打印n行*号倒三角形(此处n为6)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言循环结构题目】在屏幕上打印n行*号倒三角形(此处n为6)

【代码】

#include 

void print(int n)
{
	int i, j , a, b = 2 * n - 1;
	int g, h ;
	if (n == 1)
	{
		for (i = 1; i <= n - 1; i++)
			printf(" ");
		printf("*");
		for (i = 1; i <= n - 1; i++)
			printf(" ");
	}//输出最后一行
	else
	{
		for (j = 0; j <= n - 1; j++)
		{
			for (i = 1; i <= j ; i++)
				printf(" ");//输出左空格
			for (a = 1; a <= b; a++)
				printf("*");//输出星号
			for (i = 1; i <= j; i++)
				printf(" ");//输出右空格
			printf("n");
			b -= 2;
		}
	}
}
int main( )
{
	print(6);
	return 0;
}

【解释】这里倒三角的输出难点在于,我们平常用循环输出一个东西,这个东西的数量一般是递减的,我们一般用for(i=1;i<=j;i++){}这样的结构依次输出1、2、3…j个图形。
但在这一题里,输出空格的数量确是递增的,从0一直到n-1。

这里没什么好思路的话,就可以用循环嵌套,给定递增的数列j,在这个j对应数量去用老结构输出空格。

当然这一题还可以用递归的方式做。

【代码】

#include 

void print(int n)
{
	int j = 6;//把j固定成6,而n是变化的,从6变化到0,这样准确控制j-n从0变化到6
	int i , a, b = 2 * n - 1;
	if (n == 1)//规定退出递归的出口
	{
		for (i = 1; i <= j-n; i++)
			printf(" ");
		printf("*");
		for (i = 1; i <= n - 1; i++)
			printf(" ");//最后一行输出5个空格和左右各一个星号
	}
	else
	{
			for (i = 1; i <= j-n ; i++)
				printf(" ");
			for (a = 1; a <= b; a++)
				printf("*");
			for (i = 1; i <= j-n; i++)
				printf(" ");
			printf("n");
			b -= 2;
			print(n - 1);//递归的核心,先把每一行打印好,再转入下一行。
		}
}
int main( )
{
	print(6);
	return 0;//也可以设置成用户输入的数字作为n
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号