假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。
输入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
大括号内的内容是结构所包含的结构成员,也叫结构分量
值得注意的是结构也是可以嵌套的~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~