C语言 输出字母图案(金字塔)

下面两题在cdsn找了很久,几乎没有合适的答案
一,请编写输出以下图案的程序,图案的行数由输入的整数值确定。

   A
  BBB
 CCCCC
DDDDDDD
  ...

#include <stdio.h>

int main(void)
{
	int n,i,b,c;
	char ch = 'A';
	printf("请输入你要打印的行数:\n");
	scanf("%d",&n);

	for(i = 1;i <= n;i++)    //i是金字塔行数 大小由输入值n确定
	{
		for(b = 0;b < n - i;b++)    //b是一行中空格的个数
		{
			putchar(' ');
		}
		for(c = 0;c < 2 * i - 1;c++)  //c是一行中的字母的个数
		{
			printf("%c",ch);
		}
		printf("\n");
		ch++;     //打印完一行,ch再进行++;
	}
	return 0;
}

思路:
以五行金字塔为例

比较得出i与b和c的关系即可。

二,请编写输出以下图案的程序。

   A
  ABA
 ABCBA
ABCDCBA


#include <stdio.h>

int main(void)
{
	int n,i,b,c,d;
	char ch='A';
	printf("请输入你要打印的行数:\n");
	scanf("%d",&n);

	for(i=1;i<=n;i++)
	{
		ch='A';
		for(b=0;b<n-i;b++)
		{
			putchar(32);
		}
		for(c=0;c<i;c++)
		{
			printf("%c",ch++);
		}
		ch--;
		for(d=0;d<i-1;d++)
		{
			printf("%c",--ch);
		}
		printf("\n");
	}
	return 0;
}

说一下思路:
相比上一题,这题主要分解为打印左边和打印右边两部分。


版权声明:本文为woxiuc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。