前導
圖形題也是考驗你掌握迴圈的好考題,以下幾題供你參考:
你可以把輸出想成是二維的座標系統,橫的為列,直的為行,用兩個變數分別表示:
輸出直角三角形
#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入層數:");
scanf("%d", &n);
for (i = 1; i <= n; i++) { // 控制層數
for (j = 1; j <= i; j++) { // 控制每層的星星數量
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出
*
**
***
****
*****
*/
範例: 輸出倒直角三角形
#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入層數:");
scanf("%d", &n);
for (i = n; i >= 1; i--) { // 控制層數
for (j = 1; j <= i; j++) { // 控制每層的星星數量
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出
*****
****
***
**
*
*/
輸出自訂底邊的三角形
#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入基底寬度(必須是奇數):");
scanf("%d", &n);
for (i = 0; i < n / 2 + 1; i++) { // 控制層數,高度為 n/2 + 1
for (j = 0; j < n / 2 - i; j++) { // 控制空格數量
printf(" ");
}
for (j = 0; j < 2 * i + 1; j++) { // 控制星星數量
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出
*
***
*****
*******
*/
- 第一層,輸出3個空格然後接1個
*
- 第二層,輸出2個空格然後接3個
*
- 第三層,輸出1個空格然後接5個
*
- 第四層,輸出0個空格然後接7個
*
輸出自訂底邊的空三角形
#include<stdio.h>根據
int main() {
int i, j, n;
printf("請輸入底邊:");
scanf("%d", &n);
for (i = 0; i < n / 2 + 1; i++) { // 控制層數,高度為 n/2 + 1
for (j = 0; j < n / 2 - i; j++) {
printf(" ");
}
if (i == 0) {
printf("*");
} else if (i == n / 2) {
for (j = 0; j < n; j++) {
printf("*");
}
} else {
printf("*");
for (j = 0; j < 2 * i - 1; j++) {
printf(" ");
}
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出
*
* *
* *
*******
*/
i
的不同,星號排列方式不同:i == 0
(第一層): 只有一顆*
i == n/2
(最後一層): 直接印出n
顆*
- 其他情況:
- 兩側各有一顆 *
- 內部用空格填充,空格數量為
2*i - 1
,即: - i = 1:中間 1 個空格
- i = 2:中間 3 個空格
- i = 3:中間 5 個空格
- 依此類推...
輸出三角形(要求給定三角形的高度)
#include <stdio.h>
int main() {
int height, i, j;
// 請使用者輸入三角形的高度
printf("請輸入三角形的高度: ");
scanf("%d", &height);
// 輸出等腰三角形
for (i = 1; i <= height; i++) { // 外層迴圈控制層數 (高度)
for (j = 1; j <= height - i; j++) { // 內層迴圈控制空格數量
printf(" ");
}
for (j = 1; j <= 2 * i - 1; j++) { // 內層迴圈控制星星數量
printf("*");
}
printf("\n"); // 每行輸出後換行
}
return 0;
}
/* 輸出
請輸入三角形的高度: 5
*
***
*****
*******
*********
*/
for (j = 1; j <= height - i; j++)
這控制了每層的前置空格數:
i = 1
:height - 1 個空格i = 2
:height - 2 個空格- ...
i = height
:0
個空格
for (j = 1; j <= 2 * i - 1; j++)
這控制了每層的 *
數量:
i = 1
:1 個*
i = 2
:3 個*
i = 3
:5 個*
i = 4
:7 個*
i = height
:2 * height - 1
個*