admin 管理员组文章数量: 1086019
2024年4月26日发(作者:终止程序的代码)
云南大学物理实验教学中心
实验报告
课程名称: 计算机软件技术基础
实验项目: 实验二、线性表(顺序存储)及其应用
学生姓名:
系
学号:
级
专业
学院
成绩
指导教师:
年 日 时 分至 时 分
实验时间:
实验地点:
实验类型:教学(演示□ 验证□ 综合█ 设计□) 学生科研□
课外开放□ 测试□ 其它□
一、实验目的:
掌握顺序表的建立及基本操作。
二、问题:
建立一个顺序表,表中元素为学生,每个学生信息包
含姓名、学号和成绩三部分,对该表实现:① 输出、②
插入、③ 删除、④ 查找功能,并计算出平均成绩和总
成绩。
三、程序的编写与调试
1、原程序:
#include
using namespace std;
typedef struct
{ long double num; char name[10]; int score; } STUDENT;
class sq_LList
{ private:
int mm;
int nn;
STUDENT *v;
public:
sq_LList(int);
void prt_sq_LList();
void ins_sq_LList(int, STUDENT);
void del_sq_LList(int);
void sea_num_sq_LList(int);
1
void sea_name_sq_LList(int ,char 批注[A2]);
void cal_sq_LList(int);
};
/*输出*/
sq_LList ::sq_LList(int m)
{ mm=m;
v=new STUDENT [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;
}
void sq_LList ::prt_sq_LList()
{ int i;
for(i=0; i { cout<<"学号: "< "<<"分数: "< 2 } } /*插入*/ void sq_LList ::ins_sq_LList(int i, STUDENT b) { int k; 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; } /*删除*/ void sq_LList ::del_sq_LList(int i) { int k; if(nn==0) {cout<<"underflow"< if((i<1)||(i>nn)) {cout<<"Not this element in the list!"< return ; } 3 for(k=i; k v[k-1]=v[k]; nn=nn-1; } /*按学号查找*/ void sq_LList ::sea_num_sq_LList(int i) { int k,t ; ____ t=0; for(i=0;i { if(v[i].num==k) { t=t+1; cout<<"学号: "< "<<"分数: "< } } if(t==0) cout<<"No this student in the list!"< } /*按姓名查找*/ void sq_LList ::sea_name_sq_LList(int i, char y[]) { int t; 4 ____ t=0; for(i=0;i { if(strcmp(y,v[i].name)=0) {t=t+1 cout<<"学号: "< "<<"分数: "< } } if(t==0) cout<<"No this student in the list!"< } /*计算*/ void sq_LList ::cal_sq_LList(int m) { int i; float sum,avr; { sum=0; for(i=0;i {sum=sum+v[i].score; avr=sum/(i+1); } } cout<<"总 分:"< 5 cout<<"平均分:"< } int main() { int mx; sq_LList s1(100); while (1) { cout<<"1.输出 2.插入 3.删除 4.查找 5.计算 0.退 出n"; cout<<"输入0-5:"; cin>>mx; switch(mx) { case 1: _sq_LList(); break; case 2: int i; STUDENT b; cout<<"输入插入点位置和插入元素值:"; cin>>i>>>>>>; _sq_LList(i,b); _sq_LList(); break; case 3: cout<<"请输入删除学生的位置:"; cin>>i; _sq_LList(i);_sq_LList(); break; case 4: int main() { int mx; while (1) {cout<<"1.按学号查找 2.按姓名查找 0.返"< 6 cout<<"输入0-2:"; cin>>mx; switch (mx) { case 1: long double k; 批注[A1]:删除 cout<<"请输入要查找学生的学号:"; cin>>k; 批注[A1]:删除 _num_sq_LList(i); break; case 2: char y[10]; 批注[A3] cout<<"请输入要查找学生的姓名:"; cin>>y; 批注[A3] _name_sq_LList(); break; case 0: cout<<"返回"< } } return 0; } break; case 5: _sq_LList(); break; case 0: cout<<"程序结束"< } } return 0; 7 } 2、正确程序: #include using namespace std; typedef struct { long double num; char name[10]; int score; } STUDENT; class sq_LList { private: int mm; int nn; STUDENT *v; public: sq_LList(int); void prt_sq_LList(); void ins_sq_LList(int, STUDENT); void del_sq_LList(int); void sea_num_sq_LList(int); void sea_name_sq_LList(); void cal_sq_LList(int); 8 }; /*输出*/ sq_LList ::sq_LList(int m) { mm=m; v=new STUDENT [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; } void sq_LList ::prt_sq_LList() { int i; for(i=0; i { cout<<"学号: "< "<<"分数: "< } } 9 /*插入*/ void sq_LList ::ins_sq_LList(int i, STUDENT b) { int k; 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; } /*删除*/ void sq_LList ::del_sq_LList(int i) { int k; if(nn==0) {cout<<"underflow"< if((i<1)||(i>nn)) {cout<<"Not this element in the list!"< return ; } for(k=i; k v[k-1]=v[k]; 10 nn=nn-1; } /*按学号查找*/ void sq_LList ::sea_num_sq_LList(int i) { int k,t ; cin>>k; t=0; for(i=0;i { if(v[i].num==k) { t=t+1; cout<<"学号: "< "<<"分数: "< } } if(t==0) cout<<"No this student in the list!"< } /*按姓名查找*/ void sq_LList ::sea_name_sq_LList() { char y[10]; int i,t; cin>>y; t=0; 11 for(i=0;i { if(strcmp(y,v[i].name)==0) {t=t+1; cout<<"学号: "< "<<"分数: "< } } if(t==0) cout<<"No this student in the list!"< } /*计算*/ void sq_LList ::cal_sq_LList(int m) { int i; float sum,avr; { sum=0; for(i=0;i {sum=sum+v[i].score; avr=sum/(i+1); } } cout<<"总 分:"< cout<<"平均分:"< } 12 int main() { int mx; sq_LList s1(100); while (1) { cout<<"1.输出 2.插入 3.删除 4.查找 5.计算 0.退 出n"; cout<<"输入0-5:"; cin>>mx; switch(mx) { case 1: _sq_LList(); break; case 2: int i; STUDENT b; cout<<"输入插入点位置和插入元素值:"; cin>>i>>>>>>; _sq_LList(i,b); _sq_LList(); break; case 3: cout<<"请输入删除学生的位置:"; cin>>i; _sq_LList(i);_sq_LList(); break; case 4: { int mx; while (1) {cout<<"1.按学号查找 2.按姓名查找 0.返"< cout<<"输入0-2:"; cin>>mx; 13 switch (mx) { case 1: cout<<"请输入要查找学生的学号:"; _num_sq_LList(i); break; case 2: cout<<"请输入要查找学生的姓名:"; _name_sq_LList(); break; case 0: cout<<"返回"< } } return 0; } break; case 5: _sq_LList(i); break; case 0: cout<<"程序结束"< } } return 0; } 四、实验总结 通过此次试验,我对线性表(顺序存储)有了全面的认识,知 道了什么是线性表,以及线性表有什么作用;并学会了如何根据要 求建立一个实际的线性表,包括线性表的输出、插入、删除、查 14
版权声明:本文标题:每个学生信息包含姓名、学号和成绩三部分,对该表实现输出、插入、删 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1714067654a664196.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论