《C语言程序设计》课程设计---猜数字游戏
C高级语言程序设计猜数字游戏

《高级语言程序设计》课程设计说明书设计题目:猜数字游戏目录1.游戏说明、、、、、、、、、、、、、、、、、、、、、、、、、、12.程序的模块组成、、、、、、、、、、、、、、、、、、、、23.程序流程、、、、、、、、、、、、、、、、、、、、、、、、、、24.程序源清单、、、、、、、、、、、、、、、、、、、、、、、、25.课程设计总结、、、、、、、、、、、、、、、、、、、、、、、19课题:猜数字游戏说明:每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜基本功能:1.用户注册2.用户积分查看游戏流程设计思路:1设计思路:1.程序的模块组成:主函数、、、、、、、、、、、、int mian创立结构体、、、、、、、、struct record定义数组、、、、、、、、、、char name[ ]清除文本模式窗口、、system("cls")2.程序流程:分别用void定义开始界面display,操作函数sys(int a),记录文件recwrite(),浏览界面vdisplay(),读取文件recread() ,开始游戏newgame(),判断并增加记录addrec()。
在用int mian主函数调用。
srand( (unsigned)time( NULL ),以时间为种子,产生随机数,更具有代表性,这样避免了随机出显的数字服从正太分布。
3程序源清单:#include <stdlib.h>#include <stdio.h>#include <time.h>#include<windows.h>#include<string.h> 2struct record{char name[10];int sorce;}rec;int num; //输入的数字void display(); //开始界面void xuanze(); //选择函数void sys(int a); //操作函数void zhuce(); //用户注册void newgame(); //新游戏void vdisplay(); //浏览记录界面int qushu(); //取数函数int tishi(int aa); //提示函数void addrec(); //判断并且增加记录void recread(); //读取记录文件void recwrite(); //写入记录文件void main() 3 {display();}void display() //开始界面{system("cls"); //清屏printf("============================================\n"); printf(" ================数字竞猜游戏================\n");printf("============================================\n"); printf("\n");printf(" 1: 新游戏\n");printf("\n");printf(" 2: 注册用户\n"); printf("\n");printf(" 3: 用户积分查看\n");printf("\n"); 4 printf(" 4: 退出\n");printf("\n");printf("============================================\n"); xuanze();}void xuanze() //选择函数{int a;printf("请输入你所选择的操作数:\n");scanf("%d",&a);if(a==1||a==2||a==3||a==4){sys(a);}//选择相应的操作数执行函数else{printf("错误的操作数!\n");;printf("\n");printf("请按任意键继续...\n");getchar(); 5 getchar();display();}}void sys(int a) //操作函数{switch(a){case 1:newgame();break;case 2:zhuce();break;case 3:vdisplay();break;case 4:exit(0);break; //退出}}void zhuce(){system("cls");printf("请输入你的名字\n");scanf("%s",&); 6 recwrite(); //写入printf("恭喜!注册成功!\n");printf("请按任意键继续...\n");getchar();getchar();display();}void recwrite() //写入记录文件{FILE *fp;fp=fopen("E:\\rec.rec","wb");if(fp==NULL)printf("写入失败!\n");fwrite(&rec,sizeof(struct record),1,fp);fclose(fp);}void vdisplay() //浏览记录界面{ 7 system("cls"); //清屏printf("============================================\n"); printf(" ================数字竞猜游戏================\n");printf(" ====================积分====================\n");recread();printf("\n");printf(" 姓名:%s : 分数%d\n",,rec.sorce); printf("\n");printf("请按任意键继续...\n");getchar();getchar();display();}void recread() //读取记录文件{FILE *fp; 8 L: fp=fopen("E:\\rec.rec","rb");if(fp==NULL){recwrite();goto L; //初始化}if(fread(&rec,sizeof(record),1,fp)==1){}else{printf("文件读取失败!");}fclose(fp);}void newgame() //新游戏{recread();system("cls"); //清屏9 printf("\n");if (==0){ printf(" 请先注册用户\n");printf("请按任意键继续...\n");getchar();getchar();vdisplay();}/////////////////////////////////////////////////////////////////////////////int snum; //输入的数字int sn=10; //机会次数num=qushu(); //取数L: system("cls"); //清屏printf("============================================\n");printf("============================================\n"); printf(" ================数字竞猜游戏================\n");printf("============================================\n"); printf("\n");printf("===========================================\n"); printf(" 姓名:%s : 分数%d\n",,rec.sorce); printf("\n");printf(" 按1: 终止游戏,显示答案\n");printf("============================================\n"); printf("\n");printf("请输入你猜想的五个数字(格式为99999样式)你还有%d 次机会:\n",sn);scanf("%d",&snum);if(snum<100000 && snum>10000 || snum==1){if(snum==1){printf("你放弃了本局游戏!该五个数字是: %d\n",num); 11 printf("\n");printf("请按任意键继续...\n");getchar();getchar();display() ;}elseint flag=tishi(snum);if(flag!=0 && sn!=0){sn--;if(sn==0){printf("真是遗憾!十次机会没有了!没有关系!下次继续!\n"); printf("\n");printf("请按任意键继续...\n");getchar();getchar();newgame() ; 12 }printf("请按任意键继续猜...\n");getchar();getchar();goto L;}elseif(sn!=0)addrec();else{printf("请按任意键继续...\n");getchar();getchar();newgame();}}}}else{ 13 printf("错误的操作数!\n");;printf("\n");printf("请按任意键继续...\n");getchar();getchar();goto L;}int tishi(int aa) //提示函数{ int a,b,c,d,e;int af,bf,cf,df,ef;if(aa==num){printf("恭喜!你猜对了!五个数就是:%d\n",num);return(0);14 }else{ a=num/10000;b=num/1000%10;c=num/100%100%10; //获取输入的四个数字d=num/10%1000%100%10;e=num%10000%1000%100%10;af=aa/10000;bf=aa/1000%10;cf=aa/100%100%10; //获取输入的四个数字df=aa/10%1000%100%10;ef=aa%10000%1000%100%10;if(af>a)printf("\n第一个数应该比%d 小一点!\n",af);if(af==a)printf("恭喜!第一个数字对了!应该是: %d\n",af); //数字比较if(af<a)printf("第一个数应该比%d 大一点!\n",af);if(bf>b)printf("第二个数应该比%d 小一点!\n",bf);if(bf==b)printf("恭喜!第二个数字对了!就是: %d\n",bf); //数字比较if(bf<b)printf("第二个数应该比%d 大一点!\n",bf); 15if(cf>c)printf("第三个数应该比%d 小一点!\n",cf);if(cf==c)printf("恭喜!第三个数字对了!就是: %d\n",cf); //数字比较if(cf<c)printf("第三个数应该比%d 大一点!\n",cf);if(df>d)printf("第四个数应该比%d 小一点!\n",df);if(df==d)printf("恭喜!第四个数字对了!就是: %d\n",df); //数字比较if(df<d)printf("第四个数应该比%d 大一点!\n\n",df);if(ef>e)printf("第五个数应该比%d 小一点!\n",ef);if(ef==e)printf("恭喜!第五个数字对了!就是: %d\n",ef); //数字比较if(ef<e)printf("第五个数应该比%d 大一点!\n\n",ef);return(1);}}16void addrec() //判断并且增加记录{int a; //标志位a=100;recread();rec.sorce= rec.sorce+a;recwrite();printf("请按任意键继续...\n");getchar();getchar();newgame();}int qushu( ) //取数函数{int a=0;int i=0;17srand( (unsigned)time( NULL ) ); //随机数种子设置while(i==0){i=rand(); //这样做就是为了增加随机性i=i%100;}L: for(int j=0;j<i;j++){a=a+rand(); //判断随机数是否是五位数如果不是继续取数}a=(a/i+rand())%100000;if(a<10000)goto L;return(a);}18 3.课程设计总结这次的课程设计总算是告一段落,虽然源程序不是自己亲自全部完成,但是毕竟也花费了自己的很多精力,从开始的到网上查找资料,然后自己一点点的改正,调试,中间的好多问题自己都没有办法解决,也看不懂,也让自己知道光靠书本的那点知识是无法解决的,书本的知识毕竟是有限的。
【C语言程序设计】—最近超火的小游戏—【数字炸弹】!

【C语⾔程序设计】—最近超⽕的⼩游戏—【数字炸弹】!✍准备⼯作和建议⼀、程序的原理在动⼿编程之前,得先跟⼤家说⼀下这个程序是⼲什么的。
我们可以称呼这个游戏为《数字炸弹》。
游戏的原理是这样:每⼀轮电脑从 1 到 100 中随机抽⼀个整数。
电脑请求你猜这个数字,因此你要输⼊⼀个 1 到 100 之间的整数。
电脑将你输⼊的数和它抽取的数进⾏⽐较,并告知你的数⽐它的数⼤了还是⼩了。
然后它会再次让你输⼊数字,并告诉你⽐较的结果。
⼀直到你猜到这个数为⽌,⼀轮结束。
游戏的⽬的,当然就是⽤最少的次数猜到这个“神秘”数字。
虽然没有绚丽的图形界⾯,但是或多或少,这都是你的第⼀个游戏了,应该值得骄傲。
下⾯演⽰了⼀轮的样式,你要编程来实现它:这个数字是什么?50猜⼩了!这个数字是什么?75猜⼩了!这个数字是什么?85猜⼤了!这个数字是什么?80猜⼤了!这个数字是什么?78猜⼩了!这个数字是什么?79太棒了,你猜到了这个神秘数字!!⼆、随机抽取⼀个数但⼤家要问了:“如何随机地抽取⼀个数呢?不知道怎么办啊,⾂妾做不到啊。
”诚然,我们还没学习如何来产⽣⼀个随机数。
让亲爱的电脑兄来做这个是不简单的:它很会做运算,但是要它随机选择⼀个数,它还不知道怎么做呢。
事实上,为了“尝试”得到⼀个随机数,我们不得不让电脑来做⼀些复杂的运算。
好吧,归根结底还是做运算。
我们有两个解决⽅案:✎请⽤户通过 scanf 函数输⼊这个神秘数字,那么就需要两个玩家咯。
⼀个选数字,⼀个猜数字。
✎孤注⼀掷地让电脑来为我们⾃动产⽣⼀个随机数。
好处是:只需要⼀个玩家,可以⾃娱⾃乐。
缺点是:需要学习该怎么做...我们来学习⽤第⼆种⽅案编写这个游戏,当然你也可以之后⾃⼰编写第⼀种⽅案的代码。
为了⽣成⼀个随机数,我们要⽤到 rand() 函数(rand 是英语 random 的缩写,表⽰“随机的”)。
顾名思义,这个函数能为我们⽣成随机数。
但是我们还想要这个随机数是在 1 到 100 的整数范围内(如果没有限定范围,那会很复杂)。
C语言课程设计猜数字游戏[1]
![C语言课程设计猜数字游戏[1]](https://img.taocdn.com/s3/m/ad17cef36bec0975f465e2b9.png)
C语言课程设计猜数字游戏[1]-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN课程设计报告课程名称C语言程序设计报告课题名称猜数字游戏专业机械设计班级 1082学号 16姓名向鹏指导教师王颖2011年 9 月 15 日湖南工程学院课程设计任务书课程名称 C课程设计课题猜数字游戏专业班级机设1082班学生姓名向鹏学号 0216指导老师王颖审批王颖任务书下达日期 2011 年 9 月 1 日任务书完成日期 2011 年 9 月 15 日目录第一章前言............................................................................................第二章需求分析……………………………………………….....…...系统概述.........................................................功能需求描述..................................................第三章总体设计………………………………………..……….…..模块设计........................................................................................程序的模块组成………………………………………………各个函数的主要功能…………………………….………...…..第四章详细设计…………………………………………………....系统的总体框图…………………………………………..相关的数据类型.........................................................................函数间的调用图.........................................................................流程图…………………………………………………… .....…第五章测试和结果………………………………………………....调试分析……………………………………………………..….使用说明......................................................................................运行结果截屏及说明………………………………………..第六章源程序…………………………………………………...…...第七章总结………………………………………………………......附录1、应用技术学院评分标准………………..…………………….....第一章前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
猜数字c语言课程设计

猜数字c 语言课程设计一、课程目标知识目标:1. 学生能掌握C语言中基本的数据类型和变量定义,尤其是整数类型的使用。
2. 学生能理解并能运用C语言中的随机数生成函数,掌握生成指定范围随机数的方法。
3. 学生能掌握C语言中的循环结构和条件判断语句,实现猜数字游戏的逻辑。
技能目标:1. 学生通过编写猜数字游戏程序,培养问题分析、程序设计和调试能力。
2. 学生能够使用C语言实现用户交互,掌握输入输出流的使用。
3. 学生通过小组合作,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生在编程过程中,培养解决问题的耐心和毅力,增强克服困难的自信心。
2. 学生通过编程实践活动,体验程序设计的乐趣,激发对计算机科学的兴趣和热情。
3. 学生在合作学习中,培养尊重他人、倾听他人意见的良好品质,形成积极向上的团队精神。
二、教学内容本节教学内容主要以C语言基础知识和程序设计方法为核心,结合教材以下章节内容进行组织:1. C语言基础知识:数据类型、变量定义和运算符。
- 教材章节:第二章第一节- 内容列举:整型数据类型、变量定义、基本运算符及其应用。
2. 控制结构:循环结构和条件判断语句。
- 教材章节:第三章- 内容列举:for循环、while循环、if-else条件判断语句及其嵌套。
3. 函数和模块化编程:函数定义、调用和参数传递。
- 教材章节:第四章- 内容列举:函数定义、返回值、形参与实参传递。
4. 随机数生成与用户交互:rand()函数、srand()函数和输入输出流。
- 教材章节:第六章第三节- 内容列举:生成随机数的方法、设置随机数种子、标准输入输出流的使用。
5. 猜数字游戏程序设计:分析需求、设计算法、编写代码和调试。
- 教学安排:结合以上章节内容,分阶段指导学生进行猜数字游戏程序设计。
根据以上教学内容,制定详细的教学大纲,明确教学内容的安排和进度,注重理论与实践相结合,使学生能够逐步掌握C语言编程技能,实现猜数字游戏的设计与开发。
C语言猜数游戏程序.

《C语言程序设计》课程设计说明书设计题目:猜数游戏班级:C语言课程设计2班学号:姓名:完成日期:2012.6.20目录1.设计任务 (2)2.需求分析 (4)2.1功能需求 (4)2.2性能需求 (4)3.设计算法 (4)4.系统模块图 (5)5.模块说明 (6)5.1 构建整体框架 (6)5.2 登陆系统 (6)5.3 主菜单系统 (7)5.4 游戏计算部分 (7)6.用户使用说明(部分操作截图) (8)6.1 进入系统 (8)6.2 登陆系统 (8)6.3 主菜单系统 (9)6.4 游戏介绍 (9)6.5 游戏帮助 (9)6.6 游戏界面 (10)6.7 退出游戏 (10)7. 测试结果 (11)8. 设计小结 (11)9. 参考文献 (12)10. 附录 (12)1.设计任务设计题目:猜数游戏(掌握程序结构及随机函数应用)程序说明:游戏的开始由机器产生一个随机数(1~100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH,try again. ,否则,程序提示:Your answer is LOW,try again.,直到猜对为止。
程序可实现连续猜数,直到游戏者退出。
程序输出要求:累计游戏者猜对一个数所需次数n,当n<=7时,给出“Congratulation”字样;当7<n<15时,给出“I can bet you can do it better.”;当n>=15时,用exit(0)库函数退出程序。
附:随机数发生器函数random()用法函数原型:int random(int num);程序例:#include <stdlib.h> /*包含库函数random()的头文件*/#include <stdio.h>/* prints a random number in the range 0 to 99 */int main(void){ int n;randomize(); /*初始化随机数发生器*/n= random (100); /*产生一个0-100的随机数。
猜数字c语言课程设计

猜数字c 语言课程设计一、教学目标本课程旨在通过学习C语言中的猜数字游戏,让学生掌握C语言的基本语法、数据类型、运算符、控制结构等知识,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:a.理解C语言的基本语法和规则;b.掌握整型、浮点型、字符型等数据类型及其运算符;c.学会使用if-else、while、for等控制结构;d.了解函数的定义和调用。
2.技能目标:a.能运用C语言编写简单的程序;b.具备调试和运行C语言程序的能力;c.学会编写猜数字游戏程序,并能根据需要进行修改和优化。
3.情感态度价值观目标:a.培养学生的编程兴趣,提高学生主动学习的积极性;b.培养学生团队协作、沟通交流的能力;c.使学生认识到编程在实际生活中的重要性,培养学生的创新意识。
二、教学内容本课程以猜数字游戏为主线,贯穿C语言的基本语法、数据类型、运算符、控制结构等知识点。
教学大纲如下:1.C语言概述:介绍C语言的历史、特点和应用领域;2.数据类型和运算符:讲解整型、浮点型、字符型数据类型及其运算符;3.控制结构:学习if-else、while、for等控制结构的使用;4.函数:介绍函数的定义、声明和调用,讲解常用库函数;5.猜数字游戏设计与实现:运用所学知识编写猜数字游戏程序,并进行调试和优化。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,激发学生的学习兴趣,提高学生的编程能力。
1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构等知识;2.案例分析法:通过分析典型案例,让学生学会编写猜数字游戏程序;3.实验法:让学生动手编写和调试程序,提高学生的实际操作能力。
四、教学资源1.教材:《C程序设计语言》(K&R);2.参考书:《C Primer Plus》、《C语言入门教程》;3.多媒体资料:教学PPT、视频教程;4.实验设备:计算机、编程环境。
教学资源将用于支持教学内容和教学方法的实施,帮助学生更好地学习C语言,提高编程能力。
c猜数字游戏课程设计

c 猜数字游戏课程设计一、课程目标知识目标:1. 让学生掌握猜数字游戏的基本规则和算法流程。
2. 使学生理解计算机随机数的概念及其在猜数字游戏中的应用。
3. 培养学生运用循环、条件判断等基本编程结构解决实际问题的能力。
技能目标:1. 培养学生运用编程语言实现猜数字游戏的编写与调试。
2. 提高学生分析问题、解决问题的能力,能够运用所学知识进行程序优化。
3. 培养学生的团队协作能力,学会与他人共同探讨、解决问题。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其探究精神。
2. 培养学生面对挑战时的坚持和耐心,形成积极向上的学习态度。
3. 培养学生遵守游戏规则,尊重他人,树立公平竞争的价值观。
课程性质:本课程为信息技术学科,以实践操作为主,注重培养学生的动手能力和逻辑思维能力。
学生特点:五年级学生,具备一定的信息技术基础,对编程有初步了解,好奇心强,喜欢动手操作。
教学要求:结合学生特点,课程设计应注重实践性、趣味性和挑战性,引导学生在实践中掌握知识,提高技能,培养情感态度价值观。
教学过程中,注重分层教学,关注每一个学生的学习进度,确保课程目标的实现。
通过本课程的学习,使学生能够达到预定的学习成果。
二、教学内容1. 猜数字游戏规则及算法流程介绍- 游戏规则讲解:介绍猜数字游戏的基本规则,让学生理解游戏的核心玩法。
- 算法流程分析:引导学生探讨猜数字游戏的算法流程,理解计算机随机数的产生和应用。
2. 编程语言基础- 循环结构:复习循环结构的使用,如for、while循环。
- 条件判断:回顾条件判断语句,如if、else if、else。
3. 猜数字游戏编程实践- 编程实现:指导学生利用所学编程知识,编写猜数字游戏程序。
- 调试与优化:教授学生如何调试程序,发现并解决常见问题,学会优化程序性能。
4. 教学内容安排与进度- 第一课时:介绍猜数字游戏规则及算法流程,复习编程语言基础。
- 第二课时:指导学生编写猜数字游戏程序,进行调试与优化。
猜数字c语言课程设计

猜数字c语言课程设计一、课程目标知识目标:1. 学生能理解C语言中随机数生成的原理,掌握rand()和srand()函数的使用方法。
2. 学生能运用C语言的基本语法和逻辑运算符,编写出猜数字游戏的基本结构。
3. 学生能掌握C语言中循环结构的运用,实现游戏多次猜数的功能。
技能目标:1. 学生能通过本课程,培养逻辑思维能力和问题解决能力,学会运用程序设计解决实际问题。
2. 学生能独立编写、调试并运行简单的C语言程序,完成猜数字游戏的开发。
情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,增强学习C语言的自信心。
2. 学生通过团队协作,培养沟通、协作能力和集体荣誉感。
3. 学生在游戏设计中,培养创新意识和探究精神,提高实践操作能力。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言编程入门课程,旨在让学生掌握C语言的基本语法和应用,培养编程兴趣。
2. 学生特点:学生为初中年级,具备一定的逻辑思维能力和计算机操作基础,对编程感兴趣。
3. 教学要求:结合学生特点,注重实践操作,鼓励学生动手编写代码,培养编程技能和问题解决能力。
二、教学内容1. C语言基本语法回顾:变量定义、数据类型、运算符、表达式。
2. 随机数生成:rand()和srand()函数的使用,生成指定范围的随机数。
3. 输入输出语句:printf()和scanf()函数的应用,实现用户与程序的交互。
4. 循环结构:for循环和while循环的使用,实现游戏多次猜数的功能。
5. 逻辑运算符:掌握逻辑与(&&)、逻辑或(||)和逻辑非(!)的运用,实现条件判断。
6. 分支结构:if-else和switch-case语句的使用,根据用户输入进行分支判断。
7. 游戏设计:猜数字游戏的规则说明,程序结构设计,编写各功能模块。
教学内容安排和进度:第一课时:C语言基本语法回顾,随机数生成,输入输出语句。
第二课时:循环结构,逻辑运算符,分支结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计题目:猜数字游戏
目 录
目录
目 录........................................................... - 1 -
1 程序分析与设计.................................................... 2
1.1 功能分析与任务分配 .......................................... 2
功能分析 ........................................................ 2
1.2流程图....................................................... 2
1.3 数据结构 .................................................... 4
2 详细设计.......................................................... 4
3 参考文献.......................................................... 5
4 附录.............................................................. 5
5总结 .............................................. 错误!未定义书签。
《C程序设计》课程设计实验报告
1 程序分析与设计
1.1 功能分析与任务分配
功能分析
此游戏程序通过不断输入以及逐渐数位对应的方法,一步步的缩小猜测范
围,最终猜出机内已存储数字,达到健脑益智的效果。
此数字游戏没有设置猜测次数的上限.
简单策略
这种策略非常直接——每次都猜可能答案中的第一个。例如,首先猜测
1234,如果得到的反馈是 2A2B,那可能的答案包括1256,1257,5236,
等等。根据简单策略,下一次就猜1256,因为1256是所有可能答案中最小
的数字。
简单策略的优点是速度非常快,缺点是所需猜测次数很多。
启发式策略
这类策略是猜数字游戏最常用的解法。其算法步骤如下:
a. 首先猜 1234,得到第一个反馈(xAyB)。
b. 从所有数字中,筛选出满足已知反馈的所有可能数字,称之为“可能
集”。
c. 对于所有数字(而不仅限于筛选出来的可能集),逐一评估每个数字
的“好坏”,并给其打分。选取得分最高的那个数字猜。如果有多个数
字的评分一样高,则优先选取可能集中的数字。
d. 重复步骤 b-c,直到猜出 4A4B为止。
(2)任务分配
李晓飞和谭程方同学:实现猜测数据后的*A*B编写功能,即规则c.
王璐和王爽同学 :实现统计每次猜对数字个数的功能,即规则d.
王鹏宇同学 :实现统计每次猜对的数字并且位置也对的数字个数,
即规则e.
(备注:在实际操作中由于每位同学所用变量习惯以及掌握程度不同,所
以此程序任务分配可能会部分的与上不符,最后还要对任课老师魏玉芬以
及指导老师丁艳清表示衷心的感谢,感谢两位老师给予我们的帮助!)
1.2流程图
《C程序设计》课程设计实验报告
Y
N
N
N Y
Y
N Y
开始
i<4
j<4
x[i]==y[i] j<4 输入y[j] x[i]==y[j]
输出n1
输出n2
n2==4
输入非0数字 输入0
输出“恭喜你答对了”
输出“正确答案是2569”
结束
n1An2B
《C程序设计》课程设计实验报告
1.3 数据结构
k 猜测的次数
b 一次猜测后用来判断是否继续进行新的猜测
n1 猜对的数字数
n2 猜对并且位置也对的数字数
i、j 用来表示两个数组的对应数位数
x[4]={2,5,6,9} 定义将要被猜测的数字为2569
y[4] 从键盘输入的四位数
2 详细设计
通过逐步减少范围来猜测正确结果
《C程序设计》课程设计实验报告
3 参考文献
[1]谭浩强著《C语言程序设计》北京:清华大学出版社 2005
[2]百度知道
4 附录
#include
void main()
{
int k,n1,n2,b,x[4]={2,5,6,9},y[4]; //定义将要被猜测的数字为2569//
int i=0,j=0;
for(k=1;;k++) //只要不放弃,就可以使猜测无数次的进行下去//
{
n1=0;n2=0; //n1用来统计猜对的数字数,n2用来统计猜对并且位置也对的
数字数//
printf("请输入四个不同的数字:");
for(j=0;j<4;j++)
scanf("%d",&y[j]);//用来输入四个不同的数字//
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(x[i]==y[j]) n1++; //统计n1//
}
for(i=0;i<4;i++)
if(y[i]==x[i]) n2++; //统计n2//
printf("%dA%dB\n",n1,n2);
printf("n1=%d,n2=%d\n",n1,n2); //给出本轮猜测的结果//
if(n2==4) break;
printf("如果想放弃,请输入0;如果不想放弃,请输入任意非零数字\n");
scanf("%d",&b);
if(b==0)
printf("正确答案是:2569");
else printf("请继续猜测\n");
}
if(n2==4)
printf("恭喜你答对了!");
}
《C程序设计》课程设计实验报告
5总结
C语言是我们在大学学习中接触的第一种计算机语言,将其作为我们学生学
习程序设计技术的入门课程,我想这与C语言的特点是分不开的。C语言不但可
以编写系统软件,而且可以根据用户的需要编写出满足用户要求的应用软件,尤
其是C语言具有很好的对计算机的硬件编程能力。同时,C语言具有逻辑性强、
处理问题周密、严谨的特点,是集知识和技能于一体,实践性很强的课程。我们
通过学习C语言可掌握程序设计的一些基本方法和技巧。然而C语言的数据类型
较多、表达式丰富、语法结构较复杂,使它成为一门教师难教、学生难学的课程。
就拿这次来说吧,程序是很简单的,但是遇到的困难也不少。下面我见对我们组
编的这套程序做一下概述:
我们选的是编写一个猜字游戏,要求才一个四位数字,每次猜完,要有一个
提示“*A*B”其中A前的*代表本次猜对了的数字,B前的*代表本次猜对了的数
字并且位置正确的个数。
由于程序较小,没有太过困难的地方,所以我们最主要用到的是for循环语句,
首先,假设这四位数是2569,我们定义n1,n2,让n1代表猜对的数字个数,让
n2代表猜对的数字并且位置准确的个数,然后再定义一个k是猜测的次数(这
里为了很好的显示猜测的过程),接下来开始执行这个语句,也就是我们利用的
for循环语句,for(j=0;j<4;j++)我们先把猜的数用这个循环体执行,进而输入
四个不同的数,for(j=0;j<4;j++) if(x[i]==y[j]) n1++;再用一次循环体统计
出n1,这样循环下去直至正确数字被猜出。同样n2也是如此。在编译过程中发
现利用for循环语句只用一条语句可以了,相对于do…while更简单一些。
程序大体编完了,但是分配是因为大家思想不同,对于不同的地方用的语句
不一致,所以在把所有程序整合到一起时,不能正常的运行,做了多处修改,最
后才能运行的,其次再将语句转为流程图时遇到了不小的麻烦,对一些较为复杂
的程序,转为ns图比较麻烦,有次看到我们的弊端,对于这种转化逻辑能力太
差,经过反反复复的修改总算完成。
在这次实习中我们的程序还有一个遗憾,算是缺陷吧!就是猜数字的数字是
事先用int定义好的,我们本意是在每次程序运行开始时,产生一个随机四位数,
《C程序设计》课程设计实验报告
这样需引用#include
放弃。这看出我们才学了些皮毛,对于一些高等的函数体不会引用,
我觉得还是多看些书,多实践,养成良好的编程习惯,在实践的同时多思考
问题,多看别人优秀的解题思路与方法,多看别人优秀的代码,尝试自己去实现
或者说模仿着去实现,让别人对你的代码多提意见,探究别人的思维过程,增强
自己的思维能力,尤其像这样的实习,我们应该多交流,多交换方法,才能进步。