輸出如下圖案

輸出如下圖案菱形,輸出菱形:

​ *markdown

​ ***ide

*****post

*******spa

*****code

​ ***blog

​ *it

答案解析:

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

前4行中:class

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

第二行:行號爲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;
}

運行截圖:

輸出菱形圖案

相關文章
相關標籤/搜索