題目需求
- 定義學生結構體:姓名、學號、性別、院系
- 輸入 5 筆學生資料
- 依學號遞增排序輸出
- 輸入欲統計院系名稱(原題未完整實現統計功能)
程式碼實作
#include
#include
typedef struct {
char name[10];
int num;
char sex;
char zy[80]; // 院系
} School;
int main() {
School stu[5], tmp;
int i, j;
// 輸入 5 筆資料
for (i = 0; i < 5; ++i)
scanf("%s %d %c %s", stu[i].name, &stu[i].num, &stu[i].sex, stu[i].zy);
// 氣泡排序(依學號遞增)
for (i = 1; i <= 5; ++i)
for (j = 0; j <= 3; ++j)
if (stu[j].num > stu[j+1].num) {
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
// 輸出排序結果
for (i = 0; i < 5; ++i)
printf("%s %d %c %s\n", stu[i].name, stu[i].num, stu[i].sex, stu[i].zy);
return 0;
}
執行結果示意
改進建議
- 使用
qsort 替代氣泡排序,效能更佳
- 增加院系統計功能:輸入院系名後計算該院系學生數
- 加強輸入驗證(緩衝區溢位防護、格式檢查)
- 結構體命名建議改為
Student 更具語意