解题思路:阅读题目,我们可以发现,本题分为两个任务:
一、计算三科分别的平均成绩。
二、输出成绩最高的学生的信息。
先来本题所需的主要知识点:结构体
结构体的用处是定义一个“数据类型”。每个数据类型内包括各类型的多个数据。
定义结构体的基本写法
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分
2 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:513 |
wu-淘淘的名单 (C++代码)浏览:1339 |
WU-输出九九乘法表 (C++代码)浏览:1671 |
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:633 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:596 |
Cylinder (C语言描述+详细分析)浏览:3265 |
大家好,我是验题君浏览:577 |
C二级辅导-温度转换 (C语言代码)浏览:731 |
程序员的表白 (C语言代码)浏览:598 |