A:输入全班各门课的成绩
B:计算输出每个学生各门课的平均成绩
C:计算输出各门课全班平均成绩
D:对全班学生的平均成绩由高到低排序并输出
用action函数设计不同功能实现以上功能
A:输入全班各门课的成绩
B:计算输出每个学生各门课的平均成绩
C:计算输出各门课全班平均成绩
D:对全班学生的平均成绩由高到低排序并输出
用action函数设计不同功能实现以上功能
#include<stdio.h>
#include<stdlib.h>
int n = 100;//学生数量
int b[5];//用于各科总分
struct Myclass {
int a[5];//科目成绩
int sum; //总分
float v; //均成绩
char name[10];//姓名 a
} ms[10000];
void inputa(Myclass ms[], int n) {
int sum;
for (int i = 0;i < n;i++) {
//scanf_s("%s", &ms[i].name);
printf_s("请输入学生姓名:");
scanf_s("%s",ms[i].name,9);
//for (int j = 0;j < 4;j++) //测试用随机生成学生名
// ms[i].name[j] = rand() % 26 + 65;
//ms[i].name[4] = '\0';
sum = 0;
printf_s("请输入各科成绩(共5科):");
for (int j = 0;j < 5;j++) {
//ms[i].a[j] = rand() % 101; //测试用随机生成的成绩
scanf_s("%d", &ms[i].a[j]);
b[j] += ms[i].a[j];
sum += ms[i].a[j];
}
ms[i].sum = sum;
ms[i].v = float(sum / 5.0);
}
}
void outa(Myclass ms[], int n) {
printf_s("姓 名\t科目1\t科目2\t科目3\t科目4\t科目5\t平均分\n");
for (int i = 0;i < n;i++) {
printf_s("%s\t", ms[i].name);
for (int j = 0;j < 5;j++)
printf_s("%3d\t", ms[i].a[j]);
printf_s("%4.1f\n", ms[i].v);
}
}
void outvge(int b[]) {
printf_s("班平均:\n");
for (int j = 0;j < 5;j++)
printf_s("科目%d: %4.1f \n", j + 1, 1.0*b[j] / n);
}
void sortvge(Myclass ms[], int n) {
Myclass tt;
for (int i = 0;i < n - 1;i++)
for (int j = i + 1;j < n;j++)
if (ms[j].sum > ms[i].sum) {
tt = ms[j];
ms[j] = ms[i];
ms[i] = tt;
}
}
void action(char c) {
switch (c) {
case 'A':
printf_s("请输入学生数量:");
scanf_s("%d", &n);
inputa(ms, n);
break;
case 'B': outa(ms, n);break;
case 'C':outvge(b);break;
case 'D':sortvge(ms, n);
outa(ms, n);
break;
}
}
int main() {
char c;
while (1) {
printf_s("A:输入全班各门课的成绩\n");
printf_s("B:计算输出每个学生各门课的平均成绩\n");
printf_s("C计算输出各门课全班平均成绩\n");
printf_s("D对全班学生的平均成绩由高到低排序并输出\n");
scanf_s("%c", &c);
action(c);
}
return 0;
}