软件技术基础实验报告
重庆邮电大学-软件技术基础--实验报告(耿道渠)
《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第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、掌握单链表常用算法的实现。
软件技术基础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分的人数。
计算机软件技术基础实验报告
《计算机软件技术基础》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________南华大学计算机学院编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指向要交换的结点;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。
软件工程实验报告
软件工程实验报告在当今科技日新月异的时代,软件工程成为各行各业中不可或缺的一环。
为了更好地培养学生的软件工程能力,各大高校开设了相关课程,并在其中加入了实验环节。
本篇文章将对软件工程实验报告的撰写进行探讨。
首先,软件工程实验报告的撰写应该贴近实验过程。
这意味着在实验之前,我们应该对实验内容有足够的了解,并对实验的目标有清晰的认识;在实验中,我们应该认真观察并记录实验过程中发生的所有细节;在实验之后,我们应该对结果进行分析,并对实验中存在的问题进行思考和归纳。
只有在真正深入实验过程,并对实验经过有全面的掌握后,我们才能写出一份优秀的实验报告。
其次,软件工程实验报告的撰写应该具备科学的逻辑性和清晰的表达能力。
在撰写实验报告时,我们应该先明确实验的目的,并在实验结果中体现出来;同时,我们需要将实验中所遇到的所有问题和解决方案进行详细的阐述,以便读者更好地理解实验过程和结果。
此外,在写实验报告时,我们应该注意语言的简洁明了,句式的条理清晰,以及格式的规范统一。
最后,在软件工程实验报告的撰写中,引用和参考文献的使用也是非常重要的。
我们应该在实验报告中注明所使用的软件和工具的名称、版本号等信息,以便读者对结果进行验证和复现。
同时,在实验报告中,我们还应该引用相关的文献,为实验结果提供支撑和佐证。
总之,软件工程实验报告的撰写是一个非常重要的环节,它能够反映出我们在实验过程中的观察能力、思考能力、分析能力、表达能力等多方面的能力。
因此,我们应该认真对待实验报告的撰写,力求做到准确、明确、清晰。
只有这样,我们才能更好地掌握软件工程知识,为将来的学习和工作打下坚实的基础。
计算机实训实验报告
一、实习时间20Xx年X月18日到X月10日二、实习地点中****-*三、>通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,为顺利毕业进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。
四、实习内容能对电脑交易和具体的电脑安装步骤进行了解,并查阅资料巩固自我缺漏的电脑经验。
能将具体的计算机知识应用到实际中,在电脑交易的同时,将自己的所学所想所感付诸实践。
能够熟练掌握一定的计算机技巧,比如安装系统,安装插线,识别型号,处理图形和flash等。
能够与别人进行一定程度的计算机交流,并且提供各种买卖信息以及电脑性能好坏的识别。
能够推销贩卖计算机,并且积累丰厚的社会交流经验和提升自我的语言表达能力。
五、实习体会职高生活让我对计算机理论知识有了一定的了解。
但实践出真知,唯有把理论与实践相结合,才能更好地为社会服务。
经过实践和实习,我对未来充满了美好的憧憬,在未来的日子,我将努力做到以下几点:一、继续学习,不断提升理论涵养。
在信息时代,学习是不断地汲取新信息,获得事业进步的动力。
作为一名青年学子更应该把学习作为保持工作积极性的重要途径。
走上工作岗位后,我会积极响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升能力,以广博的社会知识拓展视野。
二、努力实践,自觉进行角色转化。
只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。
同样,一个人的价值也是通过实践活动来实现的,也只有通过实践才能锻炼人的品质,彰显人的意志。
必须在实际的工作和生活中潜心体会,并自觉的进行这种角色的转换。
三、提高工作积极性和主动性实习,是开端也是结束。
展现在自己面前的是一片任自己驰骋的沃土,也分明感受到了沉甸甸的责任。
在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,做好>,努力创造业绩,继续创造更多的价值。
最后感谢单位领导和部门领导以及同事对我的支持和帮助,我会继续努力的。
北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发
实验报告
实验名称数据库应用系统的开发
班级
学号
姓名
成绩
【实验方案设计】
1. 利用Visual Basic里的VB Application Wizard按照步骤逐步创建一个窗体应用程序,并链接到上一实验创建的数据库中,同时添加各种操作按钮,如插入、删除、更改等,最后将数据库的每个表视图集合到主视图中
【实验过程】(实验步骤、记录、数据、分析)
1.选择数据来源种类
2.选择数据库文件并做链接
3.选择数据视图布局,此处选择网格式布局,便于查看全部数据
4.选择一个表及要添加的字段和排列顺序
5.选择对数据可进行的操作按钮,如添加、更改、删除、更新、关闭等
6.添加完一个表后,继续添加其他表,直到整个数据库所有表已添加
7.添加完成后界面
8.通过链接到ACCESS数据库的VB数据库管理程序查看每个表数据,并进行数据增加、删除、修改等操作
9.在数据库管理系统中对数据进行增加操作,此处增加一条订单ID为151112的记录,可以看到在ACCESS中的数据表进行了同步增加。
这样就可以达到不打开ACCESS而只通过一个单界面应用程序就实现对数据库的维护工作,具有简单性、高效性的特点。
杭电软件技术基础实验报告
《软件技术基础》上机实验报告2018至2019学年,第1学期学生姓名:***班级:***学号:***授课教师:***指导教师:***报告完成时间:2018年12月9日实验一:链式二叉排序树的创建和遍历一.实验目的和要求1.加深理解数据结构的目的和概念,以及逻辑结构和物理结构的关系;2.练习数据结构操作算法的编程实现;3.练习链表的程序设计,掌握二叉链表的设计技术;4.练习递归函数的设计方法;5.巩固二叉排序树的概念;6.熟悉软件功能的分析设计方法。
二.功能分析与设计利用C或C++,设计程序,定义二叉链表,存储二叉排序树,声明并定义相应的函数,实现链式二叉排序树的下列操作:1. 输入数据个数DataCount(要求在10和20之间)和数据最大值MaxData(在50和100之间)。
算法实现:该任务需要限制输入的DataCount在10和20之间,MaxData在50和100之间,只有当两者均满足要求时,程序才会向下执行。
若不满足时,会提示“输入不正确,请重新输入!”,并继续输入DataCount和MaxData,直至满足要求。
这里用while(1)死循环,不得到正确输入不退出。
部分代码如下:while(1){printf("请输入DataCount:");scanf("%d",&DataCount);printf("请输入Maxdata:");scanf("%d",&Maxdata);if(DataCount>=10&&DataCount<=20&&Maxdata>=50&&Maxdata<=100) break;printf("输入不正确,请重新输入! \n");fflush(stdin); //清空输入}2. 在0和MaxData之间,随机产生DataCount个不重复的整数,按产生先后顺序形成一个数据序列,并输出该序列。
上机实验内容及实验报告要求
三一文库()/工作报告/实验报告上机实验内容及实验报告要求
上机实验内容及实验报告要求
一、《软件技术基础》上机实验内容
1.顺序表的建立、插入、删除。
2.带头结点的单链表的建立(用尾插法)、插入、删除。
二、提交到个人10M硬盘空间的内容及截止时间
1.分别建立二个文件夹,取名为顺序表和单链表。
2.在这二个文件夹中,分别存放上述二个实验的相关文件。
每个文件夹中应有三个文件(.C文件、.OBJ文件和.EXE文件)。
3.截止时间:12月28日(18周周日)晚上关机时为止,届时服务器将关闭。
三、实验报告要求及上交时间(用A4纸打印)
1.格式:
《计算机软件技术基础》上机实验报告
用户名se××××学号姓名学院
①实验名称:
②实验目的:
③算法描述(可用文字描述,也可用流程图):
④源代码:(.C的文件)
⑤用户屏幕(即程序运行时出现在机器上的画面):
2.对C文件的要求:
程序应具有以下特点:A可读性:有注释。
B交互性:有输入提示。
C结构化程序设计风格:分层缩进、隔行书写。
3.上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。
请注意:过时不候哟!
四、实验报告内容
0.顺序表的插入。
1.顺序表的删除。
2.带头结点的单链表的插入。
3.带头结点的单链表的删除。
重庆邮电大学软件专业技术基础实验报告(耿道渠)
《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第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、掌握单链表常用算法的实现。
软件工程实验一
《软件工程》课程实验报告四、实验过程与结果性能需求1.系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。
在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学院对信息处理的需求。
并且不能重复复两个学号的信息。
2.系统的开放性和系统的可扩充性学生信息系统在开发过程中,应该充分考虑以后的可扩充性。
比如数据在某个时间段的数据输入拥堵。
或者数据多的时候,应该确保系统有足够的空间给数据的输入和存储。
3.系统的易用性和易维护性学生信息系统针对的大部分是学生,因此系统应该更见简单,便捷。
UI界面应更加的简单易懂。
同时在维护数据的时候应该更加的方便。
这样避免了因为错误的操作而到导致数据的流逝。
2.3用户平台要求网络方面:此开发出的软件要适用于Internet网及校园内的局域网。
软件方面:支持windows系统及一些常用的办公软件如office等。
硬件方面:可以被个人电脑、平板以及功能强大的移动设备所使用。
一.业务逻辑1.1业务分解1.2业务流图A)学生信息管理:B)学业信息管理:C)学分建设:D)学生奖助信息管理:E)学生活动管理:F)素质测评:五、实验总结在本次实验,熟悉了需求分析的一般步骤,进一步弄清了业务需求、用户需求、功能和非功能需求之间的区别。
对于一个系统,我知道一开始从哪几个方面对系统进行评价。
通过画用例图,能更清新的看清使用者的操作流程,并认识到了用例图在软件或系统开发过程中的重要性,本次实验学到很多。
东北大学计算机软件技术基础实验报告.pdf
计算机软件技术基础实验专业:学生姓名:[哈哈哈]学号:[哈哈哈]实验时间:[2016年8月22日]实验一:线性表的排序与查找#include<stdio.h>int aryLinearList[15];int x=0;void printout();void sort();void deleteit(int n);void insert(int n);void main(){int i,t,a;printf("请输入10个数:\n");for(i=0;i<10;i++){scanf("%d",&aryLinearList[i]);x=x+1;}printf("您的输入为:\n");printout();printf("排序后为:\n");sort();printf("请输入插入的数:\n");scanf("%d",&a);insert(a);printf("请输入要删除的数:\n");scanf("%d",&a);deleteit(a);}void sort()//冒泡法排序{int i,j,t;for(j=0;j<x-1;j++)for(i=0;i<x-1-j;i++)if(aryLinearList[i]>aryLinearList[i+1]){t=aryLinearList[i];aryLinearList[i]=aryLinearList[i+1];aryLinearList[i+1]=t;}printout();}void insert(int n)//插入并排序{aryLinearList[x]=n;x=x+1;sort();}void deleteit(int n)//删除{int i,j;for(i=0;i<x;i++)if(aryLinearList[i]==n){for(j=i;j<x;j++)aryLinearList[j]=aryLinearList[j+1];x=x-1;printout();}}void printout()//显示{int i;for(i=0;i<x;i++)printf("%d",aryLinearList[i]);printf("\n");}实验二:栈与队列的应用#include<stdio.h>#include<String.h>#include<stdlib.h>#include<math.h>#define MAX_LEN10//字符串长度#define MAX_SIZE30//栈或队最大元素个数struct QUEUE//定义队列{int nMaxSize;int nCount;int nFront;//队头int nRear;//队尾char szQueue[MAX_SIZE][MAX_LEN];};struct STACK//定义栈{int nMaxSize;int nTop;//栈顶char szStack[MAX_SIZE][MAX_LEN];};void InitQueue(QUEUE*q,int nMaxSize)//初始化队列{q->nMaxSize=nMaxSize;q->nCount=0;q->nFront=0;q->nRear=0;q->szQueue[MAX_SIZE][MAX_LEN]=0;}void InQueue(QUEUE*q,char*pItem)//入队{if(q->nCount==q->nMaxSize){printf("The Queue is full!\n");return;}strcpy(q->szQueue[q->nRear],pItem);if(q->nRear++==MAX_SIZE)q->nRear=0;q->nCount++;}void OutQueue(QUEUE*q,char*pItem)//出队{if(q->nCount==0){printf("The Queue is empty!\n");return;}strcpy(pItem,q->szQueue[q->nFront]);if(q->nFront++==MAX_SIZE)q->nFront=0;q->nCount--;}void InitStack(STACK*s,int nMaxSize)//初始化栈{s->nMaxSize=nMaxSize;s->nTop=0;s->szStack[MAX_SIZE][MAX_LEN]=0;}void PushStack(STACK*s,char*pItem)//入栈{char*p;if(s->nTop<s->nMaxSize){p=s->szStack[s->nTop];strcpy(p,pItem);s->nTop++;}else{printf("The stack overflow!\n");return;}}void PopStack(STACK*s,char*pItem)//出栈{char*p;if(s->nTop==0){printf("stack is empty!\n");return;}else{p=s->szStack[--s->nTop];strcpy(pItem,p);}}void GetTopStack(STACK*s,char*pItem)//获得栈顶运算符{char*p;char a[10]={0};if(s->nTop==0){a[0]=';';strcpy(pItem,a);}else{p=s->szStack[s->nTop-1];strcpy(pItem,p);}}int isdigit(char x)//判断字符{if(x>='0'&&x<='9')return1;return0;}int Priority(char*op)//获得操作符的优先级{int nPriority=0;switch(op[0]){case'^':nPriority=3;break;case'*':case'/':nPriority=2;break;case'+':case'-':nPriority=1;break;case';':nPriority=0;}return nPriority;}void Compute(char*num1,char*num2,char*op,char*chResult)//计算表达式的值{double fNum1,fNum2;double fResult=0;fNum1=atof(num1);fNum2=atof(num2);switch(op[0]){case'^':fResult=pow(fNum1,fNum2);break;case'*':fResult=fNum1*fNum2;break;case'/':fResult=fNum1/fNum2;break;case'+':fResult=fNum1+fNum2;break;case'-':fResult=fNum1-fNum2;break;}sprintf(chResult,"%.4f",fResult);return;}int main()//主程序{char x[MAX_LEN];//表达式char op[MAX_LEN];//栈顶运算符char num1[MAX_LEN],num2[MAX_LEN];//操作数char chResult[MAX_LEN];//运算结果struct QUEUE q1;//声明队列struct QUEUE*q;struct STACK OS;//声明OS栈和NS栈struct STACK NS;struct STACK*o;struct STACK*n;int i=0;//初始化int j=0;int k=0;q=&q1;o=&OS;n=&NS;InitStack(o,20);InitStack(n,20);InitQueue(q,20);printf("please input the expression end with\';'\n");do//输入表达式{printf("next\n");scanf("%s",x);InQueue(q,x);}while(x[0]!=';');printf("expression\n");while(true){if(q->nCount!=0){OutQueue(q,x);printf("%s",x);}if(isdigit(x[0]))//输入为数字PushStack(n,x);else//输入运算符{GetTopStack(o,op);//获得OS栈顶运算符if(x[0]==';'&&op[0]==';')//输入’;’结束表达式{printf("\n result is");break;}if(Priority(x)>Priority(op))//运算符的优先级〉栈顶运算符{PushStack(o,x);continue;}while((Priority(x)<=Priority(op))&&Priority(op))//运算符优先级<=栈顶运算符{PopStack(n,num1);PopStack(n,num2);PopStack(o,op);Compute(num2,num1,op,chResult);PushStack(n,chResult);GetTopStack(o,op);}PushStack(o,x);}}PopStack(n,chResult);printf("%s\n",chResult);return0;}实验三:关系数据语言的应用create table Stu(Sno char(4)primary key,Sname char(15),Sex char(2),Age numeric,Birthday datetime,Class char(10));create table Course(Cno char(2)primary key,Cname char(20),Chour numeric);create table Score(sno char(4),cno char(2),primary key(sno,cno),grade numeric);insert into Stuvalues('0101','zhangqiang','m','20','1994-02-20','zi1');insert into Stu values('0102','lihong','f','20','1994-08-10','zi1'); insert into Stu values('0103','wangtao','m','21','1993-05-18','zi1'); insert into Stu values('0104','liuli','f','19','1995-03-05','zi2'); insert into Stu values('0105','sundong','m','21','1993-12-17','zi2'); insert into Stu values('0106','wangping','m','22','1992-11-30','zi2'); insert into Stuvalues('0201','ouyangyan','f','20','1994-04-11','dian1');insert into Stuvalues('0202','yangrui','m','20','1994-05-13','dian1');insert into Stu values('0203','liuyan','f','18','1996-01-21','dian1'); insert into Stu values('0204','zhouyu','m','20','1994-07-10','dian1'); select*from stu;insert into course values('01','jisuanji','48'); insert into course values('02','java','32'); select*from course;insert into score values('0101','01','87'); insert into score values('0102','01','90'); insert into score values('0103','01','79'); insert into score values('0104','01','89'); insert into score values('0105','01','58'); insert into score values('0106','01','77'); insert into score values('0201','01','95'); insert into score values('0202','01','80'); insert into score values('0203','01','76'); insert into score values('0204','01','70'); insert into score values('0101','02','91'); insert into score values('0102','02','88'); insert into score values('0103','02','75'); insert into score values('0104','02','91'); insert into score values('0105','02','76'); insert into score values('0106','02','76'); insert into score values('0201','02','90'); insert into score values('0202','02','84'); insert into score values('0203','02','83'); insert into score values('0204','02','57'); select*from score;1.查询学生出生日期(Sno,Sname,BirthDay);Select sno,sname,birthDay from stu;2.按学号顺序查询自动化02班的所有学生(Class,Sname);Select Class,Sname from Stu where class='zi2'order by Sno;3.列出学生选择各门课程的成绩(Sname,Cname,Grade);Select Sname,Cname,Grade from Stu,Course,Score where Stu.Sno=Score.Sno and o=o;4.列出有过不及格成绩的学生名单(Sno,Sname,Class);Select distinct Stu.Sno,Sname,Class from Stu,Score whereStu.Sno=Score.Sno and Grade<60;5.求学生的平均成绩和总成绩(Sname,PJCJ,ZCJ);Select Sname,avg(Grade)PJCJ,sum(Grade)ZCJ from Stu,Score where Score.Sno=Stu.Sno group by Stu.Sname;6查找各科成绩都>=85分的学生(Sname,Class);Select Sname,Class from Stu where exists(Select*from Score where Stu.Sno=Score.Sno and o='01'and Score.Grade>=85)and exists(Select*from Score where Stu.Sno=Score.Sno and o='02' and Score.Grade>=85);7将课程号为“01”的课程名称修改为“软件技术”;Update Course set Cname='RuanJianJiShu'where Cno='01';select*from course;8修改一名学生的姓名、性别、年龄;Update Stu set Sname='gaoyu',Sex='f',age='20'where Sno='0204'; select*from stu;9将成绩为55~59分的男生的成绩修改为60分;Update Score set Grade=60where Sno in(Select Sno from Stu where Sex='m') and Grade between55and59;select*from score;ÎÒÈ¥10删除年龄不是20的学生的所有信息(包括选课和成绩);Delete Stu where Sno in(select Sno from Stu where age<'20'or age>'20');Select Sname,Cname,Grade,Age from Stu,Course,Score where;Stu.Sno=Score.Sno and o=o Array11删除一个班级的所有学生;Delete from Stu where Class='dian1';select*from stu;12删除所有数据表和数据库Drop database MyDB;。
软件工程实验报告宿舍管理系统
软件工程实验报告宿舍管理系统学校专业学号姓名一、系统分析 (3)1.业务流程图 (3)二、需求分析 (3)三、系统整体设计 (5)1.系统管理模块 (5)2.宿舍信息管理模块 (5)3.学生入住管理模块 (5)4.宿舍卫生检查模块 (5)5.水电收费模块 (6)6.报修管理模块 (6)7.来访人员管理模块 (6)8.报表统计模块 (6)四、功能描述: (7)1.宿舍管理系统总数据流图: (7)2.宿舍信息登记分数据流图: (7)3.入住学生信息登记分数据流图: (7)4.宿舍卫生检查分数据流图: (8)5.宿舍水电收费分数据流图: (8)6.宿舍报修分数据流图: (9)7.来访人员登记分数据流图: (9)五静态结构模型 (9)1.定义系统对象 (9)六、软件运行需求 (10)1.硬件接口 (10)2.软件接口 (10)3.故障处理 (10)4.其他问题: (10)七、数据字典(DD) (10)一、系统分析1.业务流程图3种不同权限的用户进入特定的界面进行各自操作。
以学生用户权限登录,操作流程如图1-2所示:以员工权限登录,操作流程如图1-3所示:以最高管理员权限登录,操作流程如图1-4所示:二、需求分析在本系统分析中采用用例驱动的分析方法分析需求的主要任务,识别参与者和识别用例。
并建立用例模型。
由于学生宿舍管理工作存在工作量大、事务繁琐的特点,宿舍管理人员需付出大量的工作时间来从事各种事务性工作,但工作的效率很低。
为提高工作效率,减轻校方人员的工作负担,决定针对学生宿舍管理开发管理系统软件,以供宿舍管理人员通过电脑操作进行宿舍管理,从而使学校的宿舍管理工作系统化、规范化、自动化,提供整个宿舍管理的效率,使总体管理水平上升到一个新的高度。
本系统能减少很多不必要的资源,消除了以前用冗余的纸张式管理,大节省了学校能源。
并且计算机的存储与快速查询功能大大提高了宿舍管理的效率,并且还提高了学籍信息管理的精确度。
电子科技大学软件技术基础实验报告5
电子科技大学通信与信息工程学院标准实验报告(实验)课程名称软件技术基础实验电子科技大学教务处制表电子科技大学实验报告一、实验室名称:校公共机房二、实验项目名称:查找与排序三、实验学时:4学时四、实验原理:使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。
通过上机练习掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等方法、过程和实际应用。
五、实验目的:1.熟练掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等算法方法并实现。
2.掌握课程平台使用方法。
六、实验内容:ex5_1:查找设有序序列的数据元素为:(3,10,13,17,40,43,50,70)1)编写顺序查找函数2)编写二分查找函数3)在主程序中输入关键字(43和5),分别调用两种查找函数,输出结果。
//第一题#include <stdio.h>#define maxnum 20typedef struct{int data[maxnum];int length;}list_type;void create(list_type *l){l->length=8;l->data[0]=3;l->data[1]=10;l->data[2]=13;l->data[3]=17;l->data[4]=40;l->data[5]=43;l->data[6]=50;l->data[7]=70;}void shunxucz(list_type *l,int a1,int a2){int i,flag=0;printf("-----------------------------------------------\n");printf("顺序查找法:\n");for(i=0;i<l->length;i++){if(a1==l->data[i]){printf("%d是第%d个元素\n",a1,(i+1));flag=flag+1;} }if(flag==0) printf("表中没有大小为%d的元素\n",a1);flag=0;for(i=0;i<l->length;i++){if(a2==l->data[i]){printf("%d是第%d个元素\n",a2,(i+1));flag=flag+1;} }if(flag==0) printf("表中没有大小为%d的元素\n",a2);}void erfencz(list_type *l,int a1,int a2){printf("-----------------------------------------------\n");printf("二分查找法:\n");int low,h,m,flag=0,i;low=0;h=l->length-1;for(i=0;i<l->length;i++){m=(low+h)/2; //如果有小数就向小的数字取值9/2=4if(l->data[m]==a1){printf("%d是第%d个元素\n",a1,(m+1));flag=1;break;}else if(l->data[m]<22) low=m+1;else if(l->data[m]>22) h=m-1;}if(flag!=1)printf("表中没有大小为%d的元素\n",a1);flag=0;low=0;h=l->length-1;for(i=0;i<l->length;i++){m=(low+h)/2; //如果有小数就向小的数字取值9/2=4if(l->data[m]==a2){printf("%d是第%d个元素\n",a2,(m+1));flag=1;break;}else if(l->data[m]<22) low=m+1;else if(l->data[m]>22) h=m-1;}if(flag!=1)printf("表中没有大小为%d的元素\n",a2);}int main(){int flag1=43,flag2=5;list_type list,list1,list2;create(&list);create(&list1);create(&list2);shunxucz(&list1,flag1,flag2);erfencz(&list1,flag1,flag2);printf("-----------------------------------------------\n");}ex5_2:排序1)编写简单选择法函数2)编写直接插入法函数3)编写冒泡法排序函数4)编写快速排序函数5)在主程序中输入一组数据元素(513,87,512,61,908,170,897,275,653,462),分别调用4种排序函数,输出每趟排序结果。
计算机软件技术基础实验报告
“开始”--〉“设置”--〉“控制面板”—〉“管理工具”—〉“数据源(ODBC)”,打开之后出现如图1所示窗口。
图1点击“添加”按钮,出现图2。
图2选择SQL Server,点击“完成”,出现图3。
图3名称中填写所创建的数据源的名称,本例中为student,描述可以不填。
因为SQL Server的服务器和客户端均安装在本地计算机上,所以服务器为(local)。
如果本地计算机上只安装了客户端,服务器安装在另外的机器上,服务器为另一台机器的名称。
点击“下一步”,出现图4。
图4SQL Server如何验证ID的真伪,使用哪种方法要看安装SQL Server2000时选择的是哪种验证方式。
如果是Windows验证,选择使用网络登录ID的WindowsNT验证;如果是混合验证模式则要选择下面一种。
本例中采用Windows验证。
进入数据库无需另外的用户名和密码。
点击“下一步”,出现图5。
图5这里要更改默认的数据库,默认情况下数据源所连接的数据库为master,这里要改为student数据库。
点击“下一步”,出现图6。
图6这里无需修改,点击“完成”出现图7。
图7点击“测试数据源”,如果测试成功说明数据源已成功创建。
(3)创建VC应用程序。
打开VC++6.0,新建工程,如图8所示。
选择MFC AppWizard(exe),工程名为exec1,存放在D盘实验文件夹里。
图8点击“确定”,在出现的窗口中选择“单文档”,点击“下一步”,出现图9。
图9这里选择“查看数据库不使用文件支持”,还要选择数据源,点击“数据源…”,弹出如图10所示窗口。
图10选择“student”数据源,点击“OK”,在弹出的窗口中选择表dbo.s,点击“OK”返回图9所示的界面。
以后的创建步骤中没有需要修改的地方可以直接点击完成。
这样工程exec1就创建完成了,并且通过数据源与数据库发生了关联。
创建好的工程可以运行,结果如图11所示。
图11(4)界面设计在工作区左边的树型结构中,选择ResourceView,展开Dialog节点,双击IDD_EXEC1_FORM,打开该对话框。
实验报告 (1)c语言
main()
{
int a,b;
float x,y;
char c1,c2;
scanf(“a=%d,b=%d”,&a,&b);
scanf(“%f, %e”,&x,&y);
scanf(“%c %c”,&c1,&c2);
printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2);
【作业】
1.参照例题,编写一个C程序,输出以下信息:
****************************
Hello,World!
***************************
2.编写一个C程序,输入a、b、c三个数,输出其中最大者。试想,如果求四个数中的最大者,则程序该如何编写。
(二)C语言的基础知识
scanf("%c",&c);//以字符的形式输入数字就是输入数字字符
a=c-'0';//将数字字符转换为数字或者a=c-48;
printf("a=%d",a);
}
数字和数字字符这是两个不同的概念,如:数字0和数字字符‘0’是不同的,因为他们的ASIIC码值不一样。
(三)一维数组
【目的与要求】
1.掌握一维数组的定义、赋值和输入输出的方法;
printf("Everyone has been waiting for.\n");
}
【例2】输入并运行程序,写出运行结果。
main()
{
int a,b,sum;
a=123;b=456;
计算机软件技术基础实验报告
计算机软件实验报告姓名:班级:学号:指导教师:实验一线性表的基本操作一、实验目的与基本要求1.掌握数据结构中的一些基本概念。
数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。
2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。
3.掌握线性表的基本操作:插入、删除、查找以及线性表的合并等运算。
4.掌握运用C语言上机调试线性表的基本方法。
二、实验条件1.硬件:一台微机2.软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试实现线性表的基本运算。
四、实验内容1.试编写在无头结点的单链表上实现线性表基本运算LOCATE(L,X),INSERT (L,X,1)和DELETE(L,1)的算法。
2.假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。
编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。
3.将一个线性表中的值就地逆置。
4.在线性表的顺序存储结构的第一个位置上插入一个元素。
(注意区分链表和顺序表)实验代码:#include"stdlib.h"#include"stdio.h"struct node //定义结构体{int d;struct node *next;};struct node *head1,*head2,*p,*q;void pre(struct node *head) //打印数据{printf("链表中的数据为:\n");p=head;while(p!=NULL){printf("%5d",p->d);q=p;p=p->next;}printf("\n");}struct node *creat() //建立链表{struct node *head;int x;printf("输入你要储存的数据:\n");head=NULL;q=NULL;scanf("%d",&x);while(x>0){p=(struct node *)malloc(sizeof(struct node));p->d=x;p->next=NULL;if(head==NULL) head=p;else q->next=p;q=p;scanf("%d",&x);getchar();}pre(head);return (head);}void locate(struct node *head,int x) //查找链表中的数据{int u=1;p=head;while (p->next!= NULL){if (p->d==x)break;else{ p=p->next;u++;}}if(p->d!= x)printf("无此结点");printf("在链表中的位置为:");printf("%d",u);}void insert(struct node *head,int x, int i) //插入数据{ p = head;int j=1;q=(struct node *)malloc(sizeof(struct node));q->d=x;if(i==1){ q->next=head;head=q;}else{while((j<i-1)&&(p->next !=NULL)){j++;p=p->next;}q->next=p->next;p->next=q;}}void delet(struct node *head,int i) //删除数据{ p=head;int j=1;if(i<0) printf("无此位置");if(i==1){q=head; head=head->next; free(q);}else{while((j<i-1) && (p->next != NULL)){ p=p->next;j++;}q=p->next;p->next=q->next;free(q);}}void hebing(struct node *x,struct node *y) //合并两个链表{p=x;q=y;while(p->next!=NULL)p=p->next;p->next=q;pre(x);}void paixu(struct node *head) //对链表中的数据进行排序{int m,n,i=1,t;p=head;while(p->next!=NULL){p=p->next;i++;}p=head;for(n=i;n>1;n--){p=head;for(m=1;m<n;m++){q=p->next;if(p->d<q->d){t=p->d;p->d=q->d;q->d=t;}p=p->next;}}}void caozuo(struct node *head) //操作界面{int m,n;char t;printf("输入你要的操作:,查找 2,插入 3,删除\n");scanf("%c",&t);switch(t){case'1':{printf("输入你要查找的元素的值:\n");scanf("%d",&m);locate(head,m);}break;case'2':{printf("输入你要插入的元素的值和位置:\n");scanf("%d",&m);scanf("%d",&n);insert(head,m,n);pre(head);}break;case'3':{printf("输入你要删除的元素的位置:\n");scanf("%d",&m);delet(head,m);pre(head);}break;default:printf("error\n");}}void main() //主函数{char frag='y',n=NULL;printf("输入你要建立的第A链表中的元素:\n");head1=creat();printf("输入你要建立的第B链表中的元素:\n");head2=creat();do{printf("选择你要操作的链表A/B或者合并排序操作C:\n"); //选择操作scanf("%c",&n);getchar();switch(n){case'A':{caozuo(head1);}break;case'B':{caozuo(head2);}break;case'C':{hebing(head1,head2);paixu(head1);pre(head1);}break;default:printf("error\n");}printf("\n是否继续y/n:\n");scanf("%c",&frag);getchar();}while(frag=='y');}实验2 栈和队列的基本操作一、实验目的与基本要求1.掌握栈和队列的顺序存储和链式存储结构2.掌握栈和队列的特点。
关于uml实验报告参考3篇
关于uml实验报告参考第1篇面向对象系统分析与设计课程是计算机科学与技术本科专业(软件方向)的一门重要的专业课。
通过本课程的学习,使学生在已有的计算机软硬件基础知识、程序设计知识、数据库和网络通信知识的基础上系统掌握面向对象系统分析与设计的基本方法和技术,并具有针对特定环境下的应用问题进行信息系统开发(包括系统分析、设计与实现)的能力。
通过学习本课程学生可以理解和掌握面向对象系统的分析和设计的方法和分步过程、掌握面向对象系统分析和设计的建模标准UML 语言,能够利用Rational Rose(或Microsoft Viso)软件以某一信息系统为例进行系统分析和设计。
本课程主要介绍系统原理的基本概念、系统开发过程RUP、对面向对象分析和面向对象设计的方法、对面向对象分析和设计的建模标准UML等内容。
通过本课程的学习,学生掌握的知识、内容及掌握的程度要求为: 1. 使学生理解面向对象的信息系统的开发过程、系统分析和设计的原则和方法;2. 使学生掌握UML语言的基础知识,以及UML在面向对象的软件系统分析和设计中的应用,并能使用UML工具建立系统模型;3. 使学生掌握在UML系统模型下应用高级语言建立应用系统的方法;4. 通过案例教学和实验,提高学生在应用面向对象技术开发软件方面的动手能力和解决问题的能力,并鼓励创新。
本实验所要求的建模工具为Rational Rose 20xx。
本课程拟通过对如下系统进行建模来实现分析与设计。
图书管理系统人事信息管理系统软件项目管理系统网上商店销售管理系统教务管理系统计算机软件建模技术现在越来越广泛的应用于软件工程中。
《面向对象的系统分析与设计》课程实验的目的是为了使学生在课程理论学习的同时,通过在一个实践的环境下,实际学习软件统一建模语言,对软件建模技术有一个初步的了解及认识。
通过本指导书中的各个实验,学习掌握对一般面向对象系统建模的方法与技术。
总之,通过上述实验环节,使学生加深了解和更好地掌握《面向对象的系统分析与设计》课程教学大纲要求的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顶是否为相应的括号,若是退栈继续执行;否则算法结束。
选做: 2、假设以数组 sequ[0..MaxSize-1]存放环形队列的元素,同时设变量 rear 和 len 分别指示环形队列中队尾 元素的位置和内含元素的个数。试写出此环形队列队满的条件,并设计相应入队和出队的算法。(根据题 目填空完善程序)
提示:该环形队列对满的条件为:len= =MaxSize,队空的条件为:len= =0。由 rear,len 求队列头指针 front 的过程为:
front=rear-len+1; if (front<0) front=front+MaxSize; 即 front=(rear-len+1+MaxSize)%MaxSize
char data; struct node *lchild , *rchild; } bnode; typedef struct node * blink; blink add(blink bt,char ch) {
if(bt==NULL) { bt=nalloc(sizeof(bnode)); bt->data = ch; bt->lchild = bt->rchild =NULL; } else if ( ch < bt->data) bt->lchild = add(bt->lchid ,ch); else bt->rchild = add(bt->rchild,ch); return bt;
void preorder(blink bt) {
5
if(bt) { n++;
if(bt->lchild ==NULL&&bt->rchild==NULL)
no++;
preorder(bt->
;)
preorder(bt->
;)
}
}
blink creat()
{
blink bt; char ch; ch = getchar();
程 序 调 试 过 程
实 习 小 结
3
I 实验要求
1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。 2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机 效率。 3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。 4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次 实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。
出队一次:
余下元素出列:
实验四 树
一、 实验目的
1.掌握二叉树,二叉树排序数的概念及存储方法。 2.掌握二叉树的遍历算法。 3.熟练掌握编写实现树的各种运算的算法。
一、 实验内容
树的基本运算:创建树;输出树;遍历树;求二叉树的深度;创建二叉排序树;二叉排序树的查找;
3
二叉排序树的删除;创造哈夫曼树;输出哈夫曼树; 1、建立一棵二叉树并中序遍历。(填空) #include “ stdio.h” #include “malloc.h” struct node{
6
printf(“number of node: %d number of leaf: %d \n” , n , no); } 输入: ab##cd### 输出:
【实验目的】
实验五 查找与排序
熟悉各种查找与排序的算法,并对各种算法的效率进行比较和测试。
【实验内容】
1. 排序算法比较。要求:
①调用函数 int rand(void)产生 100000 个待排序的数据;
}
void inorder(blink bt)
{
if(bt)
{ inorder(bt->
);
printf(“%c”,
);
inorder(bt->
);
}
4
}
main() {
blink root = null; int i,n; char x; scanf(“%c”,&n); for(i=1;i<=n;i++) {
选做: 3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。 要求: ①该算法用函数(非主函数)实现; ②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。 4.已知非空单链表第一个结点由 head 指出,请写一算法,交换 p 所指结点与其下一个结点在链表中 的位置。 要求: ①该算法用函数 Reverse(head,p)实现,其中 head 为表头指针,p 指向要交换的结点; ②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。 要求: ①建立一个结点中含有三个域的单链表; ②在主函数中调用此算法,构成双向循环链表; ③在主函数中利用正向和逆向两种方式输出链表中的数据,验证算法的正确性。
if (ch!=’#’)
{
bt= nalloc(sizeof(bnode));
bt->data= ch;
bt->lchild =
( );
bt->rchild=
( );
}
else bt=NULL;
return bt;
}
main() {
blink root; root = creat(); preorder(root);
《计算机软件技术基础》实验报告
专 业 _____________ 年 级 _____________ 学 号 _____________ 学生姓名 _____________ 指导老师 _____________
南华大学计算机学院编
实验时间:
【实验报告】
实验地点:
实验机号:
具 体 实 验 内 容
2
x=getchar(); root=add(root,x); } inorder(root); printf(“\n”); } 输入:ephqsbma 输出:
2、求二叉树的结点数和叶子数(填空) #include “stdio.h” #include “alloc.h” struct node{
char data; struct node *lchild , *rchild; } bnode; typedef struct node *blink; int n=0,no=0;
②测试下列各排序函数的机器实际执行时间:
a.直接插入排序; b.希尔排序
c.选择排序
d.冒泡排序
e.快速排序
f.归并排序
实验六 综合练习
【实验目的】
1.在掌握基本概念的基础上,综合运用线性结构和树结构以及排序和查找算法进行复杂结构程序设 计。
【实验内容】
1.试将一棵普通树转换成二叉树,同时转换而成的二叉树按前序、中序、后序进行遍历,并输出遍 历后结点的序列。例如,下面左图是一棵普通树,用括号表示法表示为:A(BC(FG)DE),右图是转换后的 二叉树。
4
实验二 栈与队列
【实验目的】
1.学习如何使用 C 语言实现堆栈与队列。 2.熟悉堆栈与队列的基本操作及应用。
【实验内容】
1. 现有一循环顺序队列,其结构描述为:
# define maxsize 10
struct sequeue
{
datatype data[maxsize]; int front,rear;
};
/* 循环顺序队列的类型 */
sequeue sq 要求:
①设计队列的几种几种操作:初始化、进队、出队、取队头元素和判断队列是否非空。
②编写一个主函数进行测试。
2.顺序堆栈实验 要求:
①设计堆栈的几种几种操作:初始化、入栈、出栈、取栈顶元素和判断堆栈是否非空。
②编写一个主函数进行测试。
实验三 队列与栈的应用
int dequeue (queue qu, char *x) { int front; if (len= =0) return 0; else { front=(rear-len+1+maxsize) %maxsize; *x=qu[front]; len--; return 1; } }
void main() { char x; queue qu; printf( “a 入队\n”); enqueue (qu, ‘a’); printf( “b 入队\n”); enqueue (qu, ‘b’); printf( “c 入队\n”); enqueue (qu, ‘c’); printf( “出队一次:”); dequeue (qu, &x); printf( “%c\n”,x); printf( “d 入队\n”); enqueue (qu, ‘d’); printf( “e 入队\n”);
2
enqueue (qu, ‘e’); printf( “出队一次:”);
dequeue (qu, &x); printf(“%c\n”,x); printf( “f 入队\n”); enqueue (qu, ‘f’); printf( “g 入队\n”); enqueue (qu, ‘g’); printf( “出队一次:”);
# include <stdio.h>
# define maxsize 6 typedef char queue [maxsize]; int rear=0, len=0; int enqueue (queue qu, char x) { if (len= =maxsize) return 0; else { rear=(rear+1) %maxsize; qu[rear]=x; len++; return 1; } }