完成以下程序,并进行调试
某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分;
2)按总分成绩由高到低排出成绩的名次;
3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分;
4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
程序代码:

#include <stdio.h>
void total(int score[][3],int n,int sum[])//计算总分
{
    int i,j;
    for (i=0;i<n;i++)
    {
        sum[i] = 0;
        for(j=0;j<3;j++)
            sum[i] += score[i][j];
    }
}
void averger(int sum[],int n,float aver[])//计算平均分
{
    int i;
    for(i=0;i<n;i++)
        aver[i] = 1.0 * sum[i]/3;
}
void sort(int sum[],int n,int score[][3],float aver[],int num[])//按总分排序
{
    int i,j;
    int t,k;
    float f;
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if (sum[j] < sum[j+1])
            {
                t = sum[j];
                sum[j] = sum[j+1];
                sum[j+1]=t;

f=aver[j];//交换平均分
                aver[j+1]=aver[j+1];
                aver[j+1]=f;
                for(k=0;k<3;k++)//交换score
                {
                    t = score[j][k];
                    score[j][k]= score[j+1][k];
                    score[j+1][k] = t;
                }
                t = num[j];//交换学号
                num[j]=num[j+1];
                num[j+1]=t;
            }
        }
    }
}
void pm(int sum[],int pm[],int n)//排名,并保存名次
{
    int i = 0;
    int mc = 1;
    pm[0] = 1;
    for (i=1;i<n;i++)
    {
        if(sum[i]== sum[i-1])
            pm[i] = mc;
        else
        {
            mc++;
            pm[i] = mc;
        }
    }
}
void printmc(int num[],int n,int mc[])//打印名次表
{
    int i;
    printf("学号  排名\n");
    for (i=0;i<n;i++)
    {
        printf("%2d    %d\n",num[i],mc[i]);
    }
}
int find(int num[],int score[][3],int n,int sum[],int mc[],int k)//查找k
{
    int i=0;
    for (i=0;i<n;i++)
    {
        if(num[i] == k)
        {
            printf("学号:%d\n",num[i]);
            printf("成绩:%d %d %d\n",score[i][0],score[i][1],score[i][2]);
            printf("总成绩:%d\n",sum[i]);
            printf("名次:%d\n",mc[i]);
            break;
        }
    }
    if(i==n)
    {
        printf("未找到该学号学员\n");
    }
    return 0;
}
 
int main()
{ int score[30][3],sum[30],num[30],mc[30];
    float aver[30];
    int n,k,i,j;
    printf("请输入学员人数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("请输入学员%d的数学、英语、计算机成绩:",i+1);
        num[i] = i+1;
        for(j=0;j<3;j++)
            scanf("%d",&score[i][j]);
    }
    total(score,n,sum);//计算总成绩
    averger(sum,n,aver);//计算平均成绩
    sort(sum,n,score,aver,num);//根据总成绩排序
    pm(sum,mc,n);//排名
    printmc(num,n,mc);//打印排名
    printf("请输入要查找的学员学号:");
    scanf("%d",&k);
    find(num,score,n,sum,mc,k);//查找某个学号学员的信息
    return 0;
}

完成以下程序,并进行调试某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试。相关推荐

  1. 1、某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)打印出名

    #include<iostream> #include<iomanip> using namespace std; int main() {     int a[30][6], ...

  2. 某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过40人参加考试。请编程计算:(1)每个学生的总分和平均分;(2)每门课程的总分和平均分。

    某班期末考试科目为数学(MT).英语(EN)和物理(PH),有最多不超过40人参加考试.请编程计算:(1)每个学生的总分和平均分:(2)每门课程的总分和平均分. **输入格式要求:"%d&q ...

  3. C++程序设计基础,数组实验(题干信息:某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超30人参加考试,具体问题在下面)

    (1)计算每个学生的总分和平均分: (2)按总分成绩由高到低排出成绩的名次: (3)打印出名次表,表格内包括学生编号.各科分数.总分和平均分: (4)任意输入一个学号,能够查找出该学生在班级中的排名及 ...

  4. 某班有最多不超过30人(具体人数由实际输入决定)参加期末考试,最多不超过6门(具体门数由实际输入决定)。

    某班有最多不超过30人(具体人数由实际输入决定)参加期末考试,最多不超过6门(具体门数由实际输入决定).学生成绩管理系统是一个非常实用的程序,如果能够提前学习字符文件读写操作,把用户输入的数据存盘为字 ...

  5. 对某班学生成绩排序。从键盘依次输入某班学生的姓名和成绩(一个班级人数最多不超过50人)并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩,成绩相同时,则按输入次序排序。

    [问题描述] 对某班学生成绩排序.从键盘依次输入某班学生的姓名和成绩(一个班级人数最多不超过50人)并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩,成绩相同时,则按输入次序排序. [输入形式 ...

  6. [C语言]统计成绩问题:输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。

    输入 输入包含两行:    第一行是一个整数n,表示班级人数.    第二行是n个整数,表示n个学生的成绩,相邻两项之间用一个空格隔开. 输出 输出不及格人数. 输入示例 3    70 90 58 ...

  7. [C语言]成绩与平均分问题:编写函数ReadScore()和Average(),输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,用函数编程统计成绩高于平均分的学生人数。

    输入 输入若干个整数,相邻两项之间用一个空格隔开. 输出 输出成绩高于平均分的学生人数. 输入示例 70 90 58 -5 输出示例 1 数据范围 输入和输出均为int范围的整数 #include & ...

  8. 8.4 输入某班学生某门课的成绩,(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数

    #include<stdio.h> main() { int n,a[40],i,count=0; printf("请输入学生人数:"); scanf("%d ...

  9. 通过WiFi对STC单片机程序下载和调试

    简 介: 设计了基于WiFi-UART的STC单片机下载调试模块,这样便于对嵌入式系统进行远程调试开发,特别是在一些具有移动功能的平台,强电平台以及需要实时监视和修改程序的应用场合. 关键词: STC ...

最新文章

  1. jvm性能调优实战 -57数据日志分析系统的OOM问题排查
  2. Mysql字段数据类型:char与varchar的区别
  3. python 反射和动态加载_Python的反射
  4. mysql统计每周每个学校新增学生数量_深入学习之mysql(四)聚合函数
  5. 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码
  6. 49.Kth Largest Element in an Array
  7. Shell_Shell调用SQLPlus简介(案例)
  8. jQuery动画实现下拉菜单二级联动
  9. (23)Linux下Clion中搭建opencv环境
  10. SQL Server 中死锁产生的原因及解决办法
  11. 群晖如何建php网站_群晖nas使用教程31:搭建个人网站ZBLOG
  12. 分享CFA一级考试干货
  13. matlab期货,Matlab在股指期货中的应用
  14. 九型人格Enneagram
  15. 年终考核:对你的上司,你是如何评价的?
  16. PTA 单链表(流浪狗收养所)
  17. 群晖硬盘扩容 逃课方法
  18. 服务器:SATA、PATA及IDE的比较
  19. hue源码编译,替换cloudera manage hue,解决hue滚动条bug问题
  20. 大数据ui设计师_为什么设计师应该使用真实数据

热门文章

  1. 进程退出以及内存释放
  2. mysqldump导出数据表结构
  3. linux显示目录层次,linux文件层级、目录、文件基本操作介绍
  4. 如何高效地在网上找开源项目做!
  5. Spring Boot数据库操作之基本的JDBC访问和JDBCTemplate使用
  6. 2020.10.21【转载】丨GWAS全基因组关联分析流程
  7. ati自定义分辨率_游戏自定义分辨率教学 (低配超高配福利)
  8. 【Linux】文件的压缩和解压
  9. Prometheus 学习之——本地存储 TSDB
  10. C# EPPlus根据Excel模板读取与保存数据