计算n个学生的最高总分和最高平均分需要用什么函数

设计一个菜单驱动的学生成绩管理程序,实现对学生的各种的管理,
(1)是输入n个学生5门成绩的函数
(2)计算每个学生的5门的总成绩和平均成绩
(3)计算n个学生的最高总分和最高平均分
(4)输入一个学号,输出该学生的学号、姓名和总分

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

对于这个问题,需要设计以下几个函数:

1、 输入n个学生5门成绩的函数
这个函数的作用是获取用户输入的学生人数和每个学生的成绩,并将这些信息保存到一个数组中。函数原型如下:

void input_scores(int n, float scores[][5]);

其中,n 表示学生人数,scores 是一个二维数组,用于保存每个学生的成绩。

2、 计算每个学生的5门的总成绩和平均成绩
这个函数的作用是计算每个学生的总成绩和平均成绩,并将结果保存到一个数组中。函数原型如下:

void calculate_scores(int n, float scores[][5], float total_scores[], float avg_scores[]);

其中,n 表示学生人数,scores 是一个二维数组,用于保存每个学生的成绩,total_scores 是一个一维数组,用于保存每个学生的总成绩,avg_scores 是一个一维数组,用于保存每个学生的平均成绩。

3、 计算n个学生的最高总分和最高平均分
这个函数的作用是计算 n 个学生的最高总分和最高平均分,并将结果保存到两个变量中。函数原型如下:

void calculate_highest_scores(int n, float total_scores[], float avg_scores[], float *highest_total_score, float *highest_avg_score);

其中,n 表示学生人数,total_scores 是一个一维数组,用于保存每个学生的总成绩,avg_scores 是一个一维数组,用于保存每个学生的平均成绩,highest_total_score 和 highest_avg_score 是两个指针变量,用于保存最高总分和最高平均分。

4、 输入一个学号,输出该学生的学号、姓名和总分
这个函数的作用是获取用户输入的学号,并根据学号查找对应的学生信息(包括学号、姓名和总分),并将这些信息输出到屏幕上。函数原型如下:

void search_student(int n, int ids[], char names[][20], float total_scores[]);

其中,n 表示学生人数,ids 是一个一维数组,用于保存每个学生的学号,names 是一个二维数组,用于保存每个学生的姓名,total_scores 是一个一维数组,用于保存每个学生的总分。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/713757
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:输入两个学生的学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩
  • 除此之外, 这篇博客: 算法练习【3】计算全班n个学生的平均分,输出平均分以及低于平均分的成绩中的 题目 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 计算全班n个(n≤30)学生的平均分,输出平均分以及低于平均分的成绩。

    输入格式:
    先输入整数n,再依次输入n个整数成绩,以空格间隔。

    输出格式:
    在第一行以格式average=result输出平均分(result保留小数点后两位),在下一行依次输出低于平均分的成绩,每个成绩后跟一个空格。(注意最后一个数后面有一个空格)

    输入样例:
    20
    67 78 77 45 97 65 53 90 75 88 85 ** ** ** ** 56 96 92 44 70
    输出样例:
    average=74.40
    67 45 65 53 72 56 44 70

    #include <stdio.h>
    int main()
    {
    	int n = 0;
    	int c[30] = {0};
    	int i = 0;
    	float ava = 0.0;
    	
    	scanf("%d", &n);
    	for (i = 0; i < n; i++)
    	{
    		scanf("%d", &c[i]);
    	}
    	
    	for (i = 0; i < n; i++)
    	{
    		ava += c[i] * 1.0;
    	}
    	ava /= n;
    	printf("average=%0.2f\n",ava);
    	
    	for(i = 0; i < n; i++)
    	{
    		if (c[i] < ava)
    		{
    			printf("%d ",c[i]);
    		}
    	}
    	return 0;
    }

     

  • 以下回答由chatgpt基于相关博客总结生成:

    实现学生成绩管理程序

    可以采用以下方案:

    1.定义结构体Student用来存储每个学生的信息和成绩,成员包括:学号、姓名、各科成绩、总分、平均分。

    2.输入n个学生5门成绩的函数,通过循环输入每个学生的学号、姓名和各科成绩,计算出总分和平均分,存储到结构体数组中。

    3.计算每个学生的5门成绩的总成绩和平均分,可以在输入函数中直接计算,也可以再定义一个函数来计算,具体实现方式如下:

    //计算总分和平均分
    void calc_score(Student& stu)
    {
        stu.total_score = 0;
        for (int i = 0; i < 5; i++)
        {
            stu.total_score += stu.scores[i];
        }
        stu.average_score = stu.total_score / 5.0;
    }
    

    4.计算n个学生的最高总分和最高平均分,可以在输入函数中直接计算,遍历结构体数组,找到总分和平均分最高的学生即可。

    //计算最高总分和最高平均分
    void calc_max_score(Student* stu_arr, int size, int& max_total_score, double& max_average_score)
    {
        max_total_score = 0;
        max_average_score = 0.0;
        for (int i = 0; i < size; i++)
        {
            if (stu_arr[i].total_score > max_total_score)
            {
                max_total_score = stu_arr[i].total_score;
            }
            if (stu_arr[i].average_score > max_average_score)
            {
                max_average_score = stu_arr[i].average_score;
            }
        }
    }
    

    5.根据学号查询某个学生的学号、姓名和总分,可以写一个函数来实现,遍历结构体数组,找到学号匹配的学生即可。

    //根据学号查询学生信息
    void find_student_by_id(Student* stu_arr, int size, int id)
    {
        for (int i = 0; i < size; i++)
        {
            if (stu_arr[i].id == id)
            {
                cout << "学号:" << stu_arr[i].id << endl;
                cout << "姓名:" << stu_arr[i].name << endl;
                cout << "总分:" << stu_arr[i].total_score << endl;
                return;
            }
        }
        cout << "找不到该学生!" << endl;
    }
    

    完整代码如下:

    #include <iostream>
    using namespace std;
    
    //学生信息结构体
    struct Student
    {
        int id;//学号
        string name;//姓名
        int scores[5];//成绩
        int total_score;//总分
        double average_score;//平均分
    };
    
    //计算总分和平均分
    void calc_score(Student& stu)
    {
        stu.total_score = 0;
        for (int i = 0; i < 5; i++)
        {
            stu.total_score += stu.scores[i];
        }
        stu.average_score = stu.total_score / 5.0;
    }
    
    //计算最高总分和最高平均分
    void calc_max_score(Student* stu_arr, int size, int& max_total_score, double& max_average_score)
    {
        max_total_score = 0;
        max_average_score = 0.0;
        for (int i = 0; i < size; i++)
        {
            if (stu_arr[i].total_score > max_total_score)
            {
                max_total_score = stu_arr[i].total_score;
            }
            if (stu_arr[i].average_score > max_average_score)
            {
                max_average_score = stu_arr[i].average_score;
            }
        }
    }
    
    //根据学号查询学生信息
    void find_student_by_id(Student* stu_arr, int size, int id)
    {
        for (int i = 0; i < size; i++)
        {
            if (stu_arr[i].id == id)
            {
                cout << "学号:" << stu_arr[i].id << endl;
                cout << "姓名:" << stu_arr[i].name << endl;
                cout << "总分:" << stu_arr[i].total_score << endl;
                return;
            }
        }
        cout << "找不到该学生!" << endl;
    }
    
    int main()
    {
        int n;
        cout << "请输入学生人数:";
        cin >> n;
    
        //定义结构体数组
        Student* stu_arr = new Student[n];
    
        //循环输入每个学生
        for (int i = 0; i < n; i++)
        {
            cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
            cout << "学号:";
            cin >> stu_arr[i].id;
            cout << "姓名:";
            cin >> stu_arr[i].name;
            cout << "各科成绩:";
            for (int j = 0; j < 5; j++)
            {
                cin >> stu_arr[i].scores[j];
            }
            //计算总分和平均分
            calc_score(stu_arr[i]);
        }
    
        //计算最高总分和最高平均分
        int max_total_score;
        double max_average_score;
        calc_max_score(stu_arr, n, max_total_score, max_average_score);
        cout << "最高总分:" << max_total_score << endl;
        cout << "最高平均分:" << max_average_score << endl;
    
        //根据学号查询学生信息
        int id;
        cout << "请输入要查询的学生学号:";
        cin >> id;
        find_student_by_id(stu_arr, n, id);
    
        delete[] stu_arr;
    
        return 0;
    }