圖形題也是考驗你掌握迴圈的好考題,以下幾題供你參考:
你可以把輸出想成是二維的座標系統,橫的為列,直的為行,用兩個變數分別表示:#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;
}
/* 輸出
*
***
*****
*******
*/
*
*
*
*
#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
,即: #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
個 *