?打印一個菱形圖案。程序分為兩部分:上半部分和下半部分。上半部分打印一個逐漸增大的星號圖案,下半部分打印一個逐漸縮小的星號圖案。
#include<stdio.h>
int main() {int row = 5;//定義行數int t = 2;for (int i = row; 0 < i; i--){for (int k = i - 1; k > 0; k--) {putchar(' ');}for (int g = t - 1; g > 0; g--) {putchar('*');}t = t + 2;printf("\n");}t = t - 4;for (int i2 = 1; i2 <row; i2++) {for (int k2 = i2; k2 > 0; k2--){putchar(' ');}for (int g2 = t - 1; g2 > 0; g2--){putchar('*');}t = t - 2;printf("\n");}
}
?
簡化版:
-
單層循環:使用一個外層循環遍歷所有行,一個內層循環遍歷所有列。
-
數學邏輯:通過?
abs(i) + abs(j) < row
?判斷是否打印星號,直接確定菱形邊界。 -
減少變量:不再需要單獨處理上下半部分,統一用數學邏輯處理。
#include <stdio.h>
#include<stdlib.h>
int main() {int row = 5; // 定義行數int i, j;// 打印整個菱形for (i = -row + 1; i < row; i++) {for (j = -row + 1; j < row; j++) {if (abs(i) + abs(j) < row) putchar('*'); // 打印星號else putchar(' '); // 打印空格}printf("\n");}return 0;
}