首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言模組化程式:學生成績統計系統 (總分、平均、標準差、極值)

     編輯:關於C

完整的學生成績處理範例:輸入班級人數與各科成績,透過函式分別計算總分、平均、標準差(樣本標準差)、最高/最低分及對應學號。展示函式模組化、陣列參數傳遞、標準差公式實作。

功能模組

  • total():累加所有成績回傳總和。
  • average():總和除以人數。
  • deviation():計算樣本標準差 sqrt(Σ(x-avg)²/(n-1))。
  • max_min():找出最高/最低分及所有擁有該分數的學號(索引)。

主程式流程

  1. 輸入人數 num 與各學生成績存入 grade[]。
  2. 依序呼叫四個函式並印出結果。

完整代碼

#include <stdio.h>
#include <math.h>

float total(float grade[], int num);
float average(float sum, int num);
float deviation(float grade[], float ave, int num);
void max_min(float grade[], int num);

int main() {
    int i, num;
    float sum, ave, dev, grade[100];

    printf("您班上有多少人?共有:");
    scanf("%d", &num);
    for (i = 0; i < num; i++) {
        printf("輸入第%2d位同學成績:", i);
        scanf("%f", &grade[i]);
    }

    sum = total(grade, num);
    printf("\n總成績為:%.2f\n", sum);
    ave = average(sum, num);
    printf("\n平均分為:%.2f\n", ave);
    dev = deviation(grade, ave, num);
    printf("\n標準差為:%.2f\n\n", dev);
    max_min(grade, num);
    return 0;
}

float total(float grade[], int num) {
    float sum = 0;
    for (int i = 0; i < num; i++) sum += grade[i];
    return sum;
}
float average(float sum, int num) { return sum / num; }
float deviation(float grade[], float ave, int num) {
    float s = 0;
    for (int i = 0; i < num; i++) s += (grade[i]-ave)*(grade[i]-ave);
    return sqrt(s / (num-1));
}
void max_min(float grade[], int num) {
    float max = grade[0], min = grade[0];
    int max_idx[100], min_idx[100], j=0, l=0;

    for (int i = 0; i < num; i++) {
        if (grade[i] > max) max = grade[i];
        if (grade[i] < min) min = grade[i];
    }
    for (int i = 0; i < num; i++) {
        if (grade[i] == max) max_idx[j++] = i;
        if (grade[i] == min) min_idx[l++] = i;
    }
    printf("最高分:%.2f 學號:%d", max, max_idx[0]);
    for (int i = 1; i < j; i++) printf(",%d", max_idx[i]);
    printf("\n最低分:%.2f 學號:%d", min, min_idx[0]);
    for (int i = 1; i < l; i++) printf(",%d", min_idx[i]);
    printf("\n");
}

執行結果

教學價值

涵蓋陣列操作、函式設計、統計公式、極值搜尋與索引記錄,適合期中專案練習。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved