C:屏幕上输出“ * ”菱形图案

271 阅读1分钟

目标图案:
在这里插入图片描述

第一眼看到这个题目,我们可以循序渐进来解答这个问题:
我们先在屏幕上每行打印出来目标个数的“ * ”

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i, j;
	int n;

	printf("请输入菱形上半部分的行数:");
	scanf("%d", &n);

	for (i = 1; i <= n; i++)
	{
		for (j = 0; j < i*2-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	for (i = n-1; i >=0; i--)
	{
		for (j = 1; j <= i * 2 - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

程序生成图:
在这里插入图片描述

实现了第一个小目标后,我们只要把“ * ”居中,上下形成三角形。这个问题就算解决了!
通过观察目标图案,我们可以发现:
第 i 行有 2*i - 1 个星星,菱形上半部分的行数为n,则每行行需要n-i个空格

程序代码:

int main()
{
	int i, j;
	int n;

	printf("请输入菱形上半部分的行数:");
	scanf("%d", &n);

	for (i = 1; i <= n; i++)
	{
		for (j = 0; j < n - i; j++)//打印空格
		{ 
			putchar(' ');//一次只打印一个字符
		}
		for (j = 0; j < 2*i-1; j++)//打印星星
		{
			putchar('*');
		}
		putchar('\n');
	}
	for (i = n-1; i >=1; i--)
	{
		for (j = 0; j < n - i; j++)//打印空格
		{
			putchar(' ');//一次只打印一个字符
		}
		for (j = 0; j < 2 * i - 1; j++)//打印星星
		{
			putchar('*');
		}
		putchar('\n');
	}
	system("pause");
	return 0;
}

程序生成图:
在这里插入图片描述