谭浩强的例子4.7里面的用switch写怎样写啊?求大神

 

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;

}