1、一个班有6个学生,开5门课。
(1)求第一门课的平均分
(2)找出有2门及以上不及格的学生,输出他们的学号,姓名,全部课程成绩和平均成绩
(3)找出平均成绩90分以上或全部课程成绩在85分及以上的学生
代码:
#include <iostream>
#include <string>
using namespace std;
typedef struct Student{
string ID;
string name;
double grades[5];
}Student;
void Question1(Student Stu[])
{
double sum=0;
for(int i=0; i<6; i++){
sum+=Stu[i].grades[0];
}
cout<<sum/6<<endl;
}
void Question2(Student Stu[000])
{
for(int i=0; i<6; i++){//循环遍历6个学生
double sum=0; //每个学生的总成绩
int cnt=0; //记录不及格科目数
for(int j=0;j<5;j++){//循环遍历5门成绩
sum+=Stu[i].grades[j];
if(Stu[i].grades[j]<60){
cnt++;
}
}
if(cnt>=2){ //输出信息
cout<<"ID:"<<Stu[i].ID<<" name:"<<Stu[i].name<<" grades:";
for(int j=0;j<5;j++){
cout<<Stu[i].grades[j]<<" ";
}
cout<<" average:"<<sum/5<<endl;
}
}
}
void Question3(Student Stu[])
{
for(int i=0;i<6;i++){
double sum=0;
bool ret=true; //假设开始每门课成绩都 >=85
for(int j=0;j<5;j++){
sum+=Stu[i].grades[j];
if(Stu[i].grades[j]<85){
ret=false;//如果有一门成绩 <85,ret为false
break;
}
}
if(sum/5>=90&&ret){
cout<<"ID:"<<Stu[i].ID<<" name:"<<Stu[i].name<<" avreage:"<<sum/5;
}
}
}
int main()
{
Student aClass[6]={
{"001","刘一",{90,93,90,89,89}},
{"002","刘二",{86,81,95,93,88}},
{"003","刘三",{70,70,50,50,89}},
{"004","刘四",{40,60,60,70,59}},
{"005","刘五",{70,93,90,89,89}},
{"006","刘六",{85,93,90,89,89}}
};
Question1(aClass);
Question2(aClass);
Question3(aClass);
return 0;
}
73.5
ID:003 name:刘三 grades:70 70 50 50 89 average:65.8
ID:004 name:刘四 grades:40 60 60 70 59 average:57.8
ID:001 name:刘一 avreage:90.2
遇到的问题:
结构体数组作为形参时,函数头应该这样写
void Question1(Stu stu[])
要在stu后面加上方括号,应该是数组都要这样。