列:
有n个结构体变量,内含学生的学号,学号,和三门成绩。要求输出平均成绩最高学生的信息(包括学号、姓名、三门课程成绩和平均成绩)
解题思路:
将n个学生的数据表示为结构体数组(有n个元素)。按照功能函数化的思想,小林分别用3个函数来实现不同的功能。
源代码演示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#include<stdio.h>//头文件
#define N 3//宏定义
struct student //学生类结构体
{
int num; //学号
char name[20]; //姓名
float score[3]; //成绩
float aver; //平均分
} ;
int main() //主函数
{
void input( struct student s[]); //函数声明
struct student max( struct student s[]); //函数声明
void print( struct student s); //函数声明
struct student s[N],*p=s; //定义结构体变量
input (p); //调用函数
print(max(p)); //打印调用max函数结果
return 0; //主函数返回值为0
}
void input( struct student s[]) //自定义输入函数
{
int i; //定义整型变量
printf ( "请输入各学生的信息:学号、姓名、三门课成绩:\n" ); //提示语句
for (i=0;i<N;i++) //循环N次
{
scanf ( "%d %s %f %f %f" ,&s[i].num,&s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]); //输入信息
s[i].aver=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3; //求平均值
}
}
struct student max( struct student s[]) //自定义求最大值
{
int i,m=0; //定义整型变量
for (i=0;i<N;i++) //循环N次
{
if (s[i].aver>s[m].aver) //把平均分大的i赋值给m
{
m=i;
}
}
return s[m]; //将s[m]结果返回到函数调用处
}
void print ( struct student stud) //自定义打印函数
{
printf ( "\n成绩最高的学生是:\n" ); //提示语句
printf ( "学号;%d\n姓名;%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n" ,
stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver); //输出结果
}
|
编译运行结果如下:
请输入各学生的信息:学号、姓名、三门课成绩:
10010 Tom 100 90 80
10011 Jon 80 70 100
10012 Kim 100 90 95成绩最高的学生是:
学号;10012
姓名;Kim
三门课成绩:100.0, 90.0, 95.0
平均成绩: 95.00--------------------------------
Process exited after 44.45 seconds with return value 0
请按任意键继续. . .
到此这篇关于C语言实现输出平均成绩最高学生的信息的文章就介绍到这了,更多相关C语言输出平均成绩最高学生的信息内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://zhuanlan.zhihu.com/p/338642901