《软件技术基础》上机实验安排

合集下载

重庆邮电大学-软件技术基础--实验报告(耿道渠)

重庆邮电大学-软件技术基础--实验报告(耿道渠)

《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第9 周星期 2 、5,6 节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。

二、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。

(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。

(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。

2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。

要求实现菜单、初始化、添加、删除和显示等功能。

三、实验结果:四、实验中遇到的问题及解决方法:第一次编写C++,感觉力不从心,回去多看看PPT。

五、实验心得体会:对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习附:源程序(自行编写或修改的程序。

若为修改程序请注明修改部分的功能,若为书上实例则可不附。

)#include <iostream>#include <string>#include <stdlib.h>#include <iomanip>#define MAXSIZE 20using namespace std;int num;typedef struct{string student_number;string name;string tel;string home_phone;int id;} TEL;void shuaxin(TEL *);void delet(TEL *);void find(TEL *);void show(TEL *);int main(void){int choose;TEL List[MAXSIZE];while(1){cout << "***************************欢迎来到XXX电话本系统*********************" << endl;cout << "1.初始化并建立" <<endl;cout << "2.删除" <<endl;cout << "3.查找" <<endl;cout << "4.显示全部" << endl <<endl;cin >> choose;system("cls");while( choose < 1 || choose > 4){cout << "输入错误,数字1-4,请重新输入!" << endl;cin >> choose;system("cls");}switch(choose){case 1: shuaxin(List); break;case 2: delet(List); break;case 3: find(List); break;case 4: show(List); break;}//system("cls");}return 0;}void shuaxin(TEL * list){int i,j;for(i = 0; i < MAXSIZE; i++){list[i].id = i + 1;list[i].home_phone = "none";list[i].name = "none";list[i].student_number = "none";list[i].tel = "none";system("cls");cout << "初始化成功,现在开始建表:" << endl;cout << "请输入需要建立的电话个数:(小于" << MAXSIZE << ")"<<endl;cin >> num;while( num < 1 || num > MAXSIZE ){system("cls");cout << "输入错误,请重新输入" << endl;cin >> num;}system("cls");cout << "请依次输入学生的学号,姓名,移动电话,家庭电话" << endl;for(j = 1; j <= num; j++){cout << j << '.';cin >> list[j - 1].student_number;cin >> list[j - 1].name;cin >> list[j - 1].tel;cin >> list[j - 1].home_phone;cout << endl;if(num == (j - 1) ){system("cls");cout << "建立表完毕!" << endl;}}void delet(TEL * list){int j,i = 0;cout << "请输入你需要删除的序号" << endl;cin >> j;while( j < 0 || j > num){cout << "输入错误,请重新输入" << endl;cin >> j;}while(list[i].id != j)i++;for(j = i; j < num - 1; j++){list[j].name = list[j + 1].name;list[j].tel = list[j + 1].tel;list[j].student_number = list[j + 1].student_number;list[j].home_phone = list[j + 1].home_phone;}list[j].home_phone = "none";list[j].name = "none";list[j].student_number = "none";list[j].tel = "none";num--;system("cls");cout << "删除完毕" << endl;}void find(TEL * list){string telnum;int i,key = 0;cout << "请输入你需要查找的电话号码" << endl;cin >> telnum;system("cls");for(i = 0; i < MAXSIZE; i++){if(telnum == list[i].tel || telnum == list[i].home_phone){if(key == 0)cout << "依次学号姓名移动电话家庭电话" << endl;cout << list[i].id << '.';cout << setw(12) << list[i].student_number;cout << setw(10) << list[i].name;cout << setw(14) << list[i].tel;cout << setw(10) << list[i].home_phone;cout << endl;key = 1;}}if( key == 0)cout << "未找到此电话号码" << endl;}void show(TEL * list){int i;cout << "现在有" << num << "个电话号码" << endl;cout << "依次学号姓名移动电话家庭电话" << endl;for(i = 0; i < num; i++){cout << list[i].id << '.';cout << setw(12) << list[i].student_number;cout << setw(10) << list[i].name;cout << setw(14) << list[i].tel;cout << setw(10) << list[i].home_phone;cout << endl;}cout << "输出完毕" << endl;}《软件技术基础》实验报告实验名称:链表的操作(一)班级学号姓名第10 周星期 2 、5,6 节成绩一、实验目的:1、掌握单链表结构的实现方式;2、掌握单链表常用算法的实现。

《软件技术基础》实验指导书_实验三、四

《软件技术基础》实验指导书_实验三、四

《软件技术基础》实验指导书电子商务教研室2009年9月实验三队列的应用◆实验目的与基本要求1、掌握队列的顺序存储和链式存储结构。

2、掌握队列的特点。

3、掌握队列的基本运算。

◆实验条件1、硬件:一台微机2、软件:操作系统和C语言系统◆实验方法确定存储结构后,上机调试实现队列的基本运算。

◆实验内容1、写出队列的出队和入队算法。

2、设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已停放n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。

每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。

编制一个程序模拟该停车场的管理。

◆性质:必做◆类型:验证◆2h队列是从日常排队现象抽象出来的一种数学模型。

当然数据结构中的队列远没有生活中的排队灵活。

数据结构中的队列规定:数据只能从队尾进,从队首出来。

已经进入队列的数据次序不能再做改变。

这就叫做“先进先出”(FIFO)或者说“后进后出”(LILO)。

允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的前一个位置(当然也可以直接指向队首元素,只是许多数据结构的书上都习惯这么定义)。

与队列类似,我们可以用一维数组来模拟队列这种数据结构,也可以用链表来模拟。

根据以上描述,队列可以可以有以下基本操作:1、创建初始化:按约定置队列为空状态。

软件技术基础2实验任务3

软件技术基础2实验任务3

《软件技术基础2》实验报告3学院机械学院专业能源与动力工程年级2015姓名666任课教师葛卫民实验指导葛卫民2016年10月日实验三一、实验目的通过本试验,使学生理解数组、指针的概念及基本用法;掌握数组与指针程序的设计方法;掌握求最大最小、排序、字符串处理等基本算法的思想和使用方法。

二、实验内容1.通过程序实例,理解数组及指针的概念及基本语法。

2.编写教材第三章习题3中1、2、3、5、6、7要求的程序,并完成上机调试的实验任务。

其中第3题的第7小题需要分别用数组、指针结合动态内存分配两种方法来实现。

三、实验准备1.复习第三章的内容,重点是3.1、3.2、3.5节的内容及相关例题;2.编写教材第三章习题3中1、2、3、5、6、7要求的程序。

四、实验任务任务一:第1小题1.内容:向数组a中输入十个整数,求其中最大值,最小值和十个数的算术平均值。

2.源程序:#include <iostream.h>void main( ){int a[10],amax,amin,sum(0);double ave;cout<<"输入10个数:";for (int i=0; i<10; i++) cin>> a[i];for(i=0;i<10;i++) sum+=a[i];ave=sum/10.0;amax=amin=a[0];i=1;while(i<10){ if(a[i]>amax) amax=a[i];if(a[i]<amin) amin= a[i];i++;}cout<<"算术平均值="<<ave<<endl;cout<<"最大值="<<amax<<endl;cout<<"最小值="<<amin<<endl;}3.运行结果:4.实验中遇到的主要问题及解决方法无任务二:第2小题1.内容:输入十个学生一门课的成绩,分别统计大于平均值的人数和小于60分的人数。

《软件技术基础》实验指导

《软件技术基础》实验指导

说明每个实验题目含有一个main函数和一些函数, 与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出, 供上机实验参考使用。

对于每个题目, 只需要根据题目要求设计算法, 补充函数定义, 然后对程序进行编译、调试。

实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验内容设有一个线性表E={e1, e2, …, en-1, en}, 设计一个算法, 将线性表逆置, 即使元素排列次序颠倒过来, 成为逆线性表E’={ en , en-1 , …, e2 , e1 }, 要求逆线性表占用原线性表空间, 并且用顺序表和单链表两种方法表示, 分别用两个程序来完成。

(文件夹: 顺序表逆置、单链表逆置)已知由不具有头结点的单链表表示的线性表中, 含有三类字符的数据元素(字母、数字和其他字符), 试编写算法构造三个以循环链表表示的线性表, 使每个表中只含有同一类的字符, 且利用原表中的结点空间, 头结点可另辟空间。

(文件夹: 分解单链表)实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验内容1.设单链表中存放有n个字符, 试编写算法, 判断该字符串是否有中心对称的关系, 例如xyzzyx是中心对称的字符串。

(提示: 将单链表中的一半字符先依次进栈, 然后依次出栈与单链表中的另一半字符进行比较。

)(文件夹: 判字符串中心对称)假设以数组sequ[m]存放循环队列的元素, 同时设变量rear和quelen 分别指示循环队列中队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。

(文件夹:循环队列)实验三串一、实验目的1.熟悉串的顺序存储结构2.掌握串的基本运算及应用二、实验内容1. 串采用顺序存储结构, 编写朴素模式匹配算法, 查找在串中是否存在给定的子串。

计算机软件技术基础实验报告

计算机软件技术基础实验报告

《计算机软件技术基础》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________南华大学计算机学院编I 实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。

2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。

3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。

4.上机结束后,应整理出实验报告。

书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。

实验一线性表【实验目的】1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。

2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。

3.熟练掌握线性表的综合应用问题。

【实验内容】必做:1.一个线性表有n个元素(n<MAXSIZE, MAXSIZE指线性表的最大长度),且递增有序。

(1)现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。

采用链式存储表示方法实现,设计程序实现(2)从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。

要求:①指定的值x由键盘输入;②程序能处理空链表的情况。

选做:3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。

要求:①该算法用函数(非主函数)实现;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。

要求:①该算法用函数Reverse(head,p)实现,其中head为表头指针,p指向要交换的结点;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

计算机软件技术基础_实验指导书

计算机软件技术基础_实验指导书

《计算机软件技术基础》实验指导书编写:XXX适用专业:电器工程与自动化通讯工程电子信息工程安徽建筑工业学院电子与信息工程学院2007年9月实验一:线性链表的建立、查找、插入、删除实验实验学时:2实验类型:验证实验要求:必修一、实验目的通过本实验的学习,要求学生能够通过单链表的存储结构,掌握单链表的基本操作,包括单链表的建立、查找、插入、删除、输出等操作。

通过本实验可以巩固学生所学的线性表知识,提高编程能力,为后继课程的学习奠定基础。

二、实验内容1、为线性表{10,30,20,50,40,70,60,90,80,100}创建一个带头结点的单链表;2、在该链表上查找值为50,65的结点,并返回查找结果(找到:返回在县新链表中的位置);3、在该链表上值为50的结点后,插入一个值为120的结点;4、删除该链表上值为70的结点。

写出各操作的实现函数,并上机验证。

三、实验原理、方法和手段使用带头结点的单链表的表示线性表,通过实验,熟悉链表的创建、查找、插入、删除、输出等是链表的基本操作。

具体如下:(1)首先定义单链表的节点结构;(2)在单链表创建过程中,首先初始化一个带头结点的空链表,对线性表中的各元素依次通过键盘输入、建立该元素结点、插入到单链表中,实现单链表的创建过程;结点的插入有头插入和尾插入两种方法,采用不同方法时应注意元素的输入顺序。

(3)查找过程可以从头结点开始,将待查找的数据依次与每个结点的数据域比较,匹配及查找成功,弱链表访问完未找到匹配的元素,则查找不成功。

为能够返回查找成功的结点位置,在链表的搜索过程中,应设置一个计数器,记录搜索结点的序号;(4)插入结点时,首先要通过查找算法,找到带插入结点的前驱结点,然后为带插入元素建立结点,通过指针的修改,将结点插入。

(5)删除结点时,首先要通过查找算法,找到待删除结点的前驱,然后通过指针的修改,将待删除结点从链表中卸下,释放该结点。

(6)以上操作的正确性,均可以通过链表的输出结果来验证。

软件技术基础上机练习5

软件技术基础上机练习5

上机五数据结构一、实验目的1、掌握数组的输入输出方法2、掌握排序的基本方法3、掌握查找的基本方法二、上机内容1、在键盘上输入10个整数,试编制程序使该数组中的数按照从大到小的次序排列。

(1)、起泡排序从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。

第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。

源程序如下:#define N 10#include"stdio.h"main(){int a[N],i,j,temp;printf("please input %d numbers\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++)for(j=0;j<N-1-i;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}printf("the array after sort:\n");for(i=0;i<N;i++)printf("%5d",a[i]);}(2)、选择排序首先:找出值最小的数,然后:把这个数与第一个数交换,这样值最小的数就放到了第一个位置;再然后:在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。

以此类推,直到所有的值从小到大的顺序排列为止。

#include"stdio.h"#define N 10main(){int a[N],i,j,r,temp;printf("please input %d numbers\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){ r=i;for(j=i+1;j<N;j++)if(a[j]<a[r])r=j;if(r!=i){temp=a[r];a[r]=a[i];a[i]=temp;}}printf("the array after sort:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}2、查找输入一串字符,计算其中空格的个数。

西北农林科技大学-软件技术基础实习报告

西北农林科技大学-软件技术基础实习报告

课程实验报告学年学期课程名称软件技术基础实验名称单链表的创建实验室专业年级学生姓名学生学号任课教师陈帝伊水利与建筑工程学院一、实验目的1、熟悉VC++6.0的上级环境;2、掌握线性表中链表的数据类型描述,特点及其存储结构;3、掌握单链表的基本操作,创建一个新的链表及其应用;4、掌握线性表的基本运算及应用;5、掌握基本的循环结构,以及链表建立的循环结束条件;6、掌握链表创建的核心语句。

二、实验内容读入一组数建立链表,以负数作为输入结束。

三、算法描述#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct stud)struct stud{long num;struct stud *next;};struct stud *head;void creat(){struct stud *p,*q;p=(struct stud *) malloc(LEN);head=p;head->next=NULL;q=(struct stud *) malloc(LEN);scanf("%ld",&q->num);while (q->num>0){p->next=q;p=q;q=(struct stud *) malloc(LEN);scanf("%ld",&q->num);}p->next=NULL;}void output(){struct stud *p;p=head->next;while (p!=NULL){printf("%ld ",p->num);p=p->next;}}main(){creat();output();}课程实验报告学年学期课程名称软件技术基础实验名称单链表的删除实验室专业年级学生姓名学生学号任课教师陈帝伊水利与建筑工程学院一、实验目的1、掌握线性表中链表的数据类型描述,特点及其存储结构;2、掌握单链表得到基本操作,删除链表的一个数据及应用;3、深刻理解和掌握删除链点的循环条件和循环实现条件;二、实验内容检查一个单向链表,删除其中数据大于100的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《软件技术基础》上机实验安排
一、实验教学计划
第4-8周,每周周二晚,6:30 - 9:30, 科1B-453,457,459 二、实验内容安排
实验一:指针和结构体部分
1、从键盘上输入10个整数,将其中最小的数与第一个数交
换,把最大的数与最后一个数交换,并将交换之后的序列
打印出来。

(提示:用指针实现,参考教材习题10.3)
2、要求在主函数输入一串文字,并编写一个函数计算该文字
串中的大写字母,小写字母,数字以及其它字符的个数,
并在主函数中将文字串和以上计算结果打印出来。

参考教
材习题10.8。

3、已知一个班有10名同学英语考试成绩为{88,76, 83,
92,96,80,62,85,74,87},平时成绩为{4,3,4,2, 3,3,4,2,3,4},主
函数中用C的指针分配函数:malloc()分配两块连续的存
储单元存放以上的考试成绩和平时成绩,用一个函数计
算该班同学的考试平均成绩和各同学的最终成绩(考试
成绩+平时成绩),在主函数中将以上计算结果打印出来。

注意:本题选作。

4、编写一个函数input,输入学生的成绩,包含3个学生的
数据即学号(num),姓名(name)和三科成绩score[3]。

再编写一个函数print ,打印学生的信息。

编写一个主函数实现学生成绩的输入和输出。

实验二、顺序表的相关操作
1、 有序的一组整数,1-2-3-4-6-5-9-19设计顺序表并实现以
下操作:A.初始化线性表;B.添加上述一组数;C.删除第四个数据元素; D.显示B,C 操作后的结果。

2、 教材P74页,习题9。

3、 图书资料管理问题,设一本书有编号、书名、作者、价
格等信息,如下表
设计顺序表并实现以下操作;A、初始化线性表;B 、添加表1中的记录;C 、删除第三条记录。

本题选作。

提示:图书资料的数据的C 语言描述
typedef struct
{ long int num;
char name[50];
char author[20];
float price;
} bookinfo;
设计的顺序表点C 语言描述 23.00 zhao delphi 4 18.00
wang
C
3 20.00 li VB 2 15.00 zhang Basic 1 价格
作者 书名 编号
typedef struct
{ bookinfo data[MAXNUM];
int num;
} listtype;
实验三、单链表的相关操作
1、现有有序的一组整数的集合:1-2-2-3-4-6-6。

设计单链表,
分别编写函数实现以下操作:A.初始化链表。

B.添加上述一组数(结点),生成该链表。

C.统计该链表的长度。

D.在表中查找数据为3和7的结点,并返回其位置(若找不到返回-1)。

E.删除中间重复结点,使链表变为1-2-3-4-6。

F.显示经B,E操作后,链表的状况。

2、教材P74,习题10,选作。

实验四、查找相关操作
1、教材P76,习题26,要求采用二分查找的方法,编程实现。

2、要求创建一个单链表,表中的元素为{55,3,2,96,42,
67,111,15},并以顺序查找的方法,编程实现查找其中
的某一个元素,查找成功返回该元素,失败返回一个错误
的标志。

实验五、排序的相关操作
1、对教材P77,习题28给出的关键字序列,以简单插入排
序方法,编程实现其排序。

2、对教材P77,习题28给出的关键字序列,以简单选择排
序方法,编程实现其排序。

对教材P67,习题28给出的
关键字序列,以冒泡排序方法,编程实现其排序。

三、实验报告
提交实验二,三,四的报告。

相关文档
最新文档