C语言程序课程设计猜数字游戏_第1页
C语言程序课程设计猜数字游戏_第2页
C语言程序课程设计猜数字游戏_第3页
C语言程序课程设计猜数字游戏_第4页
C语言程序课程设计猜数字游戏_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计课程设计考语:业:自动化设计报告辩论考勤(10)纪律(10)过程(40)总成绩(100)级(30)(10):名:学号:指导教师:兰州交通大学自动化与电气工程学院2015年07月21日一.前言设计目的复习和稳固C语言基础知识,进一步加深对C语言的理解和掌握。提升同学将课本上的理论知识和实质联合的能力,锻炼同学的剖析解决实质问题的能力,提升同学团队合作的能力。使同学们擅长察看和思虑,擅长合作,具备实践编程的基础素质,和实质问题剖析的思虑方式。设计要求在设计时充分地剖析和理解问题自己,综合考虑系统功能,如何使系统构造清楚、合理、简单和易于调试。而后详尽设计,确立每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。最后仔细达成课程设计说明书,并对设计方法,结果等进行总结。充分地剖析和理解问题自己,弄清要求做什么(Whattodo)。在确立解决方案框架过程中(Howtodo),综合考虑系统功能,考虑如何使系统构造清楚、合理、简单和易于调试。最后确立每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。确立算法的主要流程,在此基础长进行代码设计(Coding),每个明确的功能模块程序一般不超出60行,不然要进一步区分。上机前途序静态检查可有效提升调试效率,减少上机调试程序时的无谓错误。静态检查主要有两种门路:(1)用一组测试数据手工履行程序;(2)经过阅读或给他人解说自己的程序而深入全面地理解程序逻辑。二.基础题题目用选择法对10个数进行排序。有一个已排好序的数组。现输入一个数,要求按本来的规律插入到原数组中。解题思路程序的主要功能是对数组元素用排序函数按从小到大的次序进行排序。先定义一个10个元素的一维数组a[10],而后从电脑输入10个数(也就是对数组赋值),而后使用一次fun()函数,对这10个数进行排序;而后再定义一个11个元素的一维数组b[11],同时再从电脑输入一个数同a[10]一同赋值给b[11],而后再使用fun( )函数,从头排序的到最后的有次序的一组数据。流程图子函数流程图如图1所示:开始i=1Ni<=n-1Yi=i+1j=nNj>=iYYa[j]<a[j-1]N交换a[j]和a[j-1]的数据j=j+1输出已排序的数组a结束图1基础题子函数流程图主函数流程图如图2所示:图2基础题主函数流程图源代码基础题源代码见附录A。运转及测试结果运转及测试结果如图3所示:图3基础题运转及测试结果截图三.改错题题目#include<>intfun( ){inta[3][3],sum;inti,j;____;for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d"a[i][j]);}for(i=0;i<3;i++)sum=sum*a[i][i];printf("累乘积=%d\n",sum);}main( ){fun( );}解题思路程序的功能:这是一个求3*3矩阵主对角线元素累乘积的程序。程序剖析:能够看出源程序中,先声了然一个子函数,并定义子函数fun( )累乘积函数(这个函数就是先定义了一个3*3的二维数组,而后从键盘输入数值对这个二维数组进行了数组赋初值,赋值过程中使用了for循环语句,而后利用for循环语句对主角线的元素做每个数的乘积,最后是输出这个累乘积。)。最后就是主函数main( ),主函数中使用一次子函数fun( )。错误剖析错误一:原程序中对sum没有设置初值,应设置为“sum=1;”;错误二:scanf( )函数中没有使用地点运算符,应在数组前加“&”错误三:子函数也没设返回值,返回值应为“returnsum;”。改错后的源代码改错后的源代码见附录B。运转及测试结果运转及测试结果如图4所示:图4改错题运转及测试结果截图四.综合题题目设计课题四:猜数字游戏一.问题描绘该游戏能够由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者经过游戏提示输入八次来般配上边所输入的数字。A表示地点正确且数字正确,B表示数字正确而地点不正确。假如4A0B,表示游戏成功。每次猜错会有提示,假如八次都未猜对,游戏失败,显示正确答案。按随意键能够返回主菜单。主要应运数组和循环实现改功能。(对该系统有兴趣的同学能够在实现系统基本功能后,完美系统的其余功能,如:破记录功能,若你所般配的次数小于纪录保持者,则为破纪录。)二.功能要求游戏显示这样的菜单:1)随机产生数据2)用户输入数据3)退出游戏游戏成功与否都能返回主菜单三.算法提示数据构造:数组用简单的程序设计方法四.测试数据测试数据:3792第一次输入:12340A2B第二次输入:56780A1B第三次输入:08670A1B第四次输入:97861A1B第五次输入:17942A0B第六次输入:27932A2B第七次输入:37924A0B游戏成功!!!五.其余对该系统有兴趣的同学能够在实现系统基本功能后,完美系统的其余功能,如:破记录功能,若你所般配的次数小于纪录保持者,则为破纪录。设计思路此游戏程序经过不停输入以及渐渐数位对应的方法,一步一步的减小猜想范围最后猜想出机器内已经储存的数字,达到健脑益智的成效。这类策略特别直接——每次都猜可能答案中的一个。比如:第一猜想1234,假如获得的反应是2A2B那么可能的答案包含等等。依据简单策略,下一次就猜1256,由于1256是全部可能答案中最小的数字。简单策略是程序运转速度特别快,弊端是所猜想的次数许多。利用主函数调用子函数来实现模块化程序设计。将游戏的每一个功能设计成一个子函,数调用达成游戏。主要分为两大模块:随机模式和用户模式。猜数字游戏的主要功能,由系统自动产生4个随机摆列的整数,或许由用户输入4个不一样的整数,并给用户8次时机猜想数字的数值和摆列次序。假如用户在8次以内没有猜出正确的结果,则提示用户游戏失败,不然提示用户猜数字成功。该游戏能够由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者经过游戏提示输入八次来般配上边所输入的数字。A表示地点正确且数字正确,B表示数字正确而地点不正确。假如4A0B,表示游戏成功。每次猜错会有提示,假如八次都未猜对,游戏失败,显示正确答案。按随意键能够返回主菜单。主要应运数组和循环实现改功能。能够对系统在实现系统基本功能后,完美系统的其余功能,如:破记录功能,若你所般配的次数小于纪录保持者,则为破纪录。流程图主程序流程图如图5所示:开始游戏说明及选项游戏选项,非1,2,3为无效输入2游戏说明1开始游戏3退出咨询清屏输出说明并返回并生成4个一位随机数玩家输入选择否,返回选择是,结束程序判断输入能否有重复数字并给与必定提示如超出最大回答次数,给出正答案。在规定次数内猜对,输出你猜对了。咨询“是”持续,“否”退出咨询“是”持续,“否”退出。选择是返回选择否退出选择否退出选择是返回程序结束图5主程序流程图源代码源代码见附录C。运转及测试结果开始界面如图6所示:图6开始界面结果截图使用说明界面如图7所示:图7使用说明界面截图成功进行了一次游戏如图8所示:图8完好一次游戏截图总结C程序课程设计是理论和实质的联合,经过此次程序的设计,提升了我的c语言水平,比方,查阅资料的重要性,对程序的整体性掌握。并且对整体的掌控,还有对局部的弃取,以及对细节的商酌办理,都使我的能力获得了锻炼,累积了经验,可是当自己依据此思路设计出程序时,程序的运转出现了一些问题,这些问题出现时,我经过查阅资料,并且和同学沟通,最后经过几次的改正,运转结果和期望的同样。经过此次的课程设计,我感觉到自己的C语言知识极少,此次题目,能够让我掌握更多的知识,更好的认识c程序的编译过程,剖析阶段,我的剖析思路以下,进行面向对象的需求剖析,系统设计,画出相应需求剖析图,流程图,有了流程图,能够让我更好的理解这个程序的设计方法。我还感觉到上机操作的重要性,从前我不过在书上看,而没有过多的上机操作,就算一个程序能写出来,上机操作的结果也未必正确,有时自己对一个程序信心实足,可是假如上机操作,那么就有好多问题,并且碰到错误不要气馁,要一步一步的改,直到能运转出正确的结果为止,还有就是借助资料的重要性,一道题假如不会作,我们要借助资料来对照和解决,学习是一个不停完美的过程,要正视自己的不足之处,碰到不足的之处,要自己完美,比方,我领会到自己c语言知识知道的极少,在此后,我要学习和完美自己的C语言知识,还有,自己的实质操作太少,在此后学习C程序设计的过程中,要着重实质操作,而不不过在书上看看就完了。参照文件谭浩强着.C程序设计(第四版).北京:清华大学第一版社,2010蔡志明着.指针的艺术.中国水利水电第一版社,2009谭浩强编着.C程序设计(第三版).北京:清华大学第一版社,2005谭浩强着.C程序设计教程.北京:清华大学第一版社,2007谭浩强着.C语言程序设计(第2版).北京:清华大学第一版社,2008谭浩强编着.C程序设计题解与上机指导(第三版).北京:清华大学第一版社,2005谭浩强编着.C++程序设计.清华大学第一版社,2004谭浩强着.C程序设计(第四版)学习指导.北京:清华大学第一版社,2010陈明编着.计算机导论.北京:清华大学第一版社,2009[10]C编写组编.常用C语言用法速查手册.北京:龙门书局,1995附录附录A#include<>voidmain( ){voidfun(inta[],intn);inta[10],i,k,b[11];printf("请输入十个数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}fun(a,10);

始游戏\n\n");printf("\t\t\t\t2.printf("\t\t\t\t3.printf("\t\t\t

使用说明\n\n");退出游戏\n\n");请输入(1-3):");fflush(stdin);choice=getchar( );}while(choice!='1'&&choice!='2'&&choice!='3');switch(choice){case'1':{game( );break;}case'2':{system("cls");printf("\t\t\t\t欢迎使用本程序\n\n\n");printf("

游戏说明

:输入%d位数字,输入后会有提示

XAYB,X表示有几个数字与答案数字同样且地点同样。\n",MANY);printf("Y表示有几位数字与答案数字同样但地点不正确。\n");printf("比如:答案数字是5764,假如输入5481,则会提示1A1B。\n");printf("printf("

祝你快乐!\n\n");按随意键返回主目录

\n");getch( );break;}case'3':{printf("确立要退出吗(y/n):");fflush(stdin);ch=getchar( );if(ch=='y'||ch=='Y')exit(0);elsecontinue;}}}while(1);}/*游戏部分*/voidgame( ){intguess[MANY],answer[MANY];inttimes,i,m,j;intkey;time_tt;charwantplay,temp;srand((unsigned)time(&t));do{/*生成MANY个随机数*/do{u=0;for(i=0;i<MANY;i++)guess[i]=rand( )%10;same(guess);}while(u);printf("请输入%d位不同样的数:\n",MANY);for(times=1;times<=TIME_OUT+1;times++){/*超出限制数次*/if(times==(TIME_OUT+1)){printf("正确答案是:");for(m=0;m<MANY;m++)printf("%d",guess[m]);printf("\n猜了%d次都没料中",TIME_OUT);break;}printf("第%d次:",times);/*玩家输入*/fflush(stdin);for(j=0;j<MANY;j++){temp=getchar( );answer[j]=temp-48;/*temp是char型*/}/*检查输入有没有重复*/u=0;same(answer);if(u){printf("你输入的数字有重复,请从头输入\n");continue;}ab(answer,guess);/*判断输入数字正确的个数*/if(a==MANY){printf("恭贺!你猜对了");break;}elseprintf("%dA%dB\n",a,b);}printf("还想玩吗(y/n):");fflush(stdin);wantplay=getchar( );if(wantplay=='y'||wantplay=='Y'){system("cls");continue;}elsemenu( );}while(wantplay=='y'||wantplay=='Y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论