解题思路:定义一个学生结构,以及一个学生结构数组,循环动态复制到结构数组中
注意事项:
参考代码:
#include <stdio.h>
#include <stdlib.h>
//学生结构
typedef struct _student{
char id[50]; //学生的学号
char name[50]; //学生的姓名
double chinese;//学生的三科成绩
double math;
double english;
}Students;
int main()
{
/*
* 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,
* 从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,
* 以及最高分的学生的数据(包括学号、姓名、3门课成绩)
* 输入
* 2
* 1 blue 90 80 70
* b clan 80 70 60
* 输出
* 85 75 65
* 1 blue 90 80 70
*/
int n,i,j,temps,number;
double sum1 = 0,sum2 = 0,sum3 = 0;//用来存放某一科成绩的总和
int temp[50];
scanf("%d",&n);
Students students[n];//结构数组
for(i = 0;i < n;i++)//动态赋值
{
/*
scanf("%d",&students[i].id);
scanf("%s",&students[i].name);
scanf("%lf",&students[i].chinese);
scanf("%lf",&students[i].math);
scanf("%lf",&students[i].english);
*/
scanf("%s %s %lf %lf %lf",&students[i].id,&students[i].name,&students[i].chinese,&students[i].math,&students[i].english);
}
for(i = 0;i < n;i++)
{//通过遍历结构数组计算各科的总和
sum1 += students[i].chinese;
sum2 += students[i].math;
sum3 += students[i].english;
number = students[i].chinese + students[i].math + students[i].english;//存放某个学生三科成绩总和,并且存到整型数组中
temp[i] = number;
number = 0;
}
sum1 /= n;//计算各科的平均分
sum2 /= n;
sum3 /= n;
printf("%.0lf %.0lf %.0lf\n",sum1,sum2,sum3);
for(i = 0;i < n-1;i++)//冒泡排序算法,排序完后最大的总分在第一个元素
for(j = 0;j < n - i - 1;j++)
{
if(temp[j] < temp[j+1])
{
temps = temp[j];
temp[j] = temp[j + 1];
temp[j + 1] = temps;
}
}
for(i = 0;i < n;i++)//遍历结构数组查找哪个学生的总分最高
{
if(temp[0] == students[i].chinese + students[i].math + students[i].english)
{
printf("%s %s %.0lf %.0lf %.0lf\n",students[i].id,students[i].name,students[i].chinese,students[i].math,students[i].english);
}
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复