语c言课程设计航空售票系统本科论文.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语c言课程设计航空售票系统本科论文

C语言程序设计课程设计 评语: 考勤(10) 纪律(10) 过程(40) 设计报告(30) 答辩(10) 总成绩(100) 专 业: 轨道交通信号与控制 班 级: 信号1402 姓 名: 牛志强 学 号: 201409217 指导教师: 张振海 兰州交通大学自动化与电气工程学院 2015 年 7 月 22 日 一、基础题 1、题目 有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是多少号。 2、解题分析 利用结构体数组中加入指针构成循环链模拟进行报数,并加入标志,表示此人是否离开游戏。游戏开始,报数等于三的倍数的人离开,直到淘汰16个玩家为止,则剩余一人为胜利者,输出该游戏者的结构体数组位置即是此人原来的位置。 3、流程图 图1基础题流程图 源程序 #includestdio.h struct Sign { int no_out; //出局标志 int nextp; //指针指向下一个元素,形成圈形链表 }sign[17]; main() { printf(有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是多少号。\n); int i, j, k,l; for (i = 0; i 17; i++) //循环链表赋初值 { sign[i].no_out = 1; sign[i].nextp = i + 1; } sign[16].nextp = 0; printf(初始队列情况(Y代表存在,N代表出局):); for (i = 0; i 17; i++) printf(%c%c, sign[i].no_out ? Y : N,(i+1)%17!=0?\0:\n); j = 16; for (i = 0; i 16; i++) //淘汰16个人为止 { for (k = 0;;) { if (k % 3 != 0 || k == 0)//不是3的倍数指向下一个 { j = sign[j].nextp; k += sign[j].no_out; } else //3的倍数出局,标志改为0 { sign[j].no_out = 0; break; } } printf(第%d个人第%d号淘汰后:,i+1,j); //每淘汰一个人就输出,模拟真实的游戏过程 for (l= 0; l 17; l++) printf(%c%c, sign[l].no_out ? Y : N,(l + 1) % 17 != 0 ? \0 : \n); } for (i = 0; i 17;i++) if (sign[i].no_out) printf(最后剩余一人原来号码为%d\n,i); } 测试数据及运行结果 图2基础题运行图 二、改错题 1、题目 下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。 程序如下: #include stdio.h #define N 20 void fun(int a[],int n) { int i,j,t,p; for (j=0;jn-1;j++) { p=j for (i=j;i,n;i++) if (a[i]a[p]) p=j; t=a[p];a[p]=a[j];a[j]=t; } } main() { int a[N]={9,6,8,3,-1},i,m=5; printf(排序前的数据:); for (i=0;im;i++) printf(%d,a[i]); printf(\n); fun(a,m); printf(排序后的数据:); for (i=0;im;i++) printf(%d,a[i]); printf(\n); } 2、程序功能 把数组中的数按从小到大依次排序。 3、错误分析 (1)第8行:“p=j”改为“p=j;”构成语句。 (2)第9行:“i=j;”改为“i=j+1;”,使得小排序次数依

文档评论(0)

李天佑 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档