C语言-学生学号成绩读入程序(输出了学生总分、平均分、名次以及学生信息的查询)

任务描述

成绩排名次
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:
(1) 计算每个学生的总分和平均分;
(2) 按总分成绩由高到低排出成绩的名次;
(3) 输出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4) 任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
提示:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。

测试说明

测试数据:

20183001 98 99 97
20183002 89 85 90
20183003 77 67 88
20183004 88 82 95
20183005 56 76 80
20183006 66 65 74
20183007 99 99 91
20183008 56 63 60
20183009 45 56 63
20183010 90 88 87


输入学生信息的格式为:

C语言-学生学号成绩读入程序(输出了学生总分、平均分、名次以及学生信息的查询)_第1张图片

按总分排名,按名次输出名次表,输出内容为:

C语言-学生学号成绩读入程序(输出了学生总分、平均分、名次以及学生信息的查询)_第2张图片


任意输入一个学号,查找并输出该学生信息,输出内容为:

找不到时输出为:

注:找不到时格式字符串为:

1.Please enter searching number:20183006

2.position: NO | MT EN PH SUM AVER

3.8 20183006 | 66 65 74 205 68

printf("position: %8s\t|%6s%6s%6s%7s%8s\n"," NO ","MT","EN","PH","SUM","AVER"); 

 

#include    
#define STU 30  
#define COURSE 3  
void Input(long num[], int score[][COURSE], int n);
void GetSumAver(int score[][COURSE], int n, int sum[], float aver[]);
void Sort(long num[], int score[][COURSE], int n, int sum[], float aver[]);
void Print(long num[], int score[][COURSE], int n, int sum[], float aver[]);
int Search(long num[], int n, long x);

int main(void)  
{  
    int n, score[STU][COURSE],sum[STU],pos;  
    long num[STU],x;  
    float aver[STU];  
    printf("Please enter the total number of the students(n<=30):");  
    scanf("%d", &n);                    //输入参加考试的学生人数  
    printf("Enter No. and score as: MT  EN  PH\n");  
    Input(num, score, n);                //输入学生成绩
    GetSumAver(score, n, sum, aver);    //计算总分和平均分  
    printf("Before sort:\n");  
    Print(num, score, n, sum, aver);  
    Sort(num, score, n, sum, aver);        //排名次  
    printf("After sort:\n");  
    Print(num, score, n, sum, aver);
    printf("Please enter searching number:\n");
    scanf("%ld", &x);//以长整型的格式输入待查找学生的学号
    pos = Search(num, n, x); //名次查询
    if(pos != -1)
    {
        printf("position:   %8s\t|%6s%6s%6s%7s%8s\n","  NO    ","MT","EN","PH","SUM","AVER"); 
        printf("%8d    %4ld\t|%6d%6d%6d%7d%8.0f\n",
               pos+1, num[pos], score[pos][0], score[pos][1], score[pos][2], sum[pos], aver[pos]);

    }
    else
    {
        printf("Not found!\n");
    }
    return 0;  
}  

// 函数功能:输入某班学生期末考试三门课程成绩  
void Input(long num[], int score[][COURSE], int n)  
{  
    int  i, j;  
    for (i=0; i sum[k])
            {
                k =j;
            }
        }
        if(k != i)
        {
            temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;
            temp2 = num[k]; num[k] = num[i]; num[i] = temp2;
            temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;
            for(m=0; m

C语言-学生学号成绩读入程序(输出了学生总分、平均分、名次以及学生信息的查询)_第3张图片

 

你可能感兴趣的:(C语言-数组,c语言,开发语言)