1. 程式人生 > >用C語言在螢幕上輸出一個菱形

用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;
}