i++){/*计算平均成绩,找出成绩最高的学生*/
sum=0。
for(j=0。
j<3。
j++)
sum+=stu[i].score[j]。
stu[i].avr=sum/3.0。
average+=stu[i].avr。
if(sum>max){
max=sum。
maxi=i。
}
}
average/=10。
printf(“学号姓名成绩1成绩2成绩3平均分\n)。
for(i=0。
i<10。
i++){
printf(“%8s%10s”,stu[i].num,stu[i].name)。
for(j=0。
j<3。
j++)
printf(“%7d”,stu[i].score[j])。
printf(“%6.2f\n”,stu[i].avr)。
}
printf(“平均成绩是:
%5.2f\n”,average)。
printf(“最好成绩的学生是:
%s,总分是%d”,stu[maxi].name,max)。
return0。
}
运行结果
3、实验小结
对C语言中函数、数组、指针和结构体的概念,有了进一步的加深。
并且可以利用C语言进行初步程序设计。
四、教师评语
实验一顺序表与链表
一、实验目的
1、掌握线性表中元素的前驱、后续的概念。
2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。
3、对线性表相应算法的时间复杂度进行分析。
4、理解顺序表、链表数据结构的特点(优缺点)。
二、实验内容和要求
1、阅读下面程序,在横线处填写函数的基本功能。
并运行程序,写出结果。
#include
#include
#defineERROR0
#defineOK1
#defineINIT_SIZE5/*初始分配的顺序表长度*/
#defineINCREM5/*溢出时,顺序表长度的增量*/
typedefintElemType。
/*定义表元素的类型*/
typedefstructSqlist{
ElemType*slist。
/*存储空间的基地址*/
intlength。
/*顺序表的当前长度*/
intlistsize。
/*当前分配的存储空间*/
}Sqlist。
intInitList_sq(Sqlist*L)。
/*初始化顺序表L,并将其长度设为0*/
intCreateList_sq(Sqlist*L,intn)。
/*构造顺序表的长度为n*/
intListInsert_sq(Sqlist*L,inti,ElemTypee)。
/*在顺序线性表L中第i个
元素之前插入新的元素e*/
intPrintList_sq(Sqlist*L)。
/*输出顺序表的元素*/
intListDelete_sq(Sqlist*L,inti)。
/*删除第i个元素*/
intListLocate(Sqlist*L,ElemTypee)。
/*查找值为e的元素*/
intInitList_sq(Sqlist*L){
L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType))。
if(!
L->slist)returnERROR。
L->length=0。
L->listsize=INIT_SIZE。
returnOK。
}/*InitList*/
intCreateList_sq(Sqlist*L,intn){
ElemTypee。
inti。
for(i=0。
ii++){
printf("inputdata%d",i+1)。
scanf("%d",&e)。
if(!
ListInsert_sq(L,i+1,e))
returnERROR。
}
returnOK。
}/*CreateList*/
/*输出顺序表中的元素*/
intPrintList_sq(Sqlist*L){
inti。
for(i=1。
i<=L->length。
i++)
printf("%5d",L->slist[i-1])。
returnOK。
}/*PrintList*/
intListInsert_sq(Sqlist*L,inti,ElemTypee){
intk。
if(i<1||i>L->length+1)
returnERROR。
if(L->length>=L->listsize){
L->slist=(ElemType*)realloc(L->slist,
(INIT_SIZE+INCREM)*sizeof(ElemType))。
if(!
L->slist)
returnERROR。
L->listsize+=INCREM。
}
for(k=L->length-1。
k>=i-1。
k--){
L->slist[k+1]=k。
}
L->slist[i-1]=e。
L->length++。
returnOK。
}/*ListInsert*/
/*在顺序表中删除第i个元素*/
intListDelete_sq(Sqlist*L,inti)
{
if((i<1)||(i>L->length))returnERROR。
for(p=i-1。
p<->length-1。
p++)
L->slist[p]=L->slist[p+1]。
L->length--。
returnOK。
}
/*在顺序表中查找指定值元素,返回其序号*/
intListLocate(Sqlist*L,ElemTypee){
}
intmain(){
Sqlistsl。
intn。
printf("pleaseinputn:
")。
/*输入顺序表的元素个数*/
scanf("%d",&n)。
if(n>0){