第8章实验1:学生成绩管理系统V1.0
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90100)、良好(8089)、中等(7079)、及格(6069)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩。
#include<stdio.h> #include<stdlib.h> #define N 30 main() { int n, i, j, temp1, temp2, choice, p, mark; long ids; float sum; printf("Input student number(n<30):\n"); while (scanf("%d", &n)) { if (n < 30 && n > 0) break; else { printf("Invalid Input!"); continue; } } long id[N]; float score[N]; Choice: printf("Management for Students' scores\n"); printf("1.Input record\n"); printf("2.Caculate total and average score of course\n"); printf("3.Sort in descending order by score\n"); printf("4.Sort in ascending order by number\n"); printf("5.Search by number\n"); printf("6.Statistic analysis\n"); printf("7.List record\n"); printf("0.Exit\n"); printf("Please Input your choice:\n"); scanf("%d", &choice); getchar(); switch (choice) { case 1: goto a; case 2: goto b; case 3: goto c; case 4: goto d; case 5: goto e; case 6: goto f; case 7: goto g; case 0: goto end; default: printf("Input error!\n"); goto Choice; } a: printf("Input student's ID, name and score:\n"); for (i = 1; i <= n; i++) { scanf("%ld %f", &id[i], &score[i]); getchar(); } goto Choice; b: sum = 0; for (i = 1; i <= n; i++) sum = sum + score[i]; printf("sum=%.0f,aver=%.2f\n", sum, sum / n); goto Choice; c: printf("Sort in descending order by score:\n"); for (i = 1; i < n; i++) for (j = i + 1; j <= n; j++) if (score[j] > score[i]) { temp1 = score[i], temp2 = id[i]; score[i] = score[j], id[i] = id[j]; score[j] = temp1, id[j] = temp2; } for (i = 1; i <= n; i++) printf("%ld\t%.0f\n", id[i], score[i]); goto Choice; d: printf("Sort in ascending order by number:\n"); for (i = 1; i < n; i++) for (j = i + 1; j <= n; j++) if (id[i] > id[j]) { temp1 = score[i], temp2 = id[i]; score[i] = score[j], id[i] = id[j]; score[j] = temp1, id[j] = temp2; } for (i = 1; i <= n; i++) printf("%ld\t%.0f\n", id[i], score[i]); goto Choice; e: printf("Input the number you want to search:\n"); scanf("%ld", &ids); getchar(); for (i = 1; i <= n; i++) { if (ids == id[i]) { printf("%ld\t%.0f\n", id[i], score[i]); goto Choice; } else continue; } printf("Not found!\n"); goto Choice; f: for (i = 5; i <= 10; i++) { p = 0; for (j = 1; j <= n; j++) { mark = score[j] < 60 ? 5 : (int)score[j] / 10; if (mark == i) p++; } if (i == 5) { printf("<60\t%d\t%.2f%%\n", p, (float)p / n * 100); continue; } else if (i >= 6 && i <= 9) { printf("%d-%d\t%d\t%.2f%%\n", i * 10, i * 10 + 9, p, (float)p / n * 100); continue; } else printf("%d\t%d\t%.2f%%\n", i * 10, p, (float)p / n * 100); } goto Choice; g: for (i = 1; i <= n; i++) printf("%ld\t%.0f\n", id[i], score[i]); goto Choice; end: printf("End of program!\n"); return 0; }