输出梯形 C语言

解析:这个输出图形的题就是一个找规律加数学计算,我们发现每行比上一行多两个*,最后一行的*表达式为h+(h-1)*2,即3*h-2,那么每一行就是一个先输出最后一行-当前行*个数个空格,然后输出*的过程。

代码:

#include<stdio.h>
int main()
{
	int h;
	while(scanf("%d",&h)!=EOF)
	{
		int a[h];//用来存储每行应该输出*个数 
		for(int i=0;i<h;i++)
		{
			a[i]=h+i*2;//存储每行应该输出*个数 
			for(int j=0;j<(3*h-2)-a[i];j++)
			{
				printf(" ");//每行空格个数=最后一行- 每行应该输出*个数 
			}
			for(int j=0;j<a[i];j++)
			{
				printf("*");
			}
			printf("\n");
		}
		
	}
	return 0;
}

另一种方法是:
知道每行必然会输出h+(h-1)*2个字符,于是通过遍历让小于h+(h-1)*2-(h+i*2)的输出为空格,其余的输出为*

代码:
 

#include<stdio.h>
int main()
{
	int h;
	while(scanf("%d",&h)!=EOF)
	{
		int maxline=h+(h-1)*2;//最大行的* 
		for(int i=0;i<h;i++)
		{
			for(int j=0;j<maxline;j++)
			{
				if(j<maxline-(h+i*2))//最大行*个数-每行的*个数 
				{
					printf(" ");
				}
				else
				{
					printf("*");
				}
			}
			printf("\n");
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值