使用结构类型 解决“输出平均分最高的学生”

66 阅读1分钟
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。

输入n个学生的成绩信息,计算并输出平均分最高的学生信息
//输出平均分最高的学生
#include<stdio.h>
struct student
{
	int num;
	char name[10];
	int computer,english,math;    //定义结构类型
	double average;
};
int main()
{
	int i,n;
	struct student max,sztu;        //定义结构变量
	printf("Input n:\n");
	scanf("%d",&n);
	printf("Input the student's number, name and course scores\n");
	for(i=1;i<=n;i++)
	{
		printf("No.%d:",i);
		scanf("%d%s%d%d%d",&sztu.num,sztu.name,&sztu.computer,&sztu.english,&sztu.math);

	sztu.average=(sztu.computer+sztu.english+sztu.math)/3.0;
	if(i==1)
		max=sztu;
	else if(max.average<sztu.average)
		max=sztu;
	}
	printf("num:%d, name:%s, average:%.2f\n ",max.num,max.name,max.average);
	return 0;
 } 

在这个代码中我们使用了一种新的数据类型“结构类型”,就像数组和指针一样,结构也是一种构造数据类型(或者叫派生数据类型),然而它和数组的区别在于:数组中所有元素的数据类型必须是相同的,而结构中成员的数据类型可以不同!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在这个代码中我们还定义了两个结构变量sztu、max, 结构变量可以通过结构成员操作符“ . ”对其某个成员进行引用,如果两个结构变量的类型相同,还可以直接赋值,如max=sztu,将一个结构变量的所有成员值都复制给另一个结构变量~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

结构类型名:struct和结构名合起来共同组成结构类型名,比如struct student

大括号内的内容是结构所包含的结构成员,也叫结构分量

值得注意的是结构也是可以嵌套的~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~