C语言课程设计-数组游戏

上传人:m**** 文档编号:507650510 上传时间:2022-12-29 格式:DOC 页数:18 大小:138.50KB
返回 下载 相关 举报
C语言课程设计-数组游戏_第1页
第1页 / 共18页
C语言课程设计-数组游戏_第2页
第2页 / 共18页
C语言课程设计-数组游戏_第3页
第3页 / 共18页
C语言课程设计-数组游戏_第4页
第4页 / 共18页
C语言课程设计-数组游戏_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言课程设计-数组游戏》由会员分享,可在线阅读,更多相关《C语言课程设计-数组游戏(18页珍藏版)》请在金锄头文库上搜索。

1、前言计算机对社会开展所具有的广泛而深远的影响。人类文化的内涵是随着社会开展而进化的。在现代信息社会中,计算机已不仅仅是一种工具,而且是一种文化。信息技术对人类社会进行的全方位渗透,已经形成一种新的文化形态信息时代的计算机文化。计算机知识成为当代知识分子结构中不可缺少的重要局部。设计是一门重要的计算机根底课程,通过学习,学生不仅要掌握高级程序设计语言的知识,更重要的是在实践中逐步掌握程序设计的思想和方法,培养问题求解和语言的应用能力。此次上机实习,不但要使同学们的程序设计能力上一台阶,同时要提高与程序设计和软件开发有关的各种综合能力。通过这次对C语言的进一步学习,为我们日后学习单片机安打下了根底

2、。在机电一体化日趋明显的当下,掌握一门计算机语言是多么的重要,这必将为我们机电学院学生日后的开展产生深远的影响。由于课时和上机时间的仓促,所以我对很多内容还来不及消化,对上机演练十分陌生,还有一些知识遗忘,因而这次程序设计的实习实际上是对我的一次集中的强化练习。虽然其时间短,任务重,但我们确实到达了此次课程设计的目的。本次实习得到樊*老师的指导和帮助,至此表示感谢 !目 录第一局部 题目要求1第二局部 程序设计思路21.需求分析22.程序总体设计23.程序详细设计2第三局部 程序代码6第四局部 设计数据和运行结果104.1 运用举例的数据进行验证104.2 自行设计数据进行验证11第五局部 所

3、遇问题及解决方案135.1 数字的输入问题135.2 switch和break的用法135.3数组排序问题145.4 标记数组的使用145.5 最后结果的输出14第六局部 总结与感受15第一局部 题目要求数组游戏【要求】设有n个正整数n20,将它们连成一排,组成一个最大的多位数。程序输入:n个正整数。程序输出:n个数连接成的多位数。【提示】以下是设计思路:可以将问题这样变化一下:比方输入的是123、2、33、1006、12这样几个数字。先找出最大的数字的位数为4位,再将所有的数字变成4位数:1230 2000 3300 1006 1200然后进行排序:3300 2000 1230 1200 1

4、006这样将后面加上的0去掉的序列不就是最大数字吗?于是最大数字就是:332123121006。第二局部 程序设计思路1. 需求分析根据题目要求,输入假设干个数字中间用空格隔开,输入的数字个数不大于20。然后,让这些数随机连在一起,把组合中的最大数输出。2. 程序总体设计输入一组数,输出所需要的数。大致流程图:输入一组数字个数不大于20将输入的数进行连排在连排的数中选择出最大的数输出这个最大数3. 程序详细设计3.1 主函数主要负责输入和输出一定的数据。main( )输入数字, 进行一定的处理,输出数字,流程图输入一组数字按字符串进行读取遇到空格 n=n+1n=0YN得到数组an3.2 排序函

5、数选择法void sort(int x,int n)将数字按从大到小的顺序排列如果两个数字相等,交换位置void sort(int x,int n) /*用选择法将正整数按从大到小排列*/int i,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;j=xk)k=j;if(k!=i)t=xi;xi=xk;xk=t;3.3 求位数函数int num(int y)求每个数个的位数,以便补位。int num(int y) /*求最大数字的位数*/int i=0;while(y)y=y/10;i+;return i;3.4 变位函数void modificate(int z,in

6、t n);把排序后的数字变成最高位数。流程图:数组ai计算需要补的位数y新数组ai=ai10y将新数组a n排序用标记数组bn记录每个数字的变为数3.5 复原函数void revert(int r,int n);把进行过补位的数字复原到原来的样子void revert(int r,int n) /*把变位后的数字复原成原数字*/int j,h;for(j=0;jn;j+)h=bj;while(h)rj=rj/10;h-;流程图:变位后的数组ai新数组ai=ai/10h输出复原后的数组a n使用标记数组bn记录的每个数字的变为数h第三局部 程序代码#includestatic int b20;

7、/*作为标记,记录数字的变位个数*/main()void sort(int x,int n); /*用选择法将正整数按从大到小排列*/int num(int y); /*求数字的位数*/void modificate(int z,int n); /*变位函数,在数字后面加“0*/void sorts(int x,int y,int n); /*把数组和标记数组同时排序*/void revert(int r,int n); /*复原函数*/ int a20;char c;char str200;int *p,i,e,d,f=0,n=0; printf(Please input a few num

8、bers(The amount is less than or equal to 20):n); /*输入假设干个数字n=20)*/gets(str);for(e=0;(c=stre)!=0;e+)switch(c)case1: d=1;break;case2: d=2;break;case3: d=3;break;case4: d=4;break;case5: d=5;break;case6: d=6;break;case7: d=7;break; case8: d=8;break;case9: d=9;break;case0: d=0;break;case : n+,f=0,d=0;bre

9、ak;default:printf(Error!nAttention:What you input must be number!n);f=f*10+d;an=f;n=n+1; /*输入数字的个数*/p=a;sort(p,n); for(i=0;in;i+)bi=num(a0)-num(ai);modificate(a,n);sorts(p,b,n); /*对变位后的所有数字进行排序*/printf(nSort these modificated numbers:n);for(i=0;in;i+)printf(%d ,ai); printf(n);revert(p,n);printf(nThe

10、 new number is: ); /*按要求输出输入的数*/for(p=a,i=0;in;i+)printf(%d,*p); p+;printf(nn);void sort(int x,int n) /*用选择法将正整数按从大到小排列*/int i,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;j=xk)k=j;if(k!=i)t=xi;xi=xk;xk=t;int num(int y) /*求最大数字的位数*/int i=0;while(y)y=y/10;i+;return i;void modificate(int z,int n) /*通过在数字后面加一定数

11、目的“0后,将所有的数字变为最高位*/int i,k,maxnum;maxnum=num(z0);for(i=0;in;i+)k=maxnum-num(zi);while(k)zi=zi*10;k-; void sorts(int x,int y,int n) /*正整数按从大到小排列*/int i,j,k,t,w;for(i=0;in-1;i+)k=i;for(j=i+1;j=xk)k=j;if(k!=i)t=xi;xi=xk;xk=t; w=bi;bi=bk;bk=w;void revert(int r,int n) /*把变位后的数字复原成原数字*/int j,h;for(j=0;jn;j+)h=bj;while(h)rj=rj/10;h-;第四局部 设计数据和运行结果4.1 运用举例的数据进行验证需要输入一组数字进行输入运行结果4.2 自行设计数据进行验证输入一组数字进行输入运行结果第五局部

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号