菜鸟笔记
提升您的技术认知

用C语言在屏幕上输出一个菱形

解题思路

为了在屏幕上输出一个如下图的图形

我们首先对图形进行观察,不难发现该图形为高度对称图形,从上至下“ * ”的符号每一行均多两个,然后到中间段,后面每一行便逐行减少两个“ * ”。这便是其中的规律

代码如下

#include<stdio.h>  
#include<windows.h>   
int main()
{
	int i = 0;//此处的i在程序中表示为菱形的行数
	for (i = 0; i < 7; i++)//首先对菱形的上半部分进行打印,此处我们可以用循环来实现
	{
		int j = 0;//j在程序中表示为从左至右的位置
		for (j = 0; j < 7 - i - 1; j++)//因为我们无法直接在一段距离后输出‘ * ’,所以我们可以使用‘ ’来实现
		{
			printf(" ");
		}
		for (j = 0; j < 2 * i + 1; j++)//此处便是输出我们菱形主体部分,而菱形的*与行数的关系为2*i+1
		{
			printf("*");
		}
		printf("\n");
	}
	for (i = 0; i < 7; i++)
	{
		int j = 0;
		for (j = 0; j < i + 1; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * (7 - i - 1) - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

当然,这个程序只能帮助我们实现固定打印,所以我们对程序进行稍加改进便可以实现动态打印

#include<stdio.h>  
#include<windows.h>   
int main()
{
	int i = 0;
	int line = 0;
	scanf_s("%d", &line);  
	for (i = 0; i < line; i++)
	{
		int j = 0;
		for (j = 0; j < line - i - 1; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	for (i = 0; i < line; i++)
	{
		int j = 0;
		for (j = 0; j < i + 1; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * (line - i - 1) - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	system("pause");
	return 0;
}