宋睿


私信TA

用户名:dotcpp0656530

访问量:1404

签 名:

等  级
排  名 1491
经  验 2773
参赛次数 16
文章发表 8
年  龄 13
在职情况 学生
学  校 大庆一中
专  业

  自我简介:

解题思路:阅读题目,我们可以发现,本题分为两个任务:

一、计算三科分别的平均成绩。

二、输出成绩最高的学生的信息。

先来本题所需的主要知识点:结构体

结构体的用处是定义一个“数据类型”。每个数据类型内包括各类型的多个数据。

定义结构体的基本写法

struct 结构类型名 
{ 
    数据类型 成员名 1; 
    数据类型 成员名 2; 
    ...... 
    数据类型 成员名 n; 
};

若要定义数组,可以在分号之前直接写上变量名和数量。

接下来,解决第一个任务。

每个任务分为三个部分。

第一部分:定义需要的变量

计算平均数,当然要计算总和,因为有三个成绩,所以需要定义三个总和。

因为要除以数量,最好用double类型。

double sum_a=0,sum_b=0,sum_c=0;

然后是循环中的部分

把每个总和加上对应的成绩。

sum_a+=h[i].sco_a;
sum_b+=h[i].sco_b;
sum_c+=h[i].sco_c;

最后是输出

cout<<sum_a/n<<' '<<sum_b/n<<' '<<sum_c/n<<endl;

很好,接下来是第二个任务。

第一部分

需要一个max_stu记录成绩最好学生学号和一个max_score比较最高的分数。

第二部分

若该学生的总分大于max_score,那么他就是目前分数最高的学生。

h[i].score=h[i].sco_a+h[i].sco_b+h[i].sco_c;
        if(h[i].score>max_score)
        {
            max_score=h[i].score;
            max_stu=i;
        }

第三部分,输出这个选定的学生的信息。

cout<<h[max_stu].id<<' '<<h[max_stu].name<<' '<<h[max_stu].sco_a<<' '<<h[max_stu].sco_b<<' '<<h[max_stu].sco_c<<endl;

参考代码:

#include <iostream>

using namespace std;
struct student
{
    char id,name[100];
    double sco_a,sco_b,sco_c,score;
}h[1000];
int main()
{
    int n,max_stu;
    double sum_a=0,sum_b=0,sum_c=0,max_score=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>h[i].id>>h[i].name>>h[i].sco_a>>h[i].sco_b>>h[i].sco_c;
        sum_a+=h[i].sco_a;
        sum_b+=h[i].sco_b;
        sum_c+=h[i].sco_c;
        h[i].score=h[i].sco_a+h[i].sco_b+h[i].sco_c;
        if(h[i].score>max_score)
        {
            max_score=h[i].score;
            max_stu=i;
        }
    }
    cout<<sum_a/n<<' '<<sum_b/n<<' '<<sum_c/n<<endl;
    cout<<h[max_stu].id<<' '<<h[max_stu].name<<' '<<h[max_stu].sco_a<<' '<<h[max_stu].sco_b<<' '<<h[max_stu].sco_c<<endl;
    return 0;
}


 

0.0分

3 人评分

  评论区