我正在嘗試用 C 打印菱形圖案,但我的軟件沒有提供預期的結果。
#include <stdio.h>
int main() {
int n, i, j, space;
printf("Enter the number of rows: ");
scanf("%d", &n);
space = n - 1;
for (i = 1; i <= n; i++) {
for (j = 1; j <= space; j++) {
printf(" ");
}
space--;
for (j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
space = 1;
for (i = 1; i <= n - 1; i++) {
for (j = 1; j <= space; j++) {
printf(" ");
}
space++;
for (j = 1; j <= 2 * (n - i) - 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
我正在嘗試使用此應用程序打印帶有星號的菱形圖案。菱形設計的行數由用戶輸入到應用程序中。然後它用兩個嵌套的 for 循環打印菱形圖案的上半部分,用另一對嵌套的 for 循環打印下半部分。
變量 space 指定在星號之前寫了多少個空格。第一個 for 循環打印第一組星號和第二組星號之間的空格,第二個 for 循環打印第三組星號和第四組星號之間的空格。第一個 for 循環的每次迭代都會將要打印的空格數減少一個,而要打印的空格數會增加一個。
然而,儘管我付出了努力,但結果並不是我所希望的。我看到了這篇使用該示例的文章,但我不確定我是否做對了。有人能幫我嗎?
首先,我的建議是把輸入輸出關係定義清楚,輸入行數產生菱形這件事情本身比較奇怪,建議定義為:輸入菱形的大小,最小為1倍
,範例可以看下面。
*
* *
*
*
* *
* *
* *
*
*
* *
* *
* *
* *
* *
*
第一件事情,先把需要輸出的空白變成其他文字,以方便觀察(此處以O
代替空白)。
從輸出結果去思考,分成兩個部分,用兩個for loop去解決(最長的那行可以挑遞增或遞減部分則一輸出):
而兩個部分中,又各可以拆解成以下:
完成以上幾個區塊後,和在一起就完成了。
O*
*O*
O*
OO*
O*O*
*OOO*
O*O*
OO*
OOO*
OO*O*
O*OOO*
*OOOOO*
O*OOO*
OO*O*
OOO*
#include <stdio.h>
void main() {
int a = 3;
for(int i=0;i<=a;i++){
for(int j=a-i;j>0;j--)
printf(" ");
printf("*");
for(int j=0;j<i*2-1;j++)
printf(" ");
if(i!=0)
printf("*");
printf("\n");
}
for(int i=a-1;i>=0;i--){
for(int j=a-i;j>0;j--)
printf(" ");
printf("*");
for(int j=0;j<i*2-1;j++)
printf(" ");
if(i!=0)
printf("*");
printf("\n");
}
}