软件基础设计报告
flexsim软件设计报告

农场配送中心仿真建模模型简介:当现在农产品生产逐渐走向集成化后,农产品在生产、包装、配送日益显得举足轻重,特别是当量产实现后,如果有个有效的物流配送流程,不但可以节约时间和金钱,人力和财力,而且从之带来的是更多生产资料的节省和效益的提高,因此,农产品的配送做好是非常重要的。
用flexsim模拟农产品配送是个简单有效而且可以实时比较修改从而达到最优化的最佳途径,模型的建立应在符合实际情况的基础上尽量的简化,仿真模型的构造应该是紧紧围绕仿真目标展开,不同的仿真目标对仿真内容要求不一样。
只要能达到目标,应尽可能地简化模型。
一方面可以减少工作量,另一方面减少不必要的干扰引起的误。
流程图:到货验收包装及流通加工是否暂存分拣出库上架是否发生器输送机1(带检验)输送机2(设置在30个都暂存)输送机3和堆垛机(检验过的一批通过堆垛机上货架)输送机4(将检验过的不暂存的物品传输)输送机5(运送货物)红货物建模分析:发生器带来三种货物,先放入暂存区,经过运输机1的时候检验,顺便分类输出,以60个暂存为量,输出前60个到运输机2,并且通过堆垛机将它们排列至货架,以一列从下至上未满再填第二列。
剩下的货物通过运输机3传向下一个流程,经过依次几个传输机到传输机5分类,传输机5将红色货物留下并又操作员放入红色暂存区,然后剩下两种颜色继续流向下个流程。
通过传输机6、7绿色通过操作员也放入绿色暂存区,蓝色通过操作员放入蓝色暂存区。
蓝货物绿货物模型中实体以及功能:货物(从发生器出来):共有三种类型的货物,每种货物用不同颜色的小方块模拟。
入口(发生器):设立了一个入口,表示到货,到货时间服从正态分布。
输送机(Conveyor):本布局图中共包含8 个不同类型和长度的输送机,分别对其设置相关的尺寸、类型参数。
例如,对入口处的第一段输送机设置相关参数,使得货物在经过输送机时能改变颜色,代表货物经过流程加工环节。
立体货架(Rack):采用1 个立体货架,每个货架共10 列10 层。
《基础程序设计综合实践》实践报告范文

实践报告:基础程序设计综合实践一、引言本报告是针对《基础程序设计综合实践》课程的实践内容进行总结和分析。
通过该实践,我对基础程序设计的知识有了更深入的理解,并且掌握了实际应用的能力。
二、实践目标本次实践的主要目标是:1. 学习并掌握基础程序设计语言(如C、Java等)的基本语法和特性;2. 熟悉常见的程序设计模式和算法;3. 运用所学知识完成一系列实际案例的编程任务。
三、实践过程在实践过程中,我按照以下步骤进行了学习和实践:1. 学习基础程序设计语言的语法和特性:我通过阅读教材和参考资料,系统地学习了所选的程序设计语言的基本语法和常用特性。
这包括变量定义、控制流程、函数调用等内容。
2. 学习程序设计模式和算法:为了提高程序的可维护性和扩展性,我学习了一些常见的程序设计模式和算法。
例如,单例模式、观察者模式、递归算法等。
这些模式和算法对于解决实际问题非常有帮助。
3. 完成编程任务:根据教师布置的编程任务,我运用所学知识完成了一系列实际案例的编程任务。
这些任务涵盖了不同难度和领域的问题,包括数据结构、图像处理、网络编程等。
在完成任务的过程中,我不断调试和优化代码,提高程序的效率和可读性。
四、实践收获通过《基础程序设计综合实践》的实践,我获得了以下收获:1. 熟练掌握了基础程序设计语言的语法和特性,能够独立编写简单到中等复杂程度的程序;2. 掌握了常见的程序设计模式和算法,能够灵活运用它们解决实际问题;3. 增强了问题分析和解决的能力,学会了如何将实际问题转化为计算机程序;4. 加深了团队协作和沟通能力,在与同学一起完成编程任务时,学会了合理分工和交流合作。
五、总结与展望通过《基础程序设计综合实践》的实践,我不仅巩固了基础程序设计的知识,还培养了实际应用的能力。
在未来,我将继续深入学习程序设计的高级知识和技术,不断提升自己的编程水平。
同时,我也会积极参与开源项目和编程竞赛,锻炼自己在实际项目中的编程能力。
软件工程设计报告(例子)

软件工程设计报告(例子)1. 引言软件工程是一门关于软件开发过程和技术的学科,其目的是通过系统化的方法来设计和构建高质量的软件系统。
本报告旨在介绍一个软件工程设计的例子,以便读者能够了解和掌握软件工程设计的基本原则和方法。
2. 背景在今天的信息时代,软件已经成为几乎所有行业和领域的核心基础设施。
由于软件开发的复杂性和困难度,许多软件项目仍然面临着失败的风险。
软件工程设计的重要性不可忽视。
3. 目标我们的目标是开发一个高质量、可靠和易于维护的软件系统。
为了实现这个目标,我们将采用一些软件工程设计的最佳实践,包括需求分析、系统设计、编码、测试和维护等方面的工作。
4. 方法在软件工程设计的过程中,我们将遵循以下步骤:1. 需求分析:分析用户需求和系统功能,确定软件系统的具体要求。
2. 系统设计:设计软件系统的整体结构和组件,确定各个模块之间的接口和关系。
3. 编码:根据设计文档,使用合适的编程语言和工具编写代码。
4. 测试:对代码进行测试,确保软件系统的功能和性能满足需求。
5. 部署和维护:将软件系统部署到生产环境中,并定期进行维护和更新。
5. 项目案例我们将以一个在线购物系统作为案例来说明软件工程设计的过程。
该系统具有以下功能:1. 用户注册和登录2. 商品浏览和搜索3. 购物车管理4. 订单管理5. 支付和配送通过对该系统的需求分析和系统设计,我们将逐步完成软件工程设计的过程,并最终开发出一个完整的、功能强大的在线购物系统。
6.软件工程设计是一个复杂而且关键的过程,它对于软件开发的成功至关重要。
通过本报告的介绍,希望读者能够清楚地了解软件工程设计的基本原则和方法,并在实际的软件开发中能够灵活运用。
只有通过不断学习和实践,我们才能不断提高自己的软件工程设计能力,为社会和用户提供更好的软件产品和服务。
程序设计基础的实训报告

一、实训目的本次实训旨在通过实际编写程序,巩固和加深对程序设计基础知识的理解,提高编程能力和解决问题的能力。
通过实训,使学生能够掌握程序设计的基本流程,熟悉常用编程语言和开发工具,具备独立编写程序、调试和优化程序的能力。
二、实训内容1. 编程语言:C语言2. 开发工具:Visual Studio3. 实训任务:(1)编写一个计算两个整数相加的程序;(2)编写一个计算两个整数相减的程序;(3)编写一个计算两个整数相乘的程序;(4)编写一个计算两个整数相除的程序,要求考虑除数为0的情况;(5)编写一个计算阶乘的程序;(6)编写一个冒泡排序的程序,对一组整数进行排序;(7)编写一个插入排序的程序,对一组整数进行排序;(8)编写一个选择排序的程序,对一组整数进行排序。
三、实训过程1. 编写计算两个整数相加的程序```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两数之和为:%d\n", sum); return 0;}```2. 编写计算两个整数相减的程序```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:");scanf("%d %d", &a, &b);sub = a - b;printf("两数之差为:%d\n", sub); return 0;}```3. 编写计算两个整数相乘的程序```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:");scanf("%d %d", &a, &b);mul = a b;printf("两数之积为:%d\n", mul);return 0;}```4. 编写计算两个整数相除的程序,考虑除数为0的情况```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0\n");} else {div = a / b;printf("两数之商为:%d\n", div);}return 0;}```5. 编写计算阶乘的程序```c#include <stdio.h>int factorial(int n) {if (n == 0) {return 1;} else {return n factorial(n - 1);}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的阶乘为:%d\n", n, factorial(n)); return 0;}```6. 编写冒泡排序的程序```c#include <stdio.h>void bubbleSort(int arr[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]); int i;bubbleSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```7. 编写插入排序的程序```c#include <stdio.h>void insertionSort(int arr[], int n) {int i, j, key;for (i = 1; i < n; i++) {key = arr[i];j = i - 1;while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]); int i;insertionSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```8. 编写选择排序的程序```c#include <stdio.h>void selectionSort(int arr[], int n) { int i, j, min_idx, temp;for (i = 0; i < n - 1; i++) {min_idx = i;for (j = i + 1; j < n; j++) {if (arr[j] < arr[min_idx]) { min_idx = j;}}temp = arr[min_idx];arr[min_idx] = arr[i];arr[i] = temp;}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]);int i;selectionSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```四、实训心得通过本次实训,我深刻体会到了程序设计的重要性。
南京邮电大学软件设计实验报告

软件设计报告( 2014 / 2015 学年第二学期)课程名称软件设计指导老师赵江实习时间第十八周学生姓名学号____学院______专业软件设计课程编号:B0465011C适用专业:班级:一、所涉及的课程及知识点涉及的课程:第6学期之前的专业基础课程。
知识点:专业基础课程中所学的知识点。
二、目的与任务目的:通过软件设计,培养学生的实践能力和创新精神,加强学生对专业基础课程的理解和掌握,加强学生高级语言编程能力、应用软件以及仿真能力。
任务:选择以下任一模块进行设计:Matlab软件仿真、C语言及应用。
软件设计的内容题目1:如果给出两个矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=136782078451220124A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=087654321B ,执行下面的矩阵运算命令。
(1)B A *5+和I B A +-分别是多少(其中I 为单位矩阵) (2)B A *⋅和B A *将分别给出什么结果,它们是否相同为什么 逻辑功能程序:function [ ] = EXP1()A=[4,12,20;12,45,78;20,78,136]; B=[1,2,3;4,5,6;7,8,0]; I=eye(3); disp('A+5*B='); disp(A+5*B); disp('A-B+I=') disp(A-B+I); disp('A.*B='); disp(A.*B) disp('A*B='); disp(A*B); End 实验过程与结果打开matlab ,在命令窗口“Command Window ”中键入edit,启动程序编辑器。
输入完整程序后利用save as 储存为M 文件,文件名为EXP1。
返回主界面,在命令窗口“Command Window”中输入函数EXP1(),按下回车,得到程序运行结果如下:>> EXP1( )A+5*B=9 22 3532 70 10855 118 136A-B+I=4 10 178 41 7213 70 137A.*B=4 24 6048 225 468140 624 0A*B=192 228 84738 873 3061284 1518 528实验结果分析(1)利用MATLAB提供的disp函数既可以输出表达式、数值,也可以输出字符串,其调用方式为:disp(表达式或数值)、disp(‘待显示字符串’);(2)在MATLAB的矩阵运算中,+、-运算符通用,表示矩阵相加、减;*与.*不同在于*表示矩阵乘法,而.*表示矩阵对应位置元素相乘,所以*要求两个矩阵的行、列数互为转置,而.*则要求两个矩阵行、列数要相同;(3)使用eye可以获得单位矩阵函数(矩阵对角线处元素为1,其余元素为0),矩阵的阶数由括号内的值决定,格式为eye(n),n为矩阵阶数。
程序设计基础实验报告

实验一 用C 语言编写简单程序一、实验目的1. 熟悉VC6.0的编程环境,掌握运行C 程序的基本步骤。
2. 了解C 程序的基本框架,模仿例题编写简单的C 语言程序。
3. 正确书写算术表达式、赋值表达式和关系表达式。
4. 掌握基本输入输出函数的使用,正确调用C 语言提供的数学库函数。
5. 掌握简单的单步调试方法。
二、实验环境Windows XP ;Visual C++ 6.0。
三、实验内容1.在屏幕上显示一个句子“What is a computer?”。
2.求华氏温度150F 对应的摄氏温度。
计算公式如下:其中,c 表示摄氏温度;f 表示华氏温度。
3.输入x ,计算下列分段函数的值(保留2位小数),请调用sqrt 函数求平方根,调用pow 函数求幂。
4. 输入一个正整数m (0100)m ≤≤,求100i m i =∑。
四、实验要求1. 将上机验证正确的源代码写到实验报告上。
2.根据自己的真实感受,认真填写实验分析和实验心得以及问题和建议。
3.按时提交实验报告。
553299c f =⨯-⨯21(1)2 x<02()0x x f x ⎧+++⎪=≥一、实验目的1.熟练掌握关系表达式的使用。
2.熟练掌握使用else-if 语句实现多分支结构程序设计。
二、实验环境Windows XP ;Visual C++ 6.0。
三、实验内容1.输入x ,计算并输出下列分段函数sign(x)的值。
2.输入月薪salary ,输出应交的个人所得税tax (保留2位小数)。
按照2011年开始实行的新的个人所得税法,计算公式为:tax = rate*(salary-3500)-deduction 。
当salary≤3500时,rate=0、deduction=0当3500<salary≤5000时,rate=3%、deduction=0当5000<salary≤8000时,rate=10%、deduction=105当8000<salary≤12500时,rate=20%、deduction=555当12500<salary≤38500时,rate=25%、deduction=1005当38500<salary≤58500时,rate=30%、deduction=2775当83500<salary 时,rate=45%、deduction=135053.输入一个正整数n ,再输入n 个学生的百分制成绩,统计各等级成绩的个数。
程序设计基础实验报告

一、实验目的1. 掌握程序设计的基本概念和编程语言的基本语法。
2. 熟悉编程环境的使用,学会编写、调试和运行简单的程序。
3. 培养逻辑思维能力和问题解决能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 简单计算器(1)功能描述编写一个简单的计算器程序,能够实现加、减、乘、除四种基本运算。
(2)实现步骤1)定义一个函数,用于获取用户输入的两个数和一个运算符。
2)根据运算符进行相应的运算,并返回运算结果。
3)在主函数中调用该函数,打印运算结果。
(3)代码实现```pythondef calculator(num1, num2, operator):if operator == '+':return num1 + num2elif operator == '-':return num1 - num2elif operator == '':return num1 num2elif operator == '/':return num1 / num2else:return "无效的运算符"def main():num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+、-、、/):")result = calculator(num1, num2, operator)print("结果是:", result)if __name__ == "__main__":main()```2. 循环结构(1)功能描述编写一个程序,实现计算1到100之间所有奇数的和。
移动开发基础美团界面设计报告

移动开发基础美团界面设计报告报告题目:移动开发基础美团界面设计报告报告摘要:本报告旨在介绍移动开发基础中的美团界面设计。
美团是一家知名的在线消费平台,其界面设计对于提升用户体验和吸引用户具有重要作用。
本报告将从界面布局、色彩搭配、图标设计和交互设计等方面进行阐述,以帮助开发者更好地设计出符合美团风格的界面。
一、界面布局美团界面的布局一般采用三栏式布局,即将页面分为左侧导航栏、中间内容区和右侧辅助信息栏。
导航栏通常包含主要功能模块,如首页、分类、订单、我的等,内容区展示具体的信息内容,辅助信息栏则用于展示相关推荐或广告等。
二、色彩搭配美团的色彩搭配以蓝色为主色调,蓝色代表着可靠、安全和舒适。
在搭配上,通常会选择搭配白色、灰色或淡黄色等中性色,以保持整体的简洁和清晰。
同时,美团也会根据不同功能模块或场景选择适合的配色方案,如红色表示热门、黄色表示优惠等。
三、图标设计美团的图标设计以简洁、直观为主要原则。
图标通常采用扁平化设计风格,形状简单明了,颜色鲜艳醒目。
同时,美团也会根据功能的不同设计不同的图标,以便用户能够一目了然地识别出各个功能模块。
四、交互设计美团的交互设计注重用户的操作便捷性和体验感。
例如,在搜索功能中,美团会提供智能搜索提示和历史搜索记录,以方便用户快速找到所需内容。
在下单流程中,美团会采用简化的操作步骤和明确的提示,以提高用户的操作效率和满意度。
结论:通过对美团界面设计的介绍,我们可以看到其注重简洁、直观、便捷和舒适的设计原则。
在移动开发中,我们可以借鉴美团的设计理念,结合自身项目的特点,设计出符合用户需求和美观的界面。
同时,也需要不断学习和探索,跟随移动技术的发展,不断提升自己的设计能力和创新意识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件基础设计报告学院:电气信息工程学院班级:电科1102班姓名:许波益学号:3110504052实验一在交互方式下完成下列任务:1、建立单向链表,表长任意;2、可交互输出单链表中的内容;3、编写算法计算出自己所建单链表的长度并输出;4、删除自己所建单链表中的第K个结点,并将剩余结点输出;5、将单链表倒排,输出结果。
源代码:#include<stdio.h>#include<stdlib.h>struct LinkList{int data;struct LinkList *next;};struct LinkList *CreatLList(){struct LinkList * H=NULL,*p,*q;int x;q=NULL;printf("输入一个数(-1结束):");scanf("%d",&x);while(x!=-1) {p=(struct LinkList *)malloc(sizeof(struct LinkList));p->data=x;if(H==NULL) H=p;else q->next=p;q=p;printf("继续输入:");scanf("%d",&x);}if(q!=NULL) q->next=NULL;return(H);}void Outputlist(struct LinkList *Head){ struct LinkList *H;H=Head;printf("链表是:\n");while (H!=NULL){ printf("%d ",H->data);H=H->next;}printf("\n");}LengthLList(struct LinkList *L){int Length=0;struct LinkList *p=L;while(p!=NULL){p=p->next;Length++;}return Length;}void DeleteLList(struct LinkList *L){int a;struct LinkList *p,*s;printf("输入要删除的数:");scanf("%d",&a);if(L->next==NULL) return ;p=L;s=p;while((p->next!=NULL)&&(p->data!=a)){s=p;p=p->next;}if(p==NULL) { printf("链表中无此数\n");return ; } s->next=p->next;free(p);printf("已删除\n");return ;}struct LinkList *NIXU(struct LinkList *h){struct LinkList *p,*r,*s;r=h;p=r->next;s=p->next;if(h==NULL) printf("空链表\n");while(s!=NULL&&h!=NULL){p->next=r;r=p;p=s;s=s->next;}h->next=NULL;p->next=r;return p;}void main(){int a;struct LinkList *head;while(1){ printf("功能:\n");printf("1:建立链表\n");printf("2:输出链表\n");printf("3:计算链表长度\n");printf("4:删除链表结点\n");printf("5:链表逆序\n");printf("6:退出\n");printf("输入功能:");scanf("%d",&a);if(a<=6&&a>=1){switch(a){ case 1: head=CreatLList();break;case 2:Outputlist(head);break;case 3: printf("链表长度是: %d\n",LengthLList(head));break;case 4:DeleteLList(head);break;case 5:head=NIXU(head);break;case 6:exit(0); break;default:break;}}else {printf("错误的功能号码\n");}}}实验二在交互方式下完成下列任务:1、动态交互建立二叉树,结点个数任意;2、分别用DLR、LDR、LRD三种方式对二叉树进行便利并输出结果;3、计算二叉树中的结点个数并输出;4、计算二叉树的深度并输出;源代码:# include "stdio.h"# include "malloc.h"struct BTNode{int data;struct BTNode *Lchild,*Rchild;};struct BTNode *build(struct BTNode *p);struct BTNode *creatrent(struct BTNode *p);void DLR(struct BTNode *T);struct BTNode *creatrent(struct BTNode *p){int x;printf("输入根:rent=");scanf("%d",&x);if(x==1000) {p=NULL;}else{p->data=x;p->Lchild=(struct BTNode *)malloc(sizeof(struct BTNode));p->Rchild=(struct BTNode *)malloc(sizeof(struct BTNode));if(p==NULL) return p;p->Lchild=build(p->Lchild);p->Rchild=build(p->Rchild);return p;}}struct BTNode *build(struct BTNode *p){int x;printf("输入数据(输入值为时999,表示该结点为空):value=");scanf("%d",&x);if(x==999) {p=NULL;}else{p->data=x;p->Lchild=(struct BTNode *)malloc(sizeof(struct BTNode));p->Rchild=(struct BTNode *)malloc(sizeof(struct BTNode)); }if(p==NULL) return p;p->Lchild=build(p->Lchild);p->Rchild=build(p->Rchild);return p;}void DLR(struct BTNode *T){if(T==NULL) return;printf("%d ",T->data);DLR(T->Lchild);DLR(T->Rchild);}void LDR(struct BTNode *T){if(T==NULL) return;LDR(T->Lchild);printf("%d ",T->data);LDR(T->Rchild);}void LRD(struct BTNode *T){if(T==NULL) return;LRD(T->Lchild);LRD(T->Rchild);printf("%d ",T->data);}void main(){struct BTNode *rent=NULL;int flag;while(1){printf("选择输入的操作:\n1:创建;\n2:先序;\n 3:中序;\n4:后序\n");scanf("%d",&flag);switch(flag){case 1:rent=(struct BTNode *)malloc(sizeof(struct BTNode));rent=creatrent(rent);break;case 2:DLR(rent);printf("\n");break;case 3:LDR(rent);printf("\n");break;case 4:LRD(rent);printf("\n");break;}}}实验三在交互方式下完成下列任务:1、根据教材上算法,完成图的深度和广度优先遍历,要求任意给定起始点,输出结果;2、根据教材上算法,完成图的单源最短路径的算法,要求任意给定源点,输出结果;源代码:#include <stdio.h>#include <malloc.h>#define K 1000#define VNum 6struct GLink{ int No;int Right;struct GLink *Relat;};int G[VNum][VNum] = // 初始化 //{0, 50, 10, K, 45, K,K, 0, 15, 50, 10, K,20, K, 0, 15, K, K,K, 20, K, 0, 35, K,K, K, K, 30, 0, K,K, K, K, 3, K, 0};struct GLink *GL[VNum];int Visited[VNum];void CreateGLink(int G[VNum][VNum]) // 建立邻接表 //{ int i,j;struct GLink *p,*q;for (i=0; i<VNum; i++){ GL[i] = q = NULL;for (j=0; j<VNum; j++){ if (i != j)if ((G[i][j] > 0) &&(G[i][j] < K))// 该两点存在有向路径 //{ p = (structGLink *)malloc(sizeof(struct GLink));p->No = j;// 将该点加入邻接表 //p->Right =G[i][j];if (GL[i] ==NULL)GL[i]= p;elseq->Relat = p;q = p;}}}}void DFS(int A[VNum][VNum], int V) // 用于进行深度优先遍历的子函数,V是起点//{ int i;printf(" [%d] ", V);Visited[V] = 1; // 将其标记为已访问//for (i = 0; i < VNum; i++)if ((A[V][i] > 0) && (A[V][i] < K) && (Visited[i] != 1))// 该结点未被访问过 //DFS(A,i);// 访问该点 //for (i = 0; i < VNum; i++)if (Visited[i] != 1) DFS(A,i); // 仍有未必访问过的点,访问该点 //}void BFS(int A[VNum][VNum], int V) // 广度优先遍历的子函数 // { int CQ[VNum];int a=0,b,c;int i,k=1;for (i=0;i<VNum;i++)CQ[i]=K;Visited[V] = 1; // 标志为访问过 //CQ[0]=V;printf("[%d] ",V); // 将该结点放入队列 //while(k<6&&a<k) // 仍有结点未被访问并且队列中仍有结点的后继结点未被访问//{ b=CQ[a];for(c=0;c<VNum;c++) // 依次将队列中以结点为首的邻接表中的结点插入队列//if(Visited[c]==0&&A[b][c]<K&&A[b][c]!=0){ printf("[%d] ", c);CQ[++k]=c; // 未被访问过,将其插入到队列中//Visited[c]=1; // 标志为访问过 //}a++;}for(i=0;i<VNum;i++)if(Visited[i]==0)BFS(A,i);}void Short(int A[VNum][VNum],int V) // 用于计算最短路径的子函数,V是起点//{ int Dist[VNum], Path[VNum];int S = 0;int i, k;int wm, u;for (i=0; i<VNum; i++){ Dist[i] = A[V][i];// 默认这两点之间即为最短路径 //if (Dist[i] < K) Path[i] = V;// 存储该路径 //}S = S | (1 << V);for (k=0; k<VNum; k++){ wm = K;u = V;for (i=0; i<VNum; i++)if (((S & (1 << i))==0) && (Dist[i] < wm))// 该两点间存在路径 //{ u = i;wm = Dist[i];}S = S | (1 << u);for (i=0; i<VNum; i++)if (((S & (1 << i))==0) && ((Dist[u] + A[u][i]) <Dist[i])){ Dist[i] = Dist[u] + A[u][i];// 找到新的最短路径 //Path[i] = u;// 更新路径长度 //}}for (i=0; i<VNum; i++) // 输出该源结点到其他各点的最短路径//if ((S & (1 << i)) != 0){ k = i;while ( k != V){ printf(" %d <- ", k);k = Path[k];}printf(" %d ", V);printf(" = %d \n", Dist[i]);}else printf(" No Path : %d",i);}main(){ int i,j,a,b;//a为功能号,i用作循环,j,b为函数参数CreateGLink(G);printf("1.深度查找\n"); //功能选择 //printf("2.广度查找\n");printf("3.最短路径\n");printf("4.退出exit\n");while(1) { printf("\n please input a num from 1 to 4 : ");scanf("%d",&a);if(a==1) //深度查找{ for (i=0; i<VNum; i++)Visited[i] = 0;printf("please input the first node: ");scanf("%d",&j);printf("\n The result of DFS is:");DFS(G,j);printf("\n");}if(a==2) //广度查找{ for (i=0; i<VNum; i++)Visited[i] = 0;printf("please input the first node: ");scanf("%d",&j);printf("\n The result of BFS is:");BFS(G,j);printf("\n");}if(a==3) //最短路径{ printf("please input the source node : ");scanf("%d",&b);printf("\n The result of shortest path is:\n"); Short(G,b);}if(a==4) break;}}实验四在交互方式下完成下类任务:1、任意给定无序系列,用快速排序法对其进行排序,并统计交换次数。