#定義學生2
typedef結構標記圖
{
char name[11];
char stunum[11];
浮點score1,score2,score3
浮動總數,aver
}斯圖;
Void input(STU *stu,int num) //stu是學生數組的第壹個地址,num是數組長度。
{
int I;
Printf("請輸入%d名學生的基本信息:\n ",num);
Printf("姓名和學號,壹年級,二年級,三年級\ n ");
for(I = 0;我& ltnumi++)
{
scanf("%s%s%f%f%f ",& amp斯圖[我]。姓名& amp斯圖[我]。stunum & amp;stu[i].score1,
& amp斯圖[我]。得分2,與。stu[I]. score 3);
}
}
float verage(stu * stu,int num)//stu是學生數組的第壹個地址,num是數組的長度,返回總平均分。
{
int I;
浮點aver total = 0;
for(I = 0;我& ltnumi++)
{
斯圖[我]。總計= 0;
斯圖[我]。total = stu[I]. score 1+stu[I]. score 2+stu[I]. score 3;
斯圖[我]。aver = stu[i]。總數/3;
avertotal += stu[i]。aver
}
返回aver total/num;
}
Voidmax (stu * stu,intnum,stu * sturev,int * sturevnum)//stu是學生數組的第壹個地址,num是數組長度。
//stuRev表示要接收的數組,stuRevNum表示最終接收的學生數,即分數最高的學生數(可能不止壹個)。
{
STU temp[5];
float max total = 0;
int i,temp _ index = 0;
for(I = 0;我& ltnumi++)
{
如果(斯圖[我]。總計& gtmaxtotal)
{
maxtotal = stu[i]。總計;
temp[0]= stu[I];
temp _ index = 0;
}
else if(stu[i]。total==maxtotal)
{
temp[++ temp _ index]= stu[I];
}
}
for(I = 0;我& lt= temp _索引;i++)
{
stur ev[I]= temp[I];
}
* stuRevNum = temp _ index+1;
}
void main()
{
STU STU[學生];
STU STU max[學生];
int stumax_num,I;
平均浮動總量;
輸入(stu,學生);
avertotal = average(stu,學生);
最大值(學生,學生,最大值,& ampstu max _ num);
//輸出結果
printf(" 3門課程的平均成績:%4.2f\n ",aver total);
Printf("有%d個最高分的學生:\n ",stumax _ num);
Printf("姓名和學號,壹年級,二年級,三年級\ n ");
for(I = 0;我& ltstumax _ numi++)
{
printf(" % 4s % 4s %-4.2f %-4.2f \ n ",stumax[i].名字,stumax[i]。斯圖納姆,
stumax[i].score1,stumax[i].score2,stu max[I]. score 3);
}
}