算法与数据结构 实验报告
专 业:电子信息科学与技术 班 级:2007050202 姓 名: 王力轩 学 号:200605020240
实验一 C++语言编程
一、实验目的:
复习、巩固C++语言上机操作的基本技能和方法,熟悉:框图(或流程图)――代码――调试――修改――运行这一基本上机过程。 二、实验要求:
1. 认真阅读和掌握本实验的程序。 2. 上机运行程序。
3. 保存和打印出程序的运行结果,并结合程序进行分析。 4. 按照操作需要,打印出文件清单和运行结果。 三、实验内容:
编写一个程序实现下列目标:
1. 从键盘输入集合A、B,长度随机,以-9999表示输入结束,集合A、B的并集和交集,从
大到小输出,不能有同样的。 //Filename:exp1-1.cpp //date:04-12
#include
void intersection(int a[],int b[],int m,int n) //求交集 {
for(int i=0;i for(int j=0;j cout< void Union(int a[],int b[],int m,int n) //求并集 { int i=0,j=0; while(i if(a[i]==b[j]) { cout< else if(a[i]>b[j]) { cout< cout< int main() { int a[100]={0},b[100]={0},m,n,i,j; cout<<\请输入第一个数组中一共有多少元素:\ cin>>m; cout<<\请输入第一个数组中的元素:\ for(i=0;i cin>>a[i]; if(a[i]==-9999) break; } cout<<\请输入第二个数组中一共有多少元素:\ 2 cin>>n; cout<<\请输入第二个数组中的元素:\ for(j=0;j cin>>b[j]; if(b[j]==-9999) break; } for(i=0;i for(j=i+1;j if(a[i] int temp; temp=a[i]; a[i]=a[j]; a[j]=temp; } } } for(i=0;i for(j=i+1;j if(b[i] int temp; temp=b[i]; b[i]=b[j]; b[j]=temp; } } } cout<<\交集:\ intersection(a,b,m,n); cout< 2. 分别输入圆柱体的半径和高,求其体积;输入球半径,求其表面积;输入长方体的长、宽、高,求其体积。 //Filename:exp1-2.cpp //Creator:杨成龙 //date:04-12 #include 3 } cout<<\球的表面积:\cout<<\请输入长方体的长、宽、高:\cin>>length; cin>>wide; cin>>height; v2=length*wide*height; cout<<\长方体的体积:\return 0; 实验二 线性表的应用 一、实验目的: 掌握线性表的基本结构和操作方法,培养学生灵活使用结构解决实际问题的能力。 二、实验要求: 1. 认真阅读和掌握本实验的程序。 2. 上机运行程序。 3. 保存和打印出程序的运行结果,并结合程序进行分析。 4. 按照操作需要,打印出文件清单和运行结果。 三、实验内容: 1. 运行下述程序。说明它所实现的功能。 程序如下: //Filename:exp2-1.cpp //date:04-19 #include { int data[ListSize]; /*向量data用于存放表结点*/ int length; /*当前的表长度*/ }SeqList; void main() { void CreateList(SeqList *L,int n); void PrintList(SeqList *L,int n); int LocateList(SeqList *L,int x); void InsertList(SeqList *L,int x,int i); void DeleteList(SeqList *L,int i); SeqList L; int i,x; int n=10; /*THE LENGTH OF LIST*/ L.length=0; CreateList(&L,n); /*CREAT THE LIST*/ PrintList(&L,n); /*PRINT THE LIST*/ printf(\ scanf(\ i=LocateList(&L,x); printf(\ /*顺序表查找*/ printf(\ scanf(\ printf(\ scanf(\ InsertList(&L,x,i); /*顺序表插入*/ PrintList(&L, L.length); /*打印顺序表*/ printf(\ scanf(\ DeleteList(&L,i); /*顺序表删除*/ PrintList(&L,n); getchar();/*打印顺序表*/ 4 } /*顺序表的建立:*/ void CreateList(SeqList *L,int n) {int i; printf(\for(i=1;i<=n;i++) {scanf(\} L->length=n; } /*顺序表的打印:*/ void PrintList(SeqList *L,int n) {int i; printf(\for(i=1;i<=n;i++) printf(\} /*顺序表的查找:*/ int LocateList(SeqList *L,int x) {int i; for(i=1;i<=10;i++) if((L->data[i])==x) {return(i); break;} return(0); } /*顺序表的插入:*/ void InsertList(SeqList *L,int x,int i) {int j; for(j=L->length;j>=i;j--) L->data[j+1]=L->data[j]; L->data[i]=x; L->length++; } /*顺序表的删除:*/ void DeleteList(SeqList *L,int i) { int j; for(j=i;j<=(L->length)-1;j++) L->data[j]=L->data[j+1]; } 2. 设计一个100位以内的长整数加减运算的程序。 //Filename:exp2-2.cpp //date:04-19 #include int i; for(i=0;i<100;i++) if(ch[i]=='\\0')break; return i; } void plusdata(int *dt,int *pdt,int k,int kk) { int i; 5