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

合集下载

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

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

《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第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的元素。

计算机实训实验报告

计算机实训实验报告

一、实习时间20Xx年X月18日到X月10日二、实习地点中****-*三、>通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,为顺利毕业进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。

四、实习内容能对电脑交易和具体的电脑安装步骤进行了解,并查阅资料巩固自我缺漏的电脑经验。

能将具体的计算机知识应用到实际中,在电脑交易的同时,将自己的所学所想所感付诸实践。

能够熟练掌握一定的计算机技巧,比如安装系统,安装插线,识别型号,处理图形和flash等。

能够与别人进行一定程度的计算机交流,并且提供各种买卖信息以及电脑性能好坏的识别。

能够推销贩卖计算机,并且积累丰厚的社会交流经验和提升自我的语言表达能力。

五、实习体会职高生活让我对计算机理论知识有了一定的了解。

但实践出真知,唯有把理论与实践相结合,才能更好地为社会服务。

经过实践和实习,我对未来充满了美好的憧憬,在未来的日子,我将努力做到以下几点:一、继续学习,不断提升理论涵养。

在信息时代,学习是不断地汲取新信息,获得事业进步的动力。

作为一名青年学子更应该把学习作为保持工作积极性的重要途径。

走上工作岗位后,我会积极响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升能力,以广博的社会知识拓展视野。

二、努力实践,自觉进行角色转化。

只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。

同样,一个人的价值也是通过实践活动来实现的,也只有通过实践才能锻炼人的品质,彰显人的意志。

必须在实际的工作和生活中潜心体会,并自觉的进行这种角色的转换。

三、提高工作积极性和主动性实习,是开端也是结束。

展现在自己面前的是一片任自己驰骋的沃土,也分明感受到了沉甸甸的责任。

在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,做好>,努力创造业绩,继续创造更多的价值。

最后感谢单位领导和部门领导以及同事对我的支持和帮助,我会继续努力的。

杭电软件技术基础实验报告

杭电软件技术基础实验报告

《软件技术基础》上机实验报告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.带头结点的单链表的删除。

《计算机软件技术基础》实验1 程序流程设计

《计算机软件技术基础》实验1 程序流程设计

计算机科学系实验报告书
课程名:《计算机软件技术基础》题目:程序流程设计
班级:
学号:
姓名:
1、实验内容或题目
编程实现输出9*9乘法口诀表
2、实验目的与要求
⑴进一步熟悉熟悉VC++6编译环境,掌握运用VC编译C程序的基本方法
⑵掌握常见的流程控制结构,运用控制结构编写多重循环的C程序,输出9*9表
⑶输出上三角、下三角、左三角、右三角等几种形式
3、实验步骤与源程序
⑴实验步骤
1.定义整型变量i,j,k;
2.定义循环语句使i能从一加到九,并在i的循环语句中,再利用循环语句使得j依次从
一加到九,定义k为i与j的乘积,并输出k=j*i,当i完成一次循环后换行
⑵源代码
4、测试数据与实验结果(可以抓图粘贴)
结果分析与实验体会
很久没有用VC编写C程序,刚开始找不到编译按纽,后来在老师的指点下完成程序的运行,并在编写过程中逐步完善程序,按照乘法表的顺序及格式慢慢调试使得运行结果和预期的相符,。

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

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

计算机软件技术基础实验报告姓名:班级:电科0901学号:实验一在交互方式下完成下列任务:1、建立单向链表,表长任意;2、可交互输出单链表中的内容;3、编写算法计算出自己所建单链表的长度并输出;4、删除自己所建单链表中的第K个结点,并将剩余结点输出;5、将单链表倒排,输出结果。

程序源如下:#include <stdio.h>#include <stdlib.h>#define flag 5void list() //菜单列表{printf("menu\n");printf("1.建立单向链表\n");printf("2.计算链表长度\n");printf("3.输出链表内容\n");printf("4.删除结点\n");printf("5.倒排链表\n");printf("6.退出\n");}struct LinkList //链表结点定义{int data;struct LinkList *next;}*H;struct LinkList *CreatLList() //建立单链表{struct LinkList *H=NULL,*p,*q; //H为链首,q为尾结点int x; //数据域printf("Please input data:");scanf("%d",&x);p=(struct LinkList *)malloc(sizeof(struct LinkList));p->data=x;if(H==NULL)H=p;elseq->next=p;q=p;while(x!=flag) //flag是结束标志{printf(" go on:");scanf("%d",&x);p=(struct LinkList *)malloc(sizeof(struct LinkList));p->data=x;if(H==NULL)H=p; //建立头结点elseq->next=p; //建立后续结点q=p; //尾结点q移动到最后}q->next=NULL;return H;}void LengthLList(struct LinkList *H) //计算链表长度{struct LinkList *p=H;int j=0;while(p!=NULL){p=p->next;j++;}printf("链表长:%d\n",j);}void output(struct LinkList *H) //输出链表内容{struct LinkList *p=H;if(p==NULL)printf("此表为空");elseprintf("表单内容为:");while(p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");}void back(struct LinkList *H) //倒排链表{struct LinkList *p=H;int value[flag],i=0,j;if(p==NULL)printf("此表为空");elsewhile(p!=NULL){value[i++]=p->data;p=p->next;}p=H;for(j=i-1;j>=0;j--){p->data=value[j];p=p->next;}printf("\n新链表为:"); //输出新链表output(H);}Delete(struct LinkList *H) //按值删除链表结点{int j,z=1;struct LinkList *p,*s;printf("请输入要删除节点的值:");scanf("%d",&j);if(H->next==NULL)return 0;p=H->next;s=p;while((p!=NULL)&&(p->data!=j)){s=p;p=p->next;}if(p==NULL)return 1;s->next =p->next;free(p);return 2;}void menu(int n) //菜单函数{switch(n){case 1: H=CreatLList();break; //创建链表case 2:LengthLList(H);break; //计算链表长度case 3:output(H);break;case 4:Delete(H);break;case 5:back(H);break;case 6:exit(0); //退出}}void main() //主函数{int n;list();printf("Please choose from 1-6:");scanf("%d",&n);while(n<1||n>6){printf("error,Please input again:\n");list();scanf("%d",&n);}menu(n);while(1){printf("please choose 1-6:");scanf("%d",&n);while(n<1||n>6){printf("error,Please input again:\n");list();scanf("%d",&n);}list();menu(n);}}运行结果:实验总结:大部分程序书上都有,主要参考的书上,再加上自己的理解,碰到最大的问题就是倒排输出,总是得不到想要的结果,但最后通过不断的修改调试终于成功了,还是比较值得开心的,其他的一些都是自己写的时候出现的小问题,或是没有理解透彻的,经过一系列的检查修改还是总算正确了。

电子科技大学软件技术基础实验报告5

电子科技大学软件技术基础实验报告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.学习使用计算机软件的基本操作。

2.学习使用计算机软件进行编程。

3.编写一个简单的计算机软件,并进行测试。

实验步骤:1.打开计算机软件,并学习基本的操作方法。

包括如何创建、保存和打开文件,如何设置字体、颜色和格式等。

2.学习基本的编程概念和语法,包括变量、函数、条件语句和循环语句等。

3.编写一个简单的计算机软件,并进行测试。

假设我们要编写一个求解一元二次方程的软件。

首先,定义一个函数来计算方程的根。

然后,在主函数中输入方程的系数,并调用函数进行计算。

最后,输出结果。

实验结果分析:通过本次实验,我学会了如何使用计算机软件进行操作和编程。

在编写一元二次方程求解软件的过程中,我遇到了一些问题,如如何处理方程无解和有多个解的情况等。

为了解决这些问题,我添加了对方程判别式的计算和判断逻辑,从而得到了正确的结果。

实验总结:本次实验让我更加深入地了解了计算机软件的基本操作和编程概念。

通过编写一个简单的计算机软件,我不仅巩固了所学的知识,还锻炼了分析和解决问题的能力。

在今后的学习和工作中,我将继续深入学习和应用计算机软件,为实现更多的功能和创造更大的价值做出贡献。

此外,我还意识到在软件开发过程中应注重错误处理和逻辑判断,确保软件的稳定性和可靠性。

以上是本次计算机软件基础上机实验的报告,通过本次实验,我对计算机软件的基本操作和编程有了更深入的了解,并在实践中掌握了一些基本的编程技巧和方法。

这将为我今后的学习和工作奠定坚实的基础。

实验报告 (1)c语言

实验报告 (1)c语言
#include "stdio.h"
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;

《软件开发技术基础》(56 学时) 实验教学大纲(修订稿).

《软件开发技术基础》(56 学时) 实验教学大纲(修订稿).

《软件开发技术基础》(56学时)实验教学大纲(修订稿)(中文)软件开发技术基础课程名称(英文)Fundamentals of software developing technology 课程编号 COMP2024 开课类型必修 课程总学时 56 开课院系电信学院实验总学时 16 开设专业电气课程总学分 3.5课程类别技术基础 课程负责人赵英良第一部分 总体说明一、课程的目的、任务通过本课程的目的是通过学习和训练,加深对大学计算机基础课程的理解和认识,加强程序设计能力的训练,培养学生运用软件开发方法和技术分析问题和解决问题的能力。

本课程主要讲授在操作系统、数据库、多媒体、网络等应用环境中软件的基本开发方法及技术,以及在软件开发过程中要解决的数据结构与常用算法的实现。

通过该课程的学习,使学生掌握在上述环境中开发软件所必需的基础知识、基本开发方法和常用开发技术,为今后结合实际应用开发软件打下必要的基础。

二、课程的教学要求1.了解和掌握现代软件工程的基本理论、软件开发方法和技术2.了解和掌握经典数据结构的基本内容及常用算法3.了解和掌握操作系统的主要管理功能及其操作系统相关程序设计方法4.了解和掌握与数据库应用有关的基本理论、开发方法和技术5.了解和掌握在网络环境下软件开发的基本方法和技术6.了解和掌握在多媒体应用中涉及到的基本理论、程序设计方法和技术三、教学方法、教学形式、教学手段的特色1. 理论与实践相结合:理论讲授约占70%,课内实践占30%;2. 多媒体与板书相结合:一般内容使用多媒体课件教学,增加课堂容量;个别问题使用板书教学,使学生能跟上课堂进度。

3. 课内与课外相结合:课内必做实验16学时,另在课外以小组为单位完成一个小的软件项目;4. 面授与网络相结合:除面授、当面答疑、课内实验辅导外,课程网站提供丰富的教学资源,可以自学,还可以网上答疑,网上提交作业;四、教学内容序号 实验项目名称 学时实验类型每组人数 实验要求1 实验1 利用顺序表实现学生信息管理2 综合 1 必做2 实验2 利用单链表实现学生信息管理 2 综合 1 必做3 实验3 二叉树的生成和遍历 2 基本 1 必做4 实验4 Windows常用系统命令的编程 2 基本 1 必做5 实验5 数据库的建立和操作 2 基本 1 必做6 实验6 数据库基础编程 4 综合 1 必做7 实验7 消息回声 2 基本 1 必做课外实验:以3-5人的小组为单位,完成一个小的软件项目,要求有软件开发文档,时间为12周,具体题目可参考网上提供的“开放创新实验推荐项目”,也可自己选择,但须经任课教师审核。

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

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

计算机软件实验报告姓名:班级:学号:指导教师:实验一线性表的基本操作一、实验目的与基本要求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.掌握栈和队列的特点。

  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给出的
关键字序列,以冒泡排序方法,编程实现其排序。

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

相关文档
最新文档