建立一个顺序表表中元素为学生每个学生信息包含姓名学号和成绩三部分对该表实现输出插入删除Word文档下载推荐.docx
《建立一个顺序表表中元素为学生每个学生信息包含姓名学号和成绩三部分对该表实现输出插入删除Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《建立一个顺序表表中元素为学生每个学生信息包含姓名学号和成绩三部分对该表实现输出插入删除Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
①输出、②插入、③删除、④查找功能,并计算出平均成绩和总成绩。
三、程序的编写与调试
1、原程序:
#include<
iostream>
usingnamespacestd;
typedefstruct
{longdoublenum;
charname[10];
intscore;
}STUDENT;
classsq_LList
{private:
intmm;
intnn;
STUDENT*v;
public:
sq_LList(int);
voidprt_sq_LList();
voidins_sq_LList(int,STUDENT);
voiddel_sq_LList(int);
voidsea_num_sq_LList(int);
voidsea_name_sq_LList(int,char批注[A2]);
voidcal_sq_LList(int);
};
/*输出*/
sq_LList:
:
sq_LList(intm)
{mm=m;
v=newSTUDENT[mm];
v[0].num=970156;
strcpy(v[0].name,"
张小明"
);
v[0].score=87;
v[1].num=970157;
strcpy(v[1].name,"
李小青"
v[1].score=96;
v[2].num=970158;
strcpy(v[2].name,"
刘华"
v[2].score=85;
v[3].num=970159;
strcpy(v[3].name,"
王伟"
v[3].score=93;
v[4].num=970160;
strcpy(v[4].name,"
李启明"
v[4].score=88;
nn=5;
}
voidsq_LList:
prt_sq_LList()
{inti;
for(i=0;
i<
nn;
i++)
{cout<
<
"
学号:
"
v[i].num<
姓名:
v[i].name<
分数:
v[i].score<
endl;
}
/*插入*/
ins_sq_LList(inti,STUDENTb)
{intk;
if(nn==mm)
{cout<
overflow"
;
return;
if(i>
nn)i=nn+1;
if(i<
1)i=1;
for(k=nn;
k>
=i;
k--)
v[k]=v[k-1];
v[i-1]=b;
nn=nn+1;
}
/*删除*/
del_sq_LList(inti)
if(nn==0)
underflow"
if((i<
1)||(i>
nn))
Notthiselementinthelist!
for(k=i;
k<
k++)
v[k-1]=v[k];
nn=nn-1;
/*按学号查找*/
sea_num_sq_LList(inti)
{intk,t;
____
t=0;
for(i=0;
i<
i++)
{if(v[i].num==k)
{t=t+1;
cout<
}
if(t==0)
cout<
Nothisstudentinthelist!
/*按姓名查找*/
sea_name_sq_LList(inti,chary[])
{intt;
____
t=0;
{if(strcmp(y,v[i].name)=0)
{t=t+1
}
if(t==0)cout<
endl
/*计算*/
cal_sq_LList(intm)
floatsum,avr;
{sum=0;
{sum=sum+v[i].score;
avr=sum/(i+1);
总分:
sum<
endl;
平均分:
avr<
intmain()
{intmx;
sq_LLists1(100);
while
(1)
1.输出2.插入3.删除4.查找5.计算0.退出\n"
输入0-5:
cin>
>
mx;
switch(mx)
{case1:
s1.prt_sq_LList();
break;
case2:
inti;
STUDENTb;
cout<
输入插入点位置和插入元素值:
cin>
i>
b.num>
b.name>
b.score;
s1.ins_sq_LList(i,b);
break;
case3:
请输入删除学生的位置:
cin>
i;
s1.del_sq_LList(i);
s1.prt_sq_LList();
case4:
intmain()
while
(1)
1.按学号查找2.按姓名查找0.返"
输入0-2:
switch(mx)
{
case1:
longdoublek;
批注[A1]:
删除
请输入要查找学生的学号:
k;
s1.sea_num_sq_LList(i);
case2:
chary[10];
批注[A3]
请输入要查找学生的姓名:
y;
批注[A3]
s1.sea_name_sq_LList();
case0:
返回"
return;
}
return0;
}break;
case5:
s1.cal_sq_LList();
case0:
程序结束"
return0;
2、正确程序:
voidsea_name_sq_LList();
cin>
t=0;
sea_name_sq_LList()
{chary[10];
inti,t;
{if(strcmp(y,v[i].name)==0)
{t=t+1;
cout<
return0;
s1.cal_sq_LList(i);
四、实验总结
通过此次试验,我对线性表(顺序存储)有了全面的认识,知道了什么是线性表,以及线性表有什么作用;
并学会了如何根据要求建立一个实际的线性表,包括线性表的输出、插入、删除、查找、计算等功能的编写。
另外,通过此次试验,自己的编程能力得到了一定的提高,对编程中常犯的错误以及如何更正有了更加深入的认识和了解等等。