用“*”列印出n行菱形狀圖

Gy不太冷發表於2020-11-20

用“*”列印出n行菱形狀圖
程式碼:(vs2013)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
	int n;
	printf("請輸入要列印*的層數:\n");
	scanf("%d", &n);
	if (n == 1)
	{
		printf("*\n"); 
		return 0;
	}
	if (n % 2 == 0)
	{
		printf("輸入不合法!\n"); 
		return 0;
	}
	n = n / 2+1;
	int x = n;
	while (n != 0)
	{
		for (int i = 0; i <n; i++)
		{
			printf(" ");
		}n--;
		for (int j = n; j < x; j++)
		{
			printf("* ");
		}
		printf("\n");
	}
	int m = x;
	while (m != 0)
	{
		m--;
		for (int i = m; i <=x; i++)
		{
			printf(" ");
		}
		for (int j = 0; j <m; j++)
		{
			printf("* ");
		}
		printf("\n");
	}

}

執行結果
分析:由觀察得出在第5(及9/2+1)行前空格數依次遞減,* 在遞增,所以第一行空格最少取5-1=4個,注意列印 * 時應在其後面多列印一個空格否則不能成菱形,並且每列印一行 * 和空格後要換行,所以可以在一次迴圈後答應換行。5行後空格依次增加,* 依次減少所以在構造和上面相似的迴圈輸出空格和字元。

相關文章