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

C 語言二維數組練習:3學生3課程成績統計 (固定規模版)

     編輯:關於C語言

問題描述

輸入 3 名學生 3 門課程成績,計算每位學生總分與平均分。核心考點:二維數組行主序、嵌套循環累加、固定規模硬編碼。

原代碼分析


#include <stdio.h>

int main() {
    int i, j;
    float stu[3][3];      // [學生][課程]
    float sum[3] = {0};
    float avg[3] = {0};

    printf("請輸入每個學生的英語 高數 C語言 成績\n");
    for (i = 0; i < 3; i++) {
        printf("第 %d 個同學: ", i+1);
        for (j = 0; j < 3; j++) scanf("%f", &stu[i][j]);
    }

    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
            sum[i] += stu[i][j];

    for (i = 0; i < 3; i++) avg[i] = sum[i] / 3;

    for (i = 0; i < 3; i++)
        printf("第 %d 學生 總分: %.2f 平均: %.2f\n", i+1, sum[i], avg[i]);
    return 0;
}

關鍵改進點

1. 宏定義常量替代魔術數字


#define STUDENTS 3
#define COURSES  3
float stu[STUDENTS][COURSES];
float sum[STUDENTS] = {0};
float avg[STUDENTS] = {0};

2. 合併累加與平均計算循環


for (i = 0; i < STUDENTS; i++) {
    sum[i] = 0;
    for (j = 0; j < COURSES; j++) sum[i] += stu[i][j];
    avg[i] = sum[i] / COURSES;  // 用宏而非硬編碼 3
}

3. 輸入提示優化:課程名稱數組


const char *course_names[] = {"英語", "高數", "C語言"};
for (i = 0; i < STUDENTS; i++) {
    printf("學生 %d:\n", i+1);
    for (j = 0; j < COURSES; j++) {
        printf("  %s: ", course_names[j]);
        scanf("%f", &stu[i][j]);
    }
}

4. 輸出格式化對齊


printf("%-10s %8s %8s\n", "學生", "總分", "平均分");
for (i = 0; i < STUDENTS; i++)
    printf("%-10d %8.2f %8.2f\n", i+1, sum[i], avg[i]);

進階:動態規模版 (malloc)


float **allocate_scores(int students, int courses) {
    float **arr = malloc(students * sizeof(float*));
    for (int i = 0; i < students; i++)
        arr[i] = calloc(courses, sizeof(float));
    return arr;
}

void free_scores(float **arr, int students) {
    for (int i = 0; i < students; i++) free(arr[i]);
    free(arr);
}

總結

固定 3×3 成績統計是二維數組、嵌套循環、累加器模式的基礎練習。關鍵收穫:

  • 二維數組 stu[學生][課程] 行主序存儲,內存連續;
  • 宏定義維度常量,消除魔術數字,易維護;
  • 合併循環減少遍歷次數;
  • 課程名稱數組提升用戶體驗;
  • 動態分配版本突破固定規模限制,為大型系統奠基。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved