max/min 函式邏輯錯誤:嘗試用指標冒泡排序副作用修改原陣列,且回傳 a[8] 越界(索引 0-7)。aver 函式指標運算 c < c+8 無意義,應用索引迴圈。#include <stdio.h>
int max(int *a, int n) {
int m = a[0];
for (int i = 1; i < n; i++) if (a[i] > m) m = a[i];
return m;
}
int min(int *a, int n) {
int m = a[0];
for (int i = 1; i < n; i++) if (a[i] < m) m = a[i];
return m;
}
float aver(int *a, int n) {
long sum = 0;
for (int i = 0; i < n; i++) sum += a[i];
return (float)sum / n;
}
void bubble_sort(int *a, int n) {
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-1-i; j++)
if (a[j] > a[j+1]) {
int t = a[j]; a[j] = a[j+1]; a[j+1] = t;
}
}
int main() {
int a[8];
printf("please type eight num: ");
for (int i = 0; i < 8; i++) scanf("%d", &a[i]);
printf("max=%d min=%d aver=%.2f\n", max(a,8), min(a,8), aver(a,8));
bubble_sort(a, 8);
for (int i = 0; i < 8; i++) printf("%d ", a[i]);
printf("\n");
return 0;
}
bubble_sort,邏輯清晰。float,格式化輸出 %.2f。scanf 使用 %d 配合 &a[i],移除原碼 scanf_s 非標準用法。良好的函式設計:單一職責、不改輸入、參數化長度,能大幅降低邏輯錯誤。