weixin_58062730 2021-06-16 22:01 采纳率: 50%
浏览 20
已采纳

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

 

A:输入全班各门课的成绩

B:计算输出每个学生各门课的平均成绩

C:计算输出各门课全班平均成绩

D:对全班学生的平均成绩由高到低排序并输出

用action函数设计不同功能实现以上功能

  • 写回答

1条回答 默认 最新

  • 小P聊技术 2021-06-16 22:03
    关注
    #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;
    
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!