輸出以下圖案: 菱形圖案


輸出以下圖案:

​ *

​ ***

*****

*******

*****

​ ***

​ *

答案解析:

該題目需要關心當前行對應的從最左邊到第一顆*的空格數量以及星星數量。將該題分為兩個部分,前面4行和后面3行來進行拆分。

前4行中:

第一行:行號為0, 空格數為3,星星數量為1;

第二行:行號為1, 空格數為2, 星星數量為3;

第三行:行號為2, 空格數為1, 星星數量為5;

第四行:行號為3, 空格數為0,星星數量為7;

則我們可以推出兩組關系,即行號和空格數量關系為:空格數 = 3 - 行號 。行號與星星的關系為:星星數 = 2 * 行號 + 1

后三行中:

第一行:行號為0,空格數為1,星星數量為5;

第二行:行號為1, 空格數為2, 星星數量為3;

第三行:行號為2, 空格數為3,星星數量為1;

則我們推出兩組關系,即行號與數量的關系:空格數 = 行號 + 1。行號與星星的關系:星星數 = 7 - 2 * (行號+1)

基於上面的關系,我們寫出如下代碼:

代碼示例:

#include <stdio.h>

int main()
{
	int cur_row, space_count, start_count;
	//輸出前4行內容
	for (cur_row = 0; cur_row < 4; cur_row++)
	{
		//計算當前行空格數量,並且進行打印
		for (space_count = 3 - cur_row; space_count > 0; space_count--)
		{
			printf(" ");
		}
		//計算當前行*數量,並且進行打印
		for (start_count = 2 * cur_row + 1; start_count > 0; start_count--)
		{
			printf("*");
		}
		printf("\n") ;
	}
	//輸出后三行
	for (cur_row = 0; cur_row < 3; cur_row++)
	{
		for (space_count = cur_row + 1; space_count > 0; space_count--)
		{
			printf(" ");
		}

		for (start_count = 7 - 2 * (cur_row + 1); start_count > 0; start_count--)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

運行截圖:

輸出以下圖案: 菱形圖案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM