解题思路:阅读题目,我们可以发现,本题分为两个任务:
一、计算三科分别的平均成绩。
二、输出成绩最高的学生的信息。
先来本题所需的主要知识点:结构体
结构体的用处是定义一个“数据类型”。每个数据类型内包括各类型的多个数据。
定义结构体的基本写法
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语言训练-素数问题 (C语言代码)浏览:1695 |
printf基础练习2 (C语言代码)浏览:321 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:544 |
1071题解浏览:584 |
1050题解(结构体数组与结构体指针的使用)浏览:1216 |
C二级辅导-温度转换 (C语言代码)浏览:802 |
Tom数 (C语言代码)浏览:598 |
数组输出 (C语言代码)浏览:749 |