輸出以下圖案:
*
***
*****
*******
*****
***
*
答案解析:
該題目需要關心當前行對應的從最左邊到第一顆*
的空格數量以及星星數量。將該題分為兩個部分,前面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;
}