題目如下:
當輸入 5 時,印出
*****
*****
*****
*****
*****
紅色的部分是印空格.
原始碼如下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n; /* 正方形的邊長 */
int i, j, k, m; // 四個計時器
printf("輸入正方形的邊長 -> ");
scanf("%d", &n);
/* 你的程式從這裡開始 */
m = n;
for(k=1; k<=m; k++)
{
for(j=n; j<m; j++)//印出空白
printf(" ");
for(i=1; i<=n; i++)//印出星星
printf("*");
printf("\n");
n--;
}
system("pause");
return 0;
}
我看了很久還是不懂他的迴圈到底是怎麼判斷跟作用的? 他是怎麼同時間處理空白跟星號?
可以請有經驗的朋友指點我一下嗎?
m = n;
for(k=1; k<=m; k++) // 正方行的高 即5, 即有幾行
{
for(j=n; j<m; j++) //印出空白, 原理是每一行會遞增一個, 從0開始
printf(" ");
for(i=1; i<=n; i++) //印出星星, 原理是每一行會遞減一個, 從正方邊長 即5 開始
printf("*");
printf("\n");
n--;
}
假設: n=5
m=5
// 跑第一次
for(k=1; 1<=5; k++)
{
for(j=5; j<5, j++) ; 不成立, 不會印任何空白
for(i=1; i <=5, i++) ; 成立 5次(1~5), 印5 個*
printf("\n"); //換行
n=5-1; //下一行還有幾個*要印, 下一行只剩 4個
}
// 跑第2次
for(k=1; 2<=5; k++)
{
for(j=4; j<5, j++) ; 成立1個, 印1個空白
for(i=1; i <=4, i++) ; 成立 4次(1~4), 印4 個*
printf("\n"); //換行
n=4-1; //下一行還有幾個*要印, 下一行只剩 3個
}
剩下的自己跑囉....累~~~~




























































































