- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;”,使得小排序次数依
您可能关注的文档
- 银a行个人投资理财产品管理研究本科论文.doc
- 音频功率放大器课程设计otl音频功率放大器的设计与制作 毕业论文.doc
- 印彩包装有限公司培训体系管理制度全套本科论文.doc
- 印务包装公司甲苯废气治理项目立项设计方案说明文本 毕业论文.doc
- 英非语专业大学生英语写作焦虑成因研究-开题报告本科论文.doc
- 英汉礼貌用语对比研究 毕业论文.doc
- 英吉沙县提干村庄建设规划 毕业论文.doc
- 英语词汇在日常生活中对现代汉语的影响 毕业论文.doc
- 英语单位名词研究—以《牛津高阶英汉双解词典(第六版)》为例 毕业论文.doc
- 英语论文开题报告电影《撞车》中的种族主义歧视隐喻解读 毕业论文.doc
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)