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

用C语言画空心三角形

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

用C语言画空心三角形

用C语言画出空心三角形比较简单,首先要明白程序是一行一行进行编译的,想象一下空心三角形的画法,自然能明白首先应当让程序输出一定数量的空格,再是*,再是空格,再是*,最后换行符。利用一定的数学逻辑便可知:

n行,每行2n-1个字符(仅包含*中间空格*)
第n行有2*和2n-3个中间空格且第一行不执行中间空格语句
左边n-x个边空格
边空格*中间空格*换行符(除第一层)

换行符是每输出完一行才输出,所以,以层数为外层循环,这样我们只需要计算出需要执行的边空格次数、中间空格循环次数即可。

执行第一行的循环时,输出n-第几行的行数个边空格,再输出一个*,之后输出2×第几行的行数-3个中间空格,再输出*,这一行便结束,输出换行符。

经过分析可以得出:层数为外层循环,边空格和中间空格是两个并列的内层循环,而*只有一次,每行只输出两个(除了第一行只有一个和最后一行全是之外)。所以除去第一行和最后一行,可得出一个输出形式:

循环输出n-x个边空格,输出一个*,循环输出2n-3个中间空格,输出*,输出换行符

加上第一行和最后一行,可以用if语句来进行特定的输出。除了第一行,每行都至少有两个*,所以可以写一个if语句:

if(x1!=1)
printf("*");

然后便是最后一行,可以将最后一行的if设在最前面,让他检测,若不是最后一行,便按正常程序输出,若是最后一行,则直接输出2n-2个*

由此便有以下程序:

#include
int main()
{
int n,time=0,times=0;
printf("请输入图形的行数:");
scanf("%d",&n); 
for(int x1=1;x1<=n;x1++)			//层数 
{
if(x1==n)
for(int t=0;t<=2*n-2;t++)
printf("*");
else 
{
	time=n-x1;						//边空格循环次数
times=2*x1-3;						//中间空格
	for(int left=1;left<=time;left++)//左边空格
	printf(" ");
printf("*");
	for(int among=1;among<=times;among++)//中间空格
	printf(" ");
if(x1!=1)
printf("*");
printf("n");
}
}
return 0;
} 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835849.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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