- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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;”,使得小排序次数依次减1。
(3)第9行:“i,n;”改为
您可能关注的文档
- (2#墩)水下承台钢板桩围堰施工及设计方案.doc
- (东二村一建)沥青路面硬化工程施工组织及设计-中标.doc
- (东二村铭基)沥青路面硬化工程施工组织及设计.doc
- (川化)南充炼油化工总厂特种润滑油生产装置安全隐患整改工程施工组织及设计.doc
- (亿视)亚太中心智能化小区系统及设计方案(改加扫描).doc
- (广东省粮食局办公大楼7-8、10层装修改造工程)施工组织及设计.doc
- (开题报告)乔家栅甜品店及设计—蓬莱路店.doc
- (广州大学电气课程及设计)建筑供配电系统及设计说明书正文.docx
- (桃园村一建)农村硬化和亮化工程施工组织及设计-中标.doc
- (徐性怡)电动汽车用电机控制系统及设计方法与发展趋势介绍.doc
最近下载
- Petrel 裂缝分析与裂缝建模技术.pptx VIP
- 中华人民共和国防洪法(2016修正)最新版实施细则解读.pptx VIP
- 2025年四川省乐山市井研县某国企招聘笔试题库及答案详解1套.docx VIP
- 2025广东惠州市博罗县自然资源局招聘编外人员76人备考题库附答案解析.docx VIP
- 工业机器人系统操作员实操试卷(技师)(试卷六).docx VIP
- 2025下半年四川成都交通投资集团有限公司第二批次招聘65人考试备考试题及答案解析.docx VIP
- 政府采购项目招标代理机构服务 投标技术方案(技术标).docx VIP
- 水平三(五年级)体育《篮球原地运球》教学设计及教案.docx VIP
- 白酒行业会计基础知识培训课件.pptx
- 《机械制造技术基础》题库及答案.docx VIP
原创力文档


文档评论(0)