輸入 10 個數字存入陣列,輸出最大值、最小值、平均值。
#include <stdio.h>
int main() {
double a[10];
double max, min;
int i;
printf("請輸入 10 個數字:\n");
for (i = 0; i < 10; i++) {
scanf("%lf", &a[i]);
}
max = min = a[0];
for (i = 1; i < 10; i++) {
if (max < a[i]) max = a[i];
if (min > a[i]) min = a[i];
}
double sum = 0;
for (i = 0; i < 10; i++) sum += a[i];
double avg = sum / 10;
printf("最大值: %.2f\n", max);
printf("最小值: %.2f\n", min);
printf("平均值: %.2f\n", avg);
printf("最大最小值平均: %.2f\n", (max + min) / 2.0);
return 0;
}
int main() {
double a[10], max, min, sum = 0;
for (int i = 0; i < 10; i++) {
scanf("%lf", &a[i]);
if (i == 0) max = min = a[0];
else {
if (a[i] > max) max = a[i];
if (a[i] < min) min = a[i];
}
sum += a[i];
}
printf("max=%.2f min=%.2f avg=%.2f (max+min)/2=%.2f\n",
max, min, sum/10, (max+min)/2.0);
return 0;
}
a[0] 初始化 max、min,不可用 0 或常數 (若資料全負/全正會錯)。double 而非 float,精度更高、避免累加誤差。%lf 讀取 double,%f 輸出 double (printf 會自動提升)。sum / 10.0 或 sum / (double)10 強制浮點除法。int n;
printf("陣列大小: ");
scanf("%d", &n);
double a[n]; // Variable Length Array
// ... 後續邏輯相同
// 注意:VLA 分配在堆疊,n 過大會堆疊溢位,大陣列請用 malloc
fmax/fmin (C99, <math.h>)max = fmax(max, a[i]);
min = fmin(min, a[i]);