解题思路:阅读题目,我们可以发现,本题分为两个任务:
一、计算三科分别的平均成绩。
二、输出成绩最高的学生的信息。
先来本题所需的主要知识点:结构体
结构体的用处是定义一个“数据类型”。每个数据类型内包括各类型的多个数据。
定义结构体的基本写法
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 人评分
【密码】 (C语言代码)浏览:345 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1175 |
蛇行矩阵 (C语言代码)浏览:787 |
简单的a+b (C语言代码)浏览:555 |
Cylinder (C语言描述+详细分析)浏览:3338 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:556 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:672 |
简单的a+b (C语言代码)浏览:570 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:720 |
整数平均值 (C语言代码)浏览:845 |