西工大软件技术实验报告-大作业
- 格式:doc
- 大小:3.36 MB
- 文档页数:7
实验四进程与线程一、实验目的(1)理解进程的独立空间;(2)理解线程的相关概念。
二、实验内容与要求1、查阅资料,掌握进程创建和构造的相关知识和线程创建和构造的相关知识,了解C语言程序编写的相关知识;2、理解进程的独立空间的实验内容及步骤(1)编写一个程序,在其 main()函数中定义一个变量 shared,对其进行循环加/减操作,并输出每次操作后的结果;(2)使用系统调用 fork()创建子进程,观察该变量的变化;(3)修改程序把 shared变量定义到 main()函数之外,重复第(2)步操作,观察该变量的变化。
3、理解线程的实验步骤(1)编写一个程序,在其 main()函数中创建一个(或多个)线程,观察该线程是如何与主线程并发运行的。
输出每次操作后的结果;(2)在 main()函数外定义一个变量shared(全局变量),在main()中创建一个线程,在 main()中和新线程shared进行循环加/减操作,观察该变量的变化;(3)修改程序把shared变量定义到 main()函数之内,重复第(2)步操作,观察该变量的变化。
4、对整个实验过程进行分析总结,给出详细步骤;(1) 观察上述进程执行结果,并分析原因;(2) 提交源程序清单,并附加流程图与注释。
三、实验过程1、进程的与线程的创建和构造(1).进程的创建和构造进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。
但是进程是一个动态的实体,它是程序的一次执行过程。
进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。
新的进程通过克隆旧的程序(当前进程)而建立。
fork()和clone()(对于线程)系统调用可用来建立新的进程。
(2)线程的创建和构造线程也称做轻量级进程。
就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==《软件技术基础》实验报告 (1000字)《软件技术基础》实验报告学院:XXXXXXXXX班级: XXXXXXX学号:XXXXXXXXXX姓名: XXXXXX指导老师: XXXXXX实验一顺序表的操作班级 XXXXX 学号 XXXXXXX 姓名 XXXX第 X 周星期 X 、 XXX 节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。
二、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。
(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。
(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。
2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。
要求实现菜单、初始化、添加、删除和显示等功能。
三、实验结果:四、实验中遇到的问题及解决方法:相关函数书上都有一样的或类似的,因此并未遇到什么问题。
五、实验心得体会:书上的例程是含有两个元素的,改为一个元素的时候花了一些时间。
参考了书本,对书上的函数有了比较深刻的理解。
附:部分源程序#include<iostream.h>const int maxsize=100;struct stu{int id;char name[20];};struct SeqList{stu data[maxsize];int length;};//主函数int main(){SeqList L;L.length=0;stu s;cout<<"请输入三个学生的学号、姓名:\n";} for(int i=0;i<3;i++) { cin>>s.id>>; Insert(&L,s); }cout<<endl; Display(&L); int ID; cout<<"请输入要删除的学生的学号"; cin>>ID; Delete(&L,ID); cout<<endl; Display(&L); return 0;实验二链表的操作(一)班级 XXXXX 学号 XXXXXXX 姓名 XXXX第 X 周星期 X 、 XXX 节成绩一、实验目的:1、掌握单链表结构的实现方式;2、掌握单链表常用算法的实现。
实验1 基于CCS的简单的定点DSP程序一、实验要求1、自行安装CCS3.3版本,配置和运行CCS2、熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3,ARO-AR7, PC, T0-T33、结合C5510的存储器空间分配,访问DSP的内部RAM4、编写一个最简单的定点DSP程序,计算下面式子y=0.1*1.2+35*20+15*1.65、采用定点DSP进行计算,确定每个操作数的定点表示方法, 最后结果的定点表示方法,并验证结果6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件二、实验原理DSP芯片的定点运算---Q格式(转) 2008-09-03 15:47 DSP芯片的定点运算1.数据的溢出:1>溢出分类:上溢(overflow):下溢(underflow)2>溢出的结果:Max MinMin Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。
例:signed int :32767+1=-32768;-32768-1=32767unsigned char:255+1=0;0-1=2553>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。
当发生溢出时,自动将结果设置为最大值或最小值。
2.定点处理器对浮点数的处理:1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区2>放大若干倍表示小数。
比如要表示精度为0.01的变量,放大100倍去运算,运算3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。
Q0:小数点在第0位的后面,即我们一般采用的方法Q15小数点在第15位的后面,0~14位都是小数位。
软件技术实验报告班级学号姓名第 2 次实验:VB菜单Toolbar实验内容:实验要求:运用VB中提供的界面辅助工具生成一个应用程序界面,要求该界面带有顶行下拉菜单和工具栏按钮。
实验步骤:1) 实验中要求采用两个外部控件即Toolbar和ImageList,这两个控件都是ActiveX控件,都被包含于VB中携带的“Microsoft Windows Common Control 6.0”控件组中,需要在“工程”下拉菜单中找到“部件”并单击之,随后在弹出的控件目录中点选“Microsoft Windows Common Control 6.0”,使之“应用”并“确定”,这样,该组控件便被全部添加到了工具箱中。
2) 预先准备好要用于窗体的素材,例如图片和若干小图标。
然后分别点击工具箱中的Toolbar和ImageList,控件并将这两个控件画到窗体上。
3) 向ImageList 控件中置入合适的图象,即把未来要用于界面中按钮上的小图标预先置入ImageList 控件,具体做法:①用鼠标右键单击ImageList 控件,然后单击“属性”以打开“属性页”对话框。
②在“通用”选项卡中点选图标预设大小,这里采用32×32;然后单击“图像”选项卡;③填入索引号1,然后单击“插入图片”按钮,在随后弹出的选择图片对话框中找到希望出现在Toolbar 控件中的图象。
重复该操作(每次重复,索引号加1)直到得到了所需的所有图象后,单击“确定”按钮。
4) 将ImageList 控件与Toolbar控件相关联,具体做法:①用鼠标右键单击Toolbar 控件,然后单击“属性”以打开“属性页”对话框。
②在“通用”选项卡中,单击“图象列表”框,并选择刚才置入的ImageList 控件,然后单击“应用”。
5) 向Toolbar 控件中添加按钮,具体做法:①用鼠标右键单击Toolbar 控件,然后单击“属性”。
②在“属性页”对话框中,单击“按钮”选项卡。
学院*****************目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (4)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (10)2.3函数实现 (13)2.4开发日志 (18)3 程序调试及运行 (20)3.1程序运行结果 (20)3.2程序使用说明 (22)3.3程序开发总结 (22)4 附件(源程序) (22)1 摘要1.1 设计题目折半法查找演示程序1.2 设计内容本程序是一个演示折半查找算法的演示程序。
由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。
1.3 开发工具Visual C++ 6.0和Win32。
1.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构程序功能模块:本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。
各模块的主要功能如下:程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。
此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:***************** ");/*作者信息*/p_s(4);printf("Email:************************ ");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。
西工大计算机学院高级语言程序设计实验报告学号:姓名:班级:说明:创建接口Speakable和Runner,然后创建两个类Dog和Person 实现该接口。
运行上面的程序,思考如下的问题:(1)该程序编译后生成几个字节码文件(2)创建一个类Bird(鸟),给出其声音特征,并在主类中创建一个Bird类的实例,输出其特征。
(3)如何编写抽象类代替程序中的接口,实现程序同样的功能。
试比较它们的不同。
答:(1)生成五个字节码文件(2)程序结果如图:(3)程序结果如图:接口没有执行方法,没有执行函数,但是类有。
说明:创建一个名称为Vehicle的接口,在接口中添加两个带有一个参数的方法start()和stop()。
在两个名称分别为Bike和Bus的类中实现Vehicle接口。
创建一个名称为interfaceDemo的类,在interfaceDemo的main()方法中创建Bike和Bus对象,并访问start()和stopt()方法。
结果如图:说明:创建一个名称为MainPackage的包,使它包含ParentClass和SubClass。
ParentClass包含变量声明,其值从构造函数中输出。
SubClass类从父类派生而来,完成对父类变量的赋值。
创建一个名称为DemoPackage的主类,使它不在MainPackage包中,在该类中创建一个SubClass类的对象。
结果如图:实验六异常处理说明:编写一个程序,同时捕获数组越界和被0除的异常,说明异常处理语句try-catch-finally的处理机制。
(3)结果如图:(5)结果如图:(6)结果如图:说明:创建用户自定义异常,用于描述数据取值范围的错误信息。
结果如图:(1)throw语句用在方法体内,表示抛出异常,由方法体内的语句处理;是具体向外抛异常的动作,所以它是抛出一个异常实例。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。
西工大计算机学院高级语言程序设计实验报告课程名称Java语言与面向对象程序设计实验课次Java第1次实验项目实验二面向对象的编程技术实验时间指导老师评议成绩评定:(满分为2分)指导教师评语:指导教师签名:实验容(要求、算法、步骤和方法)请参见实验说明书实验结果具体代码请参见附件中电子版的java源程序。
源程序的简要说明如下:------------------------------------------------------------ Java实验:实验一:熟悉Java 程序的开发Myclass.java说明:要求:编写并运行第一个Java Application程序,利用JDK软件包中的工具编译运行这个程序,在屏幕上输出“the sum is 7”实验结果:MyFirstJavaApplet.java说明:要求:编写并编译第一个Java Applet程序,使之能够在浏览器中显示“Hello world”,并写出配合Applet的HTML文件。
结果如图:实验二:面向对象的编程技术TestCCircle.java说明:要求:定义一个类-圆,并编一个主类测试它,创建类-圆的一个实例,并输出该圆的半径。
结果如图:TestCCircle.java说明:扩展圆的定义,为其增加可以求圆面积的方法,并在主类中输出一个实例化的圆的面积。
结果如图:思考问题:答:1)可以将类-圆的定义和主类的源代码放在两个文件中,只需要将两个Java文件命名为两个类的名称即可。
2)修改程序,使圆的属性pi定义为最终变量,其值为3.14159,运行程序失败,修改后的源代码见源文件。
3)、4)修改代码见源码,测试结果如图:Book.java说明:要求:(1)编写Book.java,定义一个类Book,具有以下属性和方法:属性:书名(Title);出版日期(Pdate);字数(Words)。
方法:计算单价price():单价=字数/1000*35*日期系数上半年的日期系数=1.2;下半年的日期系数=1.18(2)编写主类TestClass,在主类中实例化类Book,并输出实例化对象的属性。
计算机实习报告一、趣味题彩色的圆环:分析图形可知,一共有 n 个同心圆,外面大圆 n 等分,然后从每个等分点作全部同心圆的两条切线。
如果用极坐标表达,能够很容易求解切点,代码以下所示:n=10; %同心圆数量m=40; %等分点数R=1; %外圆半径s=0:0.01*pi:2*pi; %控制圆的光滑程度的极坐标角度t=0:2*pi/m:2*pi; %等分点极坐标角度x0=R*cos(t);y0=R*sin(t); %等分点直角坐标color=['b','r','c','g','m','y']; %画图颜色lc=length(color); %颜色数量长度,超出后从头开始for i=1:n %开始同心圆循环r=R/n*i; %现在同心圆半径a=acos(r/R); %切线与圆心线角度(弧度制)x1=r*cos(t-a);y1=r*sin(t-a); %任意等分点相对现在同心圆的第一种切点x2=r*cos(t+a);y2=r*sin(t+a); %任意等分点相对现在同心圆的第二个切点plot(r*cos(s),r*sin(s),color(mod(i,lc)+1));hold on; %画同心圆for j=1:m %对每一种等分点循环plot([x0(j),x1(j)],[y0(j),y1(j)],color(mod(i,lc)+1));hold on;%第一条切线plot([x0(j),x2(j)],[y0(j),y2(j)],color(mod(i,lc)+1));hold on;%第二条切线endendaxsi equal;%横纵坐标比例一致实验绘图成果以下图所示:二、算法题求无向图的最短途径(D i j k s t r a算法):实验原理分析、原理及代码以下所示(此实验代码不仅包含了实验所规定的求带权无向图最短途径,我还拓展了求有向、无向、带权有向图最短途径的内容):#i n c l u d e<i o s t r ea m>#i n c l u d e<i o m a n i p>u s i n g namespace s t d;#d e f i n e w u q i o n g0class tu{p u b li c:i n t c h a z h a o(i n t);//查找v o i d z j d i n gd i a n(i n t x);//增加顶点t u();v o i d z e n g j i a();//控制增加弧边和点v o i d z j hu b i a n();//增加弧边v o i d b i a n li();//控制遍历v o i d s h e n d u(i n t );//深度v o i d g u a n gd u(i n t );//广度v o i d j i n d u i(i n t );//进队列i n t c hudu i();//出对了boo l p a n k on g();//判空//上面全部的函数与邻接矩阵有关v o i d z x go u z a o();//初始化与最小路劲有关的东东v o i d z x s hu c hu();//求 S 中的最小路劲p r i va t e:i n t k i nd; //类图;i n t l e ng t h;// 顶点个数i n t *d i n gd i a n;//顶点i n t *j u z h e n;//矩阵i n t nu m;//最大顶点数目i n t*v i s t e d;//访问状况i n t *d u ili e;//模拟队列i n t d u i c h a n g;//队列长度//上面全部的变量与邻接矩阵有关i n t*s;//寄存现在顶点i n t s l e n g t h;//现在顶点的长度i n t*d i s t;//寄存最小路劲i n t*p r e;//寄存路劲;i n t*f i n a l;//寄存顶点};t u::t u()//初始化图{cout<<"请输入图的种类1:有向.2:无向.3:带权有向.4:带权无向"<<e n d l;//图的种类c i n>>k i n d;cout<<"请输入图的顶点数目"<<e n d l;//为顶点赋值c i n>>nu m;d i n gd i a n = new i n t[nu m];//为顶点分派内存保存j u z h e n =new i n t[nu m*nu m];//产生矩阵i f(k i n d==1||k i n d==2)//为无权图初始化矩阵{f o r(i n t i =0;i<nu m*nu m;i++)j u z h e n[i]= 0;}else//有权图初始化矩阵{f o r(i n t i =0;i<nu m*nu m;i++)j u z h e n[i]= w u q i on g;}l e n g t h = 0;}//增加顶点v o i d t u::z j d i n gd i a n(i n t x){i f(c h a z h a o(x)!=-1||l e n g t h==nu m)cout<<"图内有此顶点或图内无空间可插入,插入失败"<<e nd l;else{d i n gd i a n[le n g t h]= x;l e n g t h++;}}//增加边v o i d t u::z j hu b i a n(){i n t i;//弧头i n t j;//弧尾i f(k i n d==1||k i n d==2)//无权图{cout<<"请输入弧的头和尾"<<e n d l;c i n>>i>>j;i f(k i n d== 1)//有向图{j u z h e n[i*nu m+j]=1;}else//无向图,两边同时取值{j u z h e n[i*nu m+j]=1;j u z h e n[j*nu m+i]=1;}}else//权值,同上,将 1 改为 K(权值)即可{i n t k;c i n>>i>>j>>k;i f(k i n d== 3){j u z h e n[i*nu m+j]=k;}else{j u z h e n[i*nu m+j]=k;j u z h e n[j*nu m+i]=k;}}}//查找,将该数所在位置返回,若无则返回-1i n t t u::c h a z h a o(i n t x){f o r(i n t i =0;i<l e ng t h;i++)if(x == i)return i;return -1;}//控制遍历函数v o i d t u::b i a n li()//遍历函数{cout<<"该图的邻接矩阵为:";i n t i;int j;f o r(i=0;i<l e ng t h;i++)//将矩阵输出{c o u t<<e nd l;f o r(j=0;j<l e ng t h;j++)c o u t<<s e t w(6)<<j u z h e n[i*l e n g t h+j]<<" ";}c o u t<<e nd l;v i s t e d =new i n t[l e ng t h];//为设立访问状态定义内存空间cout<<"深度搜索:";f o r(i=0;i<l e ng t h;i++)//全部初始化为 0 即未访问状态v i s t e d[i]=0;s h e n d u(0);//将0作为0点运用深度访问函数c o u t<<e nd l;cout<<"广度搜索:";f o r(i=0;i<l e ng t h;i++)//重新设立访问状态v i s t e d[i]=0;d u ili e= new i n t[le ng t h+1];d u ili e[0]=-1;//队列初始化d u i c h a n g=0;g u a n gd u(0);//将0作为0点运用广度访问函数}//深度遍历v o i d t u::s h e n d u(i n t x)//采用递归的手法{i n t p;v i s t e d[x]=1;//访问后置 1 避免重复访问cout<<x<<"";p = x*l e n g t h+1;w h il e(p%l e n g t h!=0){i f(j u z h e n[p]!=0&&v i s t e d[p%l e n g t h]!=1)s h e n d u(p%l e n g t h);p++;}}//广度遍历v o i d t u::g u a n gd u(i n t x){i n t p;v i s t e d[x]=1;cout<<x<<"";p=l e n g t h*x+1;w h il e(p%l e n g t h!=0)//没有遍历属于根节点的后裔的全部兄弟结点加入到队列中(这样能够先进先出,后来的子代加入后也是先输出父亲结点){i f(j u z h e n[p]!=0&&v i s t e d[p%l e n g t h]!=1){v i s t e d[p%l e n g t h]=1;//判断与否已经加入队列或访问j i n d u i(p%l e n g t h);}p++;//进行下一种判断}w h il e(p a n k on g())//加入全部的子代兄弟节点后现在出队列并且访问,访问的方式一致会访问后优先加入其子代结点然后出队列访问{g u a n gd u(c hu d u i());}}//进队列,在队头插入一种函数,这个出队入队为了广度输出v o i d t u::j i n d u i(i n t x){d u ili e[d u i c h a n g+1]= -1;d u ili e[d u i c h a n g]= x;du i c h a ng++;}//出队列,将队列中的最后一种数返回i n t t u::c hu d u i(){int j;j =du ili e[0];f o r(i n t i=0;i<d u i c h a n g;i++)d u ili e[i]=d u ili e[i+1];d u i c h a n g--;return j;}//判空函数,函数为空的时候返回 0boo l t u::p a n k o n g(){i f(d u i c h a n g == 0)return f a l s e;elsereturn t r u e;}//控制增加函数v o i d t u::z e ng j i a(){i n t j ;f o r(i n t i =0;i<nu m;i++)//插入顶点z j d i n gd i a n(i);cout<<"请输入需要增加的弧数(最少"<<num-1<<"条且确保连通)"<<e n d l;//插入弧c i n>>j;cout<<"请输入弧的头和尾和权值"<<e nd l;f o r(i=0;i<j;i++){//cout<<"插入第"<<i+1<<"条弧"<<e n d l;z j hu b i a n();}}/***算法思想:依次递增序列求出最小路劲,首先将顶点加入到 S 当中(本程序默认为 0 号顶点),然后用d i s t数组保存到每一种顶点的最小途径长度**d i s t起始为顶点到其它顶点的权值(到本身为 0,到无弧顶点为无穷大)**1:然后每次取 v0-vk(k 属于 V-S)最小的路劲长度,取完之后将 Vk 加入 S 当中。
实验四进程与线程一、实验目的(1)理解进程的独立空间;(2)理解线程的相关概念。
二、实验内容与要求1、查阅资料,掌握进程创建和构造的相关知识和线程创建和构造的相关知识,了解C语言程序编写的相关知识;2、理解进程的独立空间的实验内容及步骤(1)编写一个程序,在其 main()函数中定义一个变量 shared,对其进行循环加/减操作,并输出每次操作后的结果;(2)使用系统调用 fork()创建子进程,观察该变量的变化;(3)修改程序把 shared变量定义到 main()函数之外,重复第(2)步操作,观察该变量的变化。
3、理解线程的实验步骤(1)编写一个程序,在其 main()函数中创建一个(或多个)线程,观察该线程是如何与主线程并发运行的。
输出每次操作后的结果;(2)在 main()函数外定义一个变量shared(全局变量),在main()中创建一个线程,在 main()中和新线程shared进行循环加/减操作,观察该变量的变化;(3)修改程序把shared变量定义到 main()函数之内,重复第(2)步操作,观察该变量的变化。
4、对整个实验过程进行分析总结,给出详细步骤;(1) 观察上述进程执行结果,并分析原因;(2) 提交源程序清单,并附加流程图与注释。
三、实验过程1、进程的与线程的创建和构造(1).进程的创建和构造进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。
但是进程是一个动态的实体,它是程序的一次执行过程。
进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。
新的进程通过克隆旧的程序(当前进程)而建立。
fork()和clone()(对于线程)系统调用可用来建立新的进程。
(2)线程的创建和构造线程也称做轻量级进程。
就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。
学院程序设计大作业目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (4)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (5)2.3函数实现 (5)2.4开发日志 (5)3 程序调试及运行 (6)3.1程序运行结果 (6)3.2程序使用说明 (8)3.3程序开发总结 (8)4 附件(源程序) (9)程 序 设 计 大 作 业1 摘要1.1 设计题目1、程序设计——《歌星大奖赛》;2、素数幻方;1.2 设计内容 1.2.1歌星大奖赛——1、 完成原有任务:在歌星大奖赛中,有十个评委为参赛选手打分,分数为1—100分。
选手最后得分为:去掉一个最高分和去掉一个最低分后其余八个数的平均分。
请编写一个程序实现。
2、在此基础上追加任务:同时对评委评分进行裁判,即在十个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分偏离最大)的评委。
3、 思考流程:在完成任务的目标下,限定得分域(score>=0||score<=100);输出评委号使分数明晰化;通过比较个评委所打分数与最终得分的偏离情况来对评委进行简单考核。
1.2.2素数幻方——求四阶的素数幻方。
即在一个4X4 的矩阵中,每一个格填 入一个数字,使每一行、每一列和两条对角线上的4 个数字所组成的四位数,均为可逆素数。
在实际编程中,采用了很多程序设计技巧,假如设置若干辅助数组,其目的就是要最大限度的提高程序的执行效率,缩短运行时间。
下面的程序运行效率是比较高的1.3 开发工具开发工具:Visual C++ 6.0 开发环境:Win32主要考虑合理性、公正性、便捷性程序设计大作业1.4 应用平台Windows 2000/XP/V ista 32位2 详细设计2.1 程序结构2.2.1歌星大奖赛——●首先,将一组评委打分记录到所定义数组内。
由题目中去掉最大值最小值的要求先假设当前的最大值max 为C语言整型数的最小值-32768 ;假设当前的最小值min为C 语言整型数的最大值32767。
软件技术实验报告实验报告标题:基于软件技术的应用开发实践实验目的:通过实践项目开发,掌握软件技术的应用,加深对软件开发流程的理解,培养解决问题的能力和团队协作能力。
实验内容:本实验项目选取一个具有实用价值的应用场景,通过软件技术的实践开发,完成相应的应用开发。
实验步骤:1. 确定应用场景:在实验前阶段,团队成员共同讨论,确定一个具有实用价值的应用场景。
例如,校园生活管理系统、在线购物平台等。
2. 确定需求:根据应用场景,团队成员共同确定应用的功能需求和技术需求。
3. 组建团队:根据实验需求,组建一个开发团队,包括项目经理、前端开发工程师、后端开发工程师、测试工程师等。
4. 制定开发计划:由项目经理负责制定开发计划,包括项目排期、资源分配等。
确保项目按照计划进行。
5. 进行开发:根据开发计划,团队成员按照分工进行开发工作。
前端开发工程师负责前端页面的设计和实现,后端开发工程师负责后端逻辑的开发,测试工程师负责对系统进行测试。
6. 进行集成和测试:当各个模块都完成开发后,进行系统集成和测试,确保不同模块能够正常工作。
7. 进行修复和优化:在测试过程中,发现问题后及时进行修复,并对系统进行优化和性能调优,确保系统的稳定性和可靠性。
8. 完成部署和验收:当系统开发完毕后,进行部署,并进行验收测试。
确保系统能够正常运行,并满足用户需求。
9. 撰写实验报告:在实验结束后,撰写实验报告,对整个开发过程进行总结和反思,包括项目选题、需求分析、开发过程、遇到的问题和解决方案等。
实验结果:通过本实验的开发实践,团队成功完成了选定的应用开发,系统能够满足用户需求,运行稳定。
在开发过程中,团队成员之间相互协作,解决了很多问题,并不断改进和优化系统。
实验结论:通过本次实验,我们深入理解了软件技术的实践应用,加深了对软件开发流程的理解和掌握,培养了解决问题和团队协作的能力。
实验结果表明,通过良好的团队协作和规范的开发流程,可以提高软件开发的效率和质量,开发出更优秀的应用。
学院××××学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (4)2.3函数实现 (5)2.4开发日志 (7)3 程序调试及运行 (7)3.1程序运行结果 (7)3.2程序使用说明 (12)3.3程序开发总结 (12)4 附件(源程序) (12)1 摘要1.1 设计题目算法型大作业题目:编写七种排序算法的演示程序。
1.2 设计内容编写快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序函数,通过主函数调用以实现七种排序算法的演示。
1.3 开发工具Visual C++ 6.01.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构程序的整体结构与流程见下图所示。
程序运行时在主菜单中输入序号选择排序方法或选择结束程序,当进行某种排序方法后,在主函数中输入待排数据个数和待排数据,通过调用对应的排序函数实现排序并输出。
该排序结束后再次进入主函数,通过循环重复上述操作。
其中,主函数中将数组地址和待排序数据个数传递给排序函数,在排序函数中实现排序功能。
2.2 主要功能函数的功能为对快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序算法的演示。
主函数:程序运行时,可使运行者根据提醒输入相关操作,从而进入不同的排序方法或者退出。
快速排序函数:根据快速排序的算法,最后输出插入排序函数:根据插入排序的算法,最后输出选择排序函数:根据选择排序的算法,最后输出冒泡排序函数:根据冒泡排序的算法,最后输出堆排序函数:根据堆排序的算法,最后输出归并排序函数:根据归并排序的算法,最后输出基数排序函数:根据基数排序的算法,最后输出2.3 函数实现主函数:在主函数中对菜单输出,通过switch语句中的case分支选择所需要的排序方法;通过while循环使演示程序在运行时能够持续进行快速排序:快速排序(kuaisu)又被称做分区交换排序,这是一种平均性能非常好的排序方法。