




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 学 号: 课 程 设 计题 目 最便宜航空线路求解学 院管理学院专 业信息管理与信息系统班 级姓 名指导教师2014年07月03日课程设计任务书学生姓名: 专业班级: 信管 指导教师: 工作单位: 管理学院 题 目:最便宜航空线路求解初始条件:【问题描述】飞机是远途旅行必不可少的工具,但是高昂的价格也令人颇费思量,因此人们往往宁愿用时间来换金钱而选择较慢的交通工具。不过,当航班线路变得丰富之后,人们也发现很多时候选择直达航班往往并非最省钱的路径,比如飞往美国选择从韩国转机就比直飞要便宜多了(虽然这样有坠机的危险)。这样一来,当采用曲线行进能达到省钱也省时间的目的时,坐飞机还是可以接受的。为了
2、能够更好地解决路径的选择问题,我们模拟一下通过合适的算法来选出最优航空线路。参考要求完成的主要任务: (包括课程设计工作量及其技术要求、说明书撰写等具体要求)本程序不考虑机场建设费和燃油附加费,只计算机票价格,将其作为路径上的权值处理,耗费矩阵存储结构自行选择。在真实的情形中,同一线路每天可能有许多航班,也可能每周只有一两趟航班,即便同一天的航班早晚价格也可能有所不同。为简便计,假定每条线路每天只有一趟航班,不考虑航空公司的差别。 时间安排:序号设计内容所用时间1问题分析和任务定义0.5天2数据类型和系统设计0.5天3编码实现和静态检查3天4上机准备和上机调试2天5总结和整理设计报告1天合 计
3、7天指导教师签名: 2014年 06月25日 系主任(或责任教师)签名: 2014年06月25日最便宜航空线路求解1. 需求分析1.1 基本要求(1)所有原始数据一律事先用文本文件保存,读入数据时从文件获取。(2)航班价格可以用随机函数生成,但建议从网上直接复制真实数据。(3)可输出所有城市名称以及每一城市所有可直飞到达的城市列表。(4)可输出任一指定直飞线路(若没有则显示无直飞航班)四个季度的全票和折扣价格。(5)输入月份、起始城市和目的城市名称,程序能显示出最经济 的中转路线选择方案。1.2 输入 (1)从文件read.txt中读取不同城市之间(共10个城市)不同航线(共24条航线)的最高
4、价格输入,四个季度有相同的最高价格。 (2)每条线路每季度的折扣率由随机函数产生,范围是0.201.00(小数点后取两位),四个季度有不同的折扣。 (3)运行程序时需根据要求从键盘输入相应指令,保证程序的正确运行。1.3输出(1)输出所有城市名以及每一城市所有可直飞到达的城市列表(按城市名拼音升序排列):始发地 可直飞目的地北京 长春 广州 杭州 昆明 上海 首尔 武汉 香港首尔 北京 上海 台北 香港(2)输出指定线路四个季度的折扣和全价:输入:北京-台北输出:无直飞航班输入:北京-广州输出:季度 全票价格 折扣 折后价格(不计小数,四舍五入) 1 1240 6.5 806 2 1192 7
5、.0 834 3 1475 4.6 679 4 1230 8.7 1070(3)输入月份、起始城市和目的城市名称,输出最佳方案:输入:5 北京-台北输出:最佳线路:北京-香港,1503,香港-台北,791,合计2294输入:7 广州-首尔输出:最佳线路:广州-上海,880,上海-首尔,773,合计1653输入:10 武汉-上海输出:最佳线路:武汉-上海,278,合计2781.4测试数据文本文件read.txt内容:(1) 读文本文件read.txt。若文件名输入正确且文件无错误,则显示主菜单。若文件名输入错误或文件有错误,则显示“打开输入文件出错”。(2) 根据主菜单提示选择需要执行的功能。若
6、输入功能序号在04之间,则执行相应的功能。若输入功能序号不在04之间,则显示“出错啦!请在0-4之间选择!”和主菜单,需重新选择。(3) 选择1,输出城市列表及相应代码。(4) 选择2,输出所有城市名以及每一城市所有可直飞到达的城市列表(按城市名拼音升序排列)。(5) 选择3,先显示城市列表及相应代码,方便后面的输入操作,根据提示“请输入起始城市和目的城市的代码,中间以空格隔开,范围(1- 10)”输入两个城市代码,若两城市间有直飞航班则显示指定线路四个季度的折扣和全价。若两城市间无直飞航班则显示“无直飞航班”。(6) 选择4,显示“请输入月份(请在1-12之间选择):”若月份输入正确,则先显
7、示城市列表及相应代码,方便后面的输入操作,根据提示“请输入起始城市和目的城市的代码,中间以空格隔开,范围(1- 10)”输入两个城市代码,若代码输入正确,则显示最佳方案。若月份输入错误,则显示“输入出错”。若城市代码输入错误,则显示“出错啦!”。(7) 选择0,则直接退出程序。(8) 在每一个功能执行完后,都会提示继续执行还是返回主菜单。12191.5无向带权费用图1584武汉箭头流程厦门北京261115751573743大连郑州广州1006长沙11301903612上海1461天津深圳23462. 概要设计2.1 抽象数据类型定义本程序运用了关于图这种数据结构,它的抽象数据类型定义如下:ty
8、pedef struct unDiGraph int numVerts; /结点 costAdj cost; /邻接矩阵unDiGraph,*UNG;基本操作:unDiGraph* CreateCostG()操作结果:构造带权(费用)图。PathMat *Floyed(unDiGraph *D) 操作结果:Floyed函数 求任意两点的最短路径。2.2 主程序流程及各程序模块之间的层次(调用)关系 Main函数 输出方式1 f_money1()pri() 查看城市 输出方式3 f_money3() 输出方式2 f_money2() 退出程序 pr(i,0) Floyed() Floyed()
9、pr(Bcity,0) pr(Bcity,0) prn_pass(Bcity,Ecity) prn_pass(Bcity,Ecity) pr(Ecity,0) pr(Ecity,0)3. 详细设计3.1 数据类型(1)主界面包括1.查看城市 2.输出所有城市名及所有可直飞到达的城市列表(按城市名拼音升序排列) 3.输入起始城市和目的城市名称,输出指定线路四个季度的折扣和全价 4. 输入月份、起始城市和目的城市名称,输出最佳方案 0.退出程序(2)程序的模块为#include <stdio.h> #include <stdlib.h>#include <time.h
10、> /需引用的头文件#define INF 65535 /定义一个最大数为无穷值,表示两城市之间无直飞航班#define MAX 23typedef int costAdjMAX+1MAX+1;/图邻接矩阵从1开始记数int PathMAX+1MAX+1;/图邻接矩阵从1开始记数typedef struct unDiGraphint numVerts; /结点costAdj cost; /邻接矩阵unDiGraph,*UNG; /图的定义costAdj B,L;void pr(int i)/选择城市void pri()/输出城市unDiGraph *CreateCostG()/构造带权(
11、费用)图 返回首地址G:void Floyed(unDiGraph *D,unDiGraph *M) /Floyed函数 求任意两点的最短路径:void prn_pass(int i,int j) /为了求从i到j的最短路径,只需要调用如下的过程void f_money1()/输出所有城市名及所有可直飞到达的城市列表(按城市名拼音升序排列)void f_money2()/输入起始城市和目的城市名称,输出指定线路四个季度的折扣和全价 void f_money4()/输入月份、起始城市和目的城市名称,输出最佳方案int LineNumStat(FILE *fp)/统计文本文件的行数void mai
12、n()/main函数3.2 伪码算法(1)pr() 选择城市begin0=>hIf j=0 then h=iElse if j=1 input addi.aSwitch 条件选择 print 城市名End(2)pri() 输出城市beginPrint 城市代码1=>iWhile i<=c_number Print i调用pr()函数End(3) unDiGraph *CreateCostF(int o) 飞机花费的存贮功能Begin0=>a,0=>b,1=>hWuhan10,Beijing10,Xiamen10,Guangzhou10,Dalian10,Sh
13、anghai10,Changsha10,Shenzhen10,Zhengzhou10,Tianjin10G=(unDiGraph *)malloc(sizeof(unDiGraph)If !G then NULL1=>iWhile i<c_number+1 While j <c_number+1 INF=> G->costij 初始化使G->costij为无穷。c_number =>G->numVerts while(!feof(fp)fscanf fp,"%f %f %f %f %f %f %f %f %f %f",&
14、;Wuhani,&Beijingi,&Xiameni,&Guangzhoui,&Daliani, &Shanghaii,&Changshai,&Shenzheni,&Zhengzhoui,&Tianjinifor(0=>j;j<c_number+1;j+) Wuhanj-1=>G->costj1 Beijingj-1=>G->costj2 Xiamenj-1=>G->costj3 Guangzhouj-1=> G->costj4 Dalianj-1=>G-&
15、gt;costj5 Shanghaij-1=>G->costj6 Changshaj-1=>G->costj7 Shenzhenj-1=>G->costj8 Zhengzhouj-1=>G->costj9 Tianjinj-1=>G->costj10 return(G);End(4) Floyed(unDiGraph *D,unDiGraph *M) 函数 Floyed函数求任意两点的最短路径Beginc_number=>n1=>iwhile(i<=n)1=>jwhile(j<=n) D->cost
16、ij=>Aij 初始化矩阵A。M->costij=>Cij-1=>Pathij 初始化矩阵p, 置-1. for(0=>k;k<=n;k+) 为逐步加入的中间结点 for(0=>i;i<=n;i+) i为A中行号for(0=>j;j<=n;j+)if(Aik+Akj<Aij)then Aik+Akj =>Aij K=> Pathij 若i经过k到j比i到j小,则令 Aij=Aik+AkjAij=>Bij elseAij=>Bij print最短路径为:End(5)prn_pass(int i,int j)
17、 输出最短路径所经过的点Begin If ( Pathij!=-1)递归调用prn_pass(i,Pathij)调用pr(Pathij,0)End(6) f_money1( ) 输出方式1函数 Begin l1=>hdo Print 始发地 可直飞目的地 Print 北京 广州 武汉 Print 长沙 大连 天津 Print 大连 长沙 厦门 郑州 Print 广州 北京 上海 郑州 Print 上海 广州 深圳 天津 Print 深圳 上海 天津 Print 天津 长沙 上海 深圳 Print 武汉 北京 厦门 Print 厦门 大连 武汉 Print 郑州 长沙 广州 Print 1
18、.继续输出所有城市名以及每一城市所有可直飞到达的城市列表 2.返回主菜单 清选择. input l 输入1或2选择是否继续。 1=>hEnd(7) f_money2( ) 输出方式2函数Begin1=>hBcity,Ecity/起始成市号码和终点城市号码 l money4 i,j s,wdiscount4while(h=1) print请输入起始城市和目的城市的代码,中间以空格隔开,范围(1- %d,c_numberinput Bcityinput Ecity 输入起始城市和终点城市的代码。 if (!(0<Bcity&&Bcity<c_number+1
19、)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity) then print出错啦! exit(1) Floyed(CreateTimeF(0),CreateCostF(0) 调用Floyed函数。 pr(Bcity,0) 显示起始城市。 prn_pass(Bcity,Ecity) 调用prn_pass函数,显示最短路径经过的城市。 pr(Ecity,0) 显示终点城市。 if (BBcityEcity>5000|LBcityEcity>10000)then print无直飞航班else
20、Print"季度 全票价格 折扣 折后价格(不计小数,四舍五入)n" srand(unsigned)time(NULL)随机种子 for (0=>j;j<4;j+) for(0=>i; i<100; i+) if(!(i%10) rand()%80 + 20=> w w/100=>s break; s=>discountj for(0=>i;i<4;i+) (floatdiscounti*BBcityEcity=> moneyiPrint" %d %d %.2lf %.lfn",i+1,BBci
21、tyEcity,discounti,moneyi); Print“打折前的费用是%d元n",LBcityEcity Print 1.继续输入起始城市和目的城市名称,输出指定线路四个季度的折扣和全价n 2.返回主菜单n 清选择. input l 输入1或2选择是否继续。 1=>h End(8) f_money3( ) 输出方式3函数Begin1=>hBcity,Ecity起始成市号码和终点城市号码 L money i,j s,wdiscount4 M month quarterdo Print"请输入月份(请在1-12之间选择):" Input mont
22、h if(month>=12|month<=1) Print"输入出错!n" exit(1); pri()输出城市列表及相应代码。 print请输入起始城市和目的城市的代码,中间以空格隔开,范围(1- %d,c_numberinput Bcityinput Ecity 输入起始城市和终点城市的代码。if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity) Print n出错啦! n
23、"输入出错 exit(1) 关闭所有文件,终止正在执行的程序Floyed(CreateCostF(0)调用Floyed函数。if (BBcityEcity>5000) print无航班n"else srand(unsigned)time(NULL随机种子 for (0=>j;j<4;j+) for(0=>i; i<100; i+) if(!(i%10) rand()%80 + 20=> w w/100=>s break; s=>discountj if(1<=month<=3) discount0=>m 1=
24、>quarter Print"你选择的是%d月,位于第%d季度,折扣是%.2lfn",month,quarter,m else if(4<=month<=6) discount1=>m 2=>quarter Print"你选择的是%d月,位于第%d季度,折扣是%.2lfn",month,quarter,m else if(7<=month<=9) discount2=>m 3=>quarter Print"你选择的是%d月,位于第%d季度,折扣是%.2lfn",month,quar
25、ter,m else if (10<=month<=12) discount3=>m 4=>quarter Print"你选择的是%d月,位于第%d季度,折扣是%.2lfn",month,quarter,m (float)m*BBcityEcity=>money Print" 最佳线路:" pr(Bcity,0) 显示起始城市。 prn_pass(Bcity,Ecity) 调用prn_pass函数,显示最短路径经过的城市。 pr(Ecity,0) 显示终点城市。 Print" 合计:" Print&quo
26、t; %.lfn",money Print 1.继续输入月份、起始城市和目的城市名称,输出最佳方案n 2.返回主菜单n 清选择. input l 输入1或2选择是否继续。 1=>h End4. 调试分析4.1 问题与解决办法(1)声明变量语句的位置我在运行的过程中一直出现这个错误(见下图),系统报错说未定义变量,但我确实定义过了,后来通过在网上百度资料才知道要把声明变量的语句得放到函数的最前面,而printf要放在 所有变量声明语句后面。修改程序之后,那些错误果然没有了。(2) 文本文件的读取 程序在读取文本文件时总说打开文件出错,原因是read.txt中含有非法字符
27、,删去即可。而且在程序末尾要记得调用函数fclose(),关闭文件。(3) 把从文本文件读取的数据保存到数组中编写这一部分的时候总是出现错误,主要是对指向数组的指针认识不清,通过这次编程对它有了更深的了解。(4)scanf("%s",&addi.a) 和printf("%s ",addi-10.a)在编写程序阶段,我最开始编写这两个函数的时候是scanf("%c",&addi.a) printf("%c ",addi-10.a) ,当时没有看清addi.a最初的定义,它其实是一个字符数组,所以在运行
28、的时候老出错,后面慢慢研究和调试才知道在输入和输出的格式占位符应该用%s.(5)随机函数的编写我以前几乎没接触过随机函数,所以对其不是很了解。刚开始的时候都不会写,后来在网上找实例,才知道其用法。而且根据题目的要求产生折扣的范围是0.201.0(小数点后取两位),所以要产生有小数范围的不同随机数,就要用时间作为产生随机数的种子,并且通过取余运算和除以整数100来确定随机数的范围。另外还需引用以下头文件:# include <stdlib.h># include <time.h> 4.2 算法的时空分析(1)时间复杂度: Floyed函数T(n)=O(n2+n3)(2)空
29、间复杂度:本程序的空间复杂度均为S(n)=(n2); 即存放n2个节点数据辅助空间。4.3 经验和体会(1) c语言的学习实践很重要。自学习C语言以来,我们就没怎么练习上机实践能力,所以对于代码的敏感度不够,一个错误出现了,不是很容易发现。在这次课程设计中,我就犯了很多高手认为很基础的错误,比如说:printf函数的用法,变量声明的位置,还有就是指针数组的用法。犯错误是不可避免的,但是我们要认真地去发现错误和修改错误。我在运行后,知道自己的程序有错误,我首先一步一步慢慢看,慢慢分析,在整个程序中找不出来就将该部分分离出去进行测试,这样,就很容易找到问题所在了。(2) 编写c语言程序必须要细心,
30、特别注意标点符号的书写。同一个error可能要改个几遍才能改好,由于平时编程经历少的缘故,总感觉有些吃力,要解决这一问题就要自己找题目练习,而不是仅仅依赖于老师每次实验和考试。另外通过程序的编写还发现自己在c语言编程方面存在不足,要继续加强练习。(3) 要善于利用身边的资源。资源既包括网络资源也包括人力资源。遇到一个问题先要通过网络查找解决办法,如果还是不能解决就要学会请教别人,毕竟身边有很多技术牛人和学长学姐,他们都给我很耐心地解答,让我很感动的同时也受益匪浅。 (4)通过这次课设对弗洛伊德算法有了更深刻的了解。本次课程设计的问题归根到底是求最短路问题,用弗洛伊德算法求任意两点最短路径的过程
31、比用迪杰斯特算法算n次的形式上更加简单,时间复杂度为O(n2+n3),是一个简便的算法。5. 用户使用说明5.1 使用程序的操作步骤运行程序后输入存储输入数据的文件名,用户会看到程序的主菜单,根据标号的提示输入序号让程序执行相应的操作。(1) 选择序号1,程序输出所有的城市及其代码。可以选择继续查询或返回主菜单,输入序号执行相应功能。(2) 选择序号2,程序输出所有城市名及所有可直飞到达的城市列表(按城市名拼音升序排列)。可以选择继续查询或返回主菜单,输入序号执行相应功能。(3) 选择序号3,程序输出所有的城市及其代码,根据提示输入两城市标号,程序输出指定线路四个季度的折扣和全价。可以选择继续
32、查询或返回主菜单,输入序号执行相应功能。(4) 选择序号4,按要求输入月份,程序输出所有的城市及其代码,根据提示输入两城市标号,程序输出你选择的月份、位于的季度、折扣以及最佳方案 。可以选择继续查询或返回主菜单,输入序号执行相应功能。(5) 选择序号0,退出程序。6. 测试结果6.1 测试结果展示文本文件read.txt内容:(1)读文本文件read.txt。若文件名输入正确且文件无错误,则显示主菜单。若文件名输入错误或文件有错误,则显示“打开输入文件出错”。(2)根据主菜单提示选择需要执行的功能。若输入功能序号在04之间,则执行相应的功能。若输入功能序号不在04之间,则显示“出错啦!请在0-
33、4之间选择!”和主菜单,需重新选择。(3)选择1,输出城市列表及相应代码。(4)选择2,输出所有城市名以及每一城市所有可直飞到达的城市列表(按城市名拼音升序排列)。(5)选择3,先显示城市列表及相应代码,方便后面的输入操作,根据提示“请输入起始城市和目的城市的代码,中间以空格隔开,范围(1- 10)”输入两个城市代码,若两城市间有直飞航班则显示指定线路四个季度的折扣和全价。若两城市间无直飞航班则显示“无直飞航班”。(6)选择4,显示“请输入月份(请在1-12之间选择):”若月份输入正确,则先显示城市列表及相应代码,方便后面的输入操作,根据提示“请输入起始城市和目的城市的代码,中间以空格隔开,范
34、围(1- 10)”输入两个城市代码,若代码输入正确,则显示最佳方案。若月份输入错误,则显示“输入出错”。若城市代码输入错误,则显示“出错啦!”。(7)选择0,则直接退出程序。(8)在每一个功能执行完后,都会提示继续执行还是返回主菜单。7. 附录#include <stdio.h> #include <stdlib.h>#include <time.h> /需引用的头文件#define INF 65535 /定义一个最大数为无穷值,表示两城市之间无直飞航班#define MAX 23static int c_number=10;/定义城市个数static in
35、t k=0;static int v=0,z=0,r=0,t=0;typedef int costAdjMAX+1MAX+1;/图邻接矩阵从1开始记数int PathMAX+1MAX+1;/图邻接矩阵从1开始记数typedef struct unDiGraphint numVerts; /结点costAdj cost; /邻接矩阵unDiGraph,*UNG; /图的定义typedef struct c_editchar a10;c_edit;c_edit add10;costAdj B;/城市列表定义int pr(int i,int j) int h=0;if (j=0) h=i;else
36、if (j=1)scanf("%s",&addi.a);switch(h)/运用switch语句。 case(0):printf("");break;case(1) : printf(" 武汉 "); break; case(2) : printf("北京 ");break; case(3) : printf("厦门 ");break; case(4) : printf("广州 ");break; case(5) : printf("大连 ");b
37、reak; case(6) : printf("上海 ");break; case(7) : printf("长沙 ");break; case(8) : printf("深圳 ");break; case(9) : printf("郑州 ");break; case(10) : printf("天津 ");break;default: printf("%s ",addi-10.a);return 1;/输出城市列表及相应代码void pri()int i; printf(&
38、quot; 城市及其代码 nnn"); printf("*n"); for (i=1;i<=c_number;i+)printf("%d",i);printf(".");pr(i,0);printf("n");printf("*nnnnnn");/构造带权(票价)图 返回首地址GunDiGraph *CreateCostF(int o,FILE *fp)/飞机花费的存贮功能unDiGraph *G;int i,j,time=1;int h=1;int Wuhan10,Beijin
39、g10,Xiamen10,Guangzhou10,Dalian10,Shanghai10,Changsha10,Shenzhen10,Zhengzhou10,Tianjin10;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) /为G分配存储空间。return(NULL);for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF; /初始化使G->costij为无穷。G->numVerts=c_number; i = 0;while(time != 11)fs
40、canf(fp,"%d",Wuhan+i);fscanf(fp,"%d",Beijing+i);fscanf(fp,"%d",Xiamen+i);fscanf(fp,"%d",Guangzhou+i);fscanf(fp,"%d",Dalian+i);fscanf(fp,"%d",Shanghai+i);fscanf(fp,"%d",Changsha+i);fscanf(fp,"%d",Shenzhen+i);fscanf(fp,&qu
41、ot;%d",Zhengzhou+i);fscanf(fp,"%d",Tianjin+i);time+;i+;for(j=1;j<c_number+1;j+) G->costj1=Wuhanj-1; G->costj2=Beijingj-1; G->costj3=Xiamenj-1; G->costj4=Guangzhouj-1; G->costj5=Dalianj-1; G->costj6=Shanghaij-1; G->costj7=Changshaj-1; G->costj8=Shenzhenj-1; G
42、->costj9=Zhengzhouj-1; G->costj10=Tianjinj-1;return(G); /Floyed函数 求任意两点的最小票价void Floyed(unDiGraph *D) int i,j,k,n;costAdj A;n=c_number; for(i=1;i<=n;i+) for(j=1;j<=n;j+)Aij=D->costij;/初始化矩阵A。 Pathij=-1; /初始化矩阵Path, 置-1.保存最短路径,求Aij时,Pathij存放从顶点vi到顶点vj的中间节点编号不大于k的最短路径上前一个节点的编号 for(k=1;k
43、<=n;k+) /k为逐步加入的中间结点 for(i=1;i<=n;i+) /i为A中行号for(j=1;j<=n;j+)if(Aik+Akj<Aij)Aij=Aik+Akj; Pathij=k;/若i经过k到j比i到j小,则令Aij=Aik+Akj。 Bij=Aij; elseBij=Aij;/end-for/end-Floyed/为了求从i到j的最短路径,只需要调用如下的过程void prn_pass(int i,int j) if(Pathij!=-1) prn_pass(i,Pathij);/输出最短路径经过的所有点 pr(Pathij,0);/输出所有城市名以
44、及每一城市所有可直飞到达的城市列表(按城市名拼音升序排列)void f_money1() int l;inth=1;do printf("始发地 可直飞目的地n");printf(" 北京 广州 武汉n");printf(" 长沙 大连 天津n");printf(" 大连 长沙 厦门 郑州n");printf(" 广州 北京 上海 郑州n");printf(" 上海 广州 深圳 天津n");printf(" 深圳 上海 天津n");printf("
45、; 天津 长沙 上海 深圳n");printf(" 武汉 北京 厦门n");printf(" 厦门 大连 武汉n");printf(" 郑州 长沙 广州n"); printf("nn 1.继续输出所有城市名以及每一城市所有可直飞到达的城市列表n 2.返回主菜单n 清选择."); scanf("%d",&l); /输入1或2选择是否继续。 h=l; while(h=1); printf("n");/输入起始城市和目的城市名称,输出指定线路四个季度的折扣和全价v
46、oid f_money2(FILE *fp) int Bcity,Ecity;/起始成市号码和终点城市号码 int l;inth=1;float money4;int i,j; float s,w; float discount4;do pri();/输出城市列表及相应代码。 printf("请输入起始城市和目的城市的代码,中间以空格隔开,范围(1-%d)",c_number); scanf("%d",&Bcity); scanf("%d",&Ecity);/输入起始城市和终点城市的代码。if (!(0<Bcit
47、y&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity) printf("n出错啦! n"); /输入出错 exit(1);Floyed(CreateCostF(0,fp);/调用Floyed函数。if (BBcityEcity>5000) printf("无直飞航班n");else printf("季度 全票价格 折扣 折后价格(不计小数,四舍五入)n"); srand(unsigned)time(NULL); /随机种子 for (j=0;j<4;j+) for(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版茶叶进出口贸易合同范本(国际市场)
- 2025版汽车维修后货物配送运输合同书模板
- 二零二五年度餐饮门面租赁合同范本下载
- 2025版工业园区安保外包与产业安全协议
- 2025版智能交通系统设备采购合同规范
- 二零二五年度厂房租赁合同书(含租赁面积)
- 二零二五年度KTV装修设计、施工、监理一体化合同
- 2025年财务会计远程服务劳动合同
- 二零二五年度仓储配送服务与仓储设备租赁合同
- 二零二五年办公家具与设备租赁采购合同
- 医保知识及政策培训课件
- 2025年贵州毕节市金沙县面向全县考调机关事业单位人员10人高频重点提升(共500题)附带答案详解
- 委托编剧和改编创作合同书2025年
- 《车间主任培训》课件
- 肾上腺危象的临床护理
- 烟草店转让合同范例
- 中国电子商务物流发展现状与趋势分析报告
- 《车路协同 路侧感知系统 第1部分:技术要求》
- 【MOOC】心理学与生活-南京大学 中国大学慕课MOOC答案
- 医院皮肤科十四五规划
- 检查检验管理制度
评论
0/150
提交评论