从键盘输入n个学生的学号和成绩,计算他们的平均成绩,并列出成绩最好的前t名学生的学号和分数。要求:
- 使用new动态分配数组。
- n和t的值从键盘输入。
- 定义3个自定义函数:输入数据;计算平均成绩;输出前t个学生的学号和分数。
- 主函数调用自定义函数。
3.编写自定义函数找出二维数组(3*4)中元素的最大值与最小值,并返回其最大值与最小值,并在main函数中测试结果。要求:
- 数组在main函数中使用随机函数获得赋值;
- 自定义函数返回类型为void;
- 输出结果在main函数中实
#include <iostream> #include <string> using namespace std; struct st { int num; //学号 float g; //成绩 }; void stuScanf(struct st student[], int n) { cout << "请依次输入学生的学号和分数:" << endl; for (int i = 0; i < n; i++) //输入学生得信息 { cin >> student[i].num; cin >> student[i].g; } } float stuMid(struct st student[], int n) { float mid = 0, sum = 0; for (int i = 0; i < n; i++) sum += student[i].g; mid = sum / n; return mid; } void stuPrint(struct st student[], int n, int t) //打印前t个学上的成绩 { struct st temp; //中间结构体变量 for (int k = 0; k < n; k++) //对所有学生得成绩排序 { for (int j = k + 1; j < n; j++) { if (student[j].g > student[k].g) { temp = student[k]; student[k] = student[j]; student[j] = temp; } } } for (int i = 0; i < t; i++) //输出前n个学生得成绩 { cout << student[i].num << "-" << student[i].g << endl; } } int main() { int n, t; cout << "请输入学生的人数:"; cin >> n; st* student = new st[n]; stuScanf(student, n); //输入学生学号和成绩 cout << "学生的平均成绩为:" << stuMid(student, n) << endl; cout << "请输入要排序的学生人数:"; cin >> t; stuPrint(student, n, t); //排序并输出前t名学生得成绩 }