C語言入門經典三題:鞏固數組、循環與查找基礎
題目1:5個數求最大/最小值及其下標
#include <stdio.h>
int main() {
int a[5], i, max_i=0, min_i=0;
printf("Input 5 numbers: ");
for (i=0; i<5; i++) scanf("%d", &a[i]);
for (i=1; i<5; i++) {
if (a[i] > a[max_i]) max_i = i;
if (a[i] < a[min_i]) min_i = i;
}
printf("Max: a[%d]=%d, Min: a[%d]=%d\n", max_i, a[max_i], min_i, a[min_i]);
return 0;
}
題目2:4×4矩陣輸出偶行偶列元素 (下標從0開始)
#include <stdio.h>
int main() {
int a[4][4], i, j;
printf("Input 16 numbers: ");
for (i=0; i<4; i++) for (j=0; j<4; j++) scanf("%d", &a[i][j]);
printf("Even row & col:\n");
for (i=0; i<4; i+=2)
for (j=0; j<4; j+=2)
printf("a[%d][%d]=%d\n", i, j, a[i][j]);
return 0;
}
題目3:有序數組二分查找
#include <stdio.h>
#define M 10
int binary_search(int arr[], int n, int target) {
int l=0, r=n-1, mid;
while (l <= r) {
mid = l + (r-l)/2;
if (arr[mid] == target) return mid;
else if (arr[mid] < target) l = mid+1;
else r = mid-1;
}
return -1;
}
int main() {
int a[M] = {-1,6,8,10,15,20,21,25,29,55};
int x; printf("Search: "); scanf("%d", &x);
int pos = binary_search(a, M, x);
if (pos >= 0) printf("Found at index %d\n", pos);
else printf("%d not found\n", x);
return 0;
}
💡 入門核心要點
- 下標從0開始:C語言數組下標範圍
[0, n-1]。
- 二分查找前提:數組必須有序。
- 中間值計算:
mid = l + (r-l)/2 防止l+r溢出(雖int範圍內罕見,但屬良好習慣)。
- 邊界收斂:
l <= r 循環條件配合 l=mid+1 / r=mid-1 保證終止。