成绩录入

54 阅读1分钟

题目描述

类似于简单的成绩录入系统。

  1. 一次性录取n名学生的学号、姓名、科目、成绩。(输入)
  2. 计算每个学生的平均成绩。 3. 计算所有学生某一科目的平均成绩。(感觉这句话有问题)
  3. 计算所有科目的平均成绩。

示例

image.png

思路

  1. 运用结构体,将学生的成绩等信息存入。

  2. 输入时如果给了具体的个数,则可以for循环输入;若没有给个数,则需要用istringstream输入流输入。

  3. 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;
}