完整题干:
一个班10名学生,包含姓名、学号和3门课程的成绩。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。
个人答案:
#include <iostream>
#include <string>
using namespace std;
int main()
{
//函数声明,每次都需要重新录入
void first_average(int gra1[]);
void two_fail(string name[], int num[], int gra1[], int gra2[], int gra3[]);
void high(string name[], int num[], int gra1[], int gra2[], int gra3[]);
string name[10]; int num[10], gra1[10], gra2[10], gra3[10];
int i;
for (i = 0; i < 10; i++)
{
cout << "请输入第 " << i + 1 << "位学生的姓名,学号,成绩(政治,数学,专业课):" << endl;
cin >> name[i] >> num[i] >> gra1[i] >> gra2[i] >> gra3[i];
}
cout << "政治平均成绩:";
first_average(gra1);
cout << '\n';
cout << "两门以上不及格学生有:" << endl;
two_fail(name, num, gra1, gra2, gra3);
cout << '\n';
cout << "平均成绩90+或全部课程85+的学生:" << endl;
high(name, num, gra1, gra2, gra3);
cout << '\n';
system("pause");
return 0;
}
//求第一门课的平均成绩
void first_average(int gra1[])
{
int i;
int m = 0;
float x, n = 10;
for (i = 0; i < 10; i++)m = m + gra1[i];
x = m / n;
cout << x;
}
//找出两门以上课程不及格的学生
void two_fail(string name[], int num[], int gra1[], int gra2[], int gra3[])
{
int i; float x, n = 3;
for (i = 0; i < 10; i++)
if ((gra1[i] < 60 && gra2[i] < 60) || (gra2[i] < 60 && gra3[i] < 60) || (gra1[i] < 60 && gra3[i] < 60))
{
x = (gra1[i] + gra2[i] + gra3[i]) / n;
cout << name[i] << ' ' << num[i] << ' ' << gra1[i] << ' ' << gra2[i] << ' ' << gra3[i] << "平均成绩:" << x << endl;
}
}
//找出平均成绩90+或全部85+
void high(string name[], int num[], int gra1[], int gra2[], int gra3[])
{
int i;
float x, n = 3;
for (i = 0; i < 10; i++)
{
x = (gra1[i] + gra2[i] + gra3[i]) / n;
if (((gra1[i] > 85) && (gra2[i] > 85) && (gra3[i] > 85)) || (x > 90))
cout << name[i] << ' ' << num[i] << ' ' << gra1[i] << ' ' << gra2[i] << ' ' << gra3[i] << endl;
}
结果: