用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<stdio.h>
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;
} 

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Traveler·玖安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值