初学C基础,打印金字塔,及实心棱形和空心棱形

刚学完几个循环语句,在做这个练习时折磨近一个小时有了结果(人比较笨,逻辑思维跟不上):

#include<stdio.h>
int main(void)
{
	int n;
	printf("请输入你要打印的金字塔层数:");
	scanf("%d",&n);
	for(int a=1;a<=n;a++)
	{
		for(int b=1;b<=n-a;b++)
		{
			printf(" ");
		}
		for(int b=1;b<=2*a-1;b++)
		{
			printf("*");
		}
	printf("\n");
	}
    return 0;
}

运行结果:

当我得意洋洋发到群里时,给我出了几个难题:以这个为基础优化打印出实心棱心和空心棱形……

愣了半响继续被折磨……终于在又一个小时后给整出来了

实心棱形:

#include<stdio.h>
int main(void)
{
	int n,c=3;
	printf("请输入你要打印的金字塔层数:");
	scanf("%d",&n);
	for(int a=1;a<=n;a++)
	{
		for(int b=1;b<=n-a;b++)
		{
			printf(" ");
		}
		for(int b=1;b<=2*a-1;b++)
		{
			printf("*");
		}
	printf("\n");
	}
	
	for(int a=1;a<=n;a++,c+=2)
	{
		for(int b=1;b<=a;b++)
		{
			printf(" ");
		}
		for(int b=1;b<=2*n-c;b++)
		{
			printf("*");
		}
	printf("\n");
	}
	return 0;
}

运行结果。

空心棱形:

#include<stdio.h>
int main(void)
{
	int n,c=3;
	printf("请输入你要打印的金字塔层数:");
	scanf("%d",&n);
	for(int a=1;a<=n;a++)
	{
		for(int b=1;b<=n-a;b++)
		{
			printf(" ");
		}
		for(int b=1;b<=2*a-1;b++)
		{
			if(b>1&&b<=2*a-2)
			{
				printf(" ");
				continue;
			}
			printf("*");
		}
	printf("\n");
	}
	
	
	for(int a=1;a<=n;a++,c+=2)
	{
		for(int b=1;b<=a;b++)
		{
			printf(" ");
		}
		for(int b=1;b<=2*n-c;b++)
		{
			if(b>1&&b<=2*n-c-1)
			{
				printf(" ");
				continue;
			}
			printf("*");
		}
	printf("\n");
	}
	return 0;
}

最后,如果您恰好看到了这个,请问还有没更加简单的写法?这两个for循环能不能给整进一个循环里去,还请各位大牛指点下,谢谢了!

猜你喜欢

转载自blog.csdn.net/qq_33414843/article/details/81133929