程序要求:有十个学生,每个学生的数据包括学号、姓名、三门课程的成绩,从键盘输入10个学生的数据,要求输出三门课程总平均成绩以及最高分的学生的数据(包括学号、姓名、三门课程的成绩和平均成绩)。
在这个程序中,很明显需要根据题目利用结构体编程,并且结构体中有数组等变量。设置了10个数组,每一项中包括了一个结构体,结构体中各项都需要通过循环程序输入。
需要注意的是,在程序中,结构体变量不能够作为一个整体进行输入或者输出,只能对结构体变量中的各个成员分别进行输入和输出;引用结构体变量中成员的方式为
结构体变量名.成员名
如果成员名是一个数组、结构体或者其他类型,需要作出相应的变换。
如果成员本身又属于一个结构体类型,那么就需要我们利用更多的成员访问符,对最底层的变量进行访问,并且一切的操作只能在最低层面,例如在最底层面进行赋值、存取或者运算。
程序如下:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio.Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
struct student
{
intnum;
charname[8];
intsco[3];
floatave;
}a[10];
inti,j,k=0,l;
for(i=0;i<10;i++)
{ printf("输入第%d个学生姓名后依次输入他的学号和各科成绩...\n",i);
scanf("%s",&a[i].name);
scanf("%d,%d,%d,%d",&a[i].num,&a[i].sco[0],&a[i].sco[1],&a[i].sco[2]);
}
for(i=0;i<10;i++)
{
printf("%d,%s,%d,%d,%d",a[i].num,a[i].name,a[i].sco[0],a[i].sco[1],a[i].sco[2]);
printf("\n");
}
intsum[10]={0};
for(i=0;i<10;i++)
{
for(j=0;j<3;j++)
{
sum[i]=a[i].sco[j]+sum[i];
}
}
for(i=0;i<10;i++)
{
a[i].ave=sum[i]/3;
}
for(i=0;i<10;i++)
{
if(sum[i]>k)
{
k=sum[i];
l=i;
}
}
printf("%d号学生总分最高,他的信息是...\n",(l+1));
printf("%d,%s,%d,%d,%d,%f",a[l].num,a[l].name,a[l].sco[0],a[l].sco[1],a[l].sco[2],a[l].ave);
printf("\n");
return0;
}