輸出如下圖案菱形,輸出菱形:
*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; }