题目描述
类似于简单的成绩录入系统。
- 一次性录取n名学生的学号、姓名、科目、成绩。(输入)
- 计算每个学生的平均成绩。
3. 计算所有学生某一科目的平均成绩。(感觉这句话有问题) - 计算所有科目的平均成绩。
示例
思路
-
运用结构体,将学生的成绩等信息存入。
-
输入时如果给了具体的个数,则可以for循环输入;若没有给个数,则需要用istringstream输入流输入。
-
istringstream:首先用getline获取一行字符串s,然后用istringstream定义的iss绑定s,再对iss进行划分,类似cin,相应的位置对应学生的相应信息。
具体实现
#include<bits/stdc++.h>
using namespace std;
struct student{ //定义结构体数组
string num; //学号
string name; //姓名
string project1; //科目1
int grade1; //成绩1
string project2; //科目2
int grade2; //成绩2
int ave; //平均成绩
}stu[100];
int main(){
int n=0;
string s;
while(getline(cin,s)){ //读入一行
if(s.size()==0) break; //若长度为0,则跳出循环
istringstream iss(s); //绑定s,并对其划分
iss>>stu[n].num>>stu[n].name>>stu[n].project1>>stu[n].grade1>>stu[n].project2>>stu[n].grade2;
n++;
}
//sort(stu,stu+n,cmp);
for(int i=0; i<n; i++){ //计算每个学生平均成绩
stu[i].ave = (stu[i].grade1+stu[i].grade2) / 2;
}
//科目1平均成绩
int sum1=0,sum2=0;
for(int i=0; i<n; i++)
sum1 += stu[i].grade1;
sum1/=n;
//科目2平均成绩
for(int i=0; i<n; i++)
sum2 += stu[i].grade2;
sum2/=n;
//输出每个学生的平均成绩
for(int i=0; i<n; i++){
cout<<stu[i].name<<" "<<stu[i].ave<<endl;
}
cout<<"科目1平均成绩:"<<sum1<<endl;
cout<<"科目2平均成绩:"<<sum2<<endl;
return 0;
}