设计一个菜单驱动的学生成绩管理程序,实现对学生的各种的管理,
(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 是一个一维数组,用于保存每个学生的总分。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
计算全班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;
}
实现学生成绩管理程序
可以采用以下方案:
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;
}