c语言编程--猜数字游戏
猜数字游戏c语言课程设计

猜数字游戏 c语言课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中随机数生成的原理和方法。
2. 学生能运用分支结构、循环结构等基本控制结构,编写出猜数字游戏的程序。
3. 学生掌握使用函数对程序进行模块化设计的方法。
技能目标:1. 学生能够运用所学知识,独立设计并实现一个简单的猜数字游戏。
2. 学生通过编程实践,提高问题分析、程序设计及调试的能力。
3. 学生能够在编程过程中,培养良好的编程习惯,如规范命名、添加注释等。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣,激发学习C语言的积极性。
2. 学生通过合作交流,培养团队协作能力和沟通能力。
3. 学生在解决实际问题的过程中,体会编程带来的成就感,增强自信心。
分析课程性质、学生特点和教学要求,本课程目标旨在让学生通过学习猜数字游戏的设计与实现,掌握C语言的基本知识,提高编程实践能力。
课程将目标分解为具体的学习成果,使学生在完成课程后,能够独立编写简单的猜数字游戏,并具备一定的程序调试能力。
同时,通过课程学习,培养学生良好的编程习惯和团队合作精神。
二、教学内容1. C语言基础知识回顾:变量定义、数据类型、运算符和表达式。
2. 随机数生成:rand()函数、srand()函数、time()函数的使用方法及其在猜数字游戏中的应用。
3. 控制结构:分支结构(if-else)、循环结构(for、while)在猜数字游戏中的运用。
4. 函数定义与调用:模块化设计思想,实现猜数字游戏的各个功能模块。
5. 程序调试与优化:学习使用调试工具,分析程序运行过程中的问题,提高程序性能。
教学内容安排和进度:第一课时:回顾C语言基础知识,介绍随机数生成方法。
第二课时:讲解分支结构和循环结构在猜数字游戏中的应用。
第三课时:学习函数定义与调用,实现猜数字游戏的模块化设计。
第四课时:程序调试与优化,讲解编程技巧和良好编程习惯。
教材章节关联:1. C语言基础知识:参照教材第一章。
c语言课程设计猜数字

c语言课程设计猜数字一、教学目标本课程的教学目标是使学生掌握C语言编程的基本方法,能够运用C语言编写简单的猜数字游戏。
具体分为以下三个部分:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,为编写猜数字游戏打下基础。
2.技能目标:培养学生运用C语言进行编程的能力,使其能够独立完成猜数字游戏的编写和调试。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,使其认识到编程在实际应用中的重要性,提高其动手实践能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型:变量、常量、数据类型、运算符等。
2.控制结构:条件语句、循环语句等。
3.函数:用户自定义函数、标准库函数等。
4.猜数字游戏的设计与实现:游戏规则、程序框架、核心算法等。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,使学生掌握编程的基本概念。
2.案例分析法:通过分析典型的猜数字游戏案例,使学生了解游戏的设计思路和实现方法。
3.实验法:让学生动手编写和调试猜数字游戏,培养其编程能力和实践能力。
四、教学资源本课程的教学资源包括以下几个部分:1.教材:《C程序设计语言》等。
2.参考书:《C Primer Plus》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、编程环境等。
5.网络资源:在线编程平台、开源代码库等。
五、教学评估本课程的评估方式包括以下几个部分:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
2.作业:布置相应的编程作业,评估学生的编程能力和对知识的掌握程度。
3.考试:进行期中和期末考试,全面测试学生的C语言编程能力和应用能力。
评估方式应客观、公正,能够全面反映学生的学习成果。
同时,注重鼓励学生,激发其学习兴趣和自信心。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生在每个阶段掌握相应的知识点。
猜数字游戏源代码

猜数字游戏本案例知识要点●Visual C++ 6.0下创建Win32 Console Application并运行的方法●C++程序中类的定义和实现●C++程序中类文件的引用及类的实例化一、案例需求1.案例描述由计算机产生0到99的随机数,游戏参加者将猜到的数字从键盘输入,计算机对猜数结果进行判断直到猜出正确结果。
2.案例效果图猜数字游戏运行效果如图2-1所示。
3.功能要求(1)所猜0到99的目标数字由计算随机产生。
(2)0到99的随机数的产生、所猜数字和目标数字的比较等过程以类的形式实现。
(3)若游戏参加者所猜数字正确,则提示所猜总次数;若猜数错误,则提示所猜数字比目标数字大还是小。
二、案例分析本案例中设计了一个Guess类,实现产生随机数、进行参加游戏者输入数字与目标数字的比较、计算猜数次数。
主程序中通过类的实例化实现猜数过程。
三、案例设计为了实现猜数过程,设计Guess类,结构如图2-2所示。
●数据成员int Value产生的0到99间的目标数字。
int CompareTimes为游戏者已猜次数。
●函数成员Guess()构造函数,用来产生随机目标数字。
int Compare(int InputValue)用来判断游戏者所猜数字是否正确,其参数InputValue为游戏者所猜数字。
int GetCompareTimes()用来获得游戏者已猜次数。
五、案例实现猜数字游戏源程序代码如下所示。
************************************* // * Guess.h 类声明头文件************************************* #1. #include <time.h>#2. class Guess#3. {#4. private:#5.int Value; //计算机产生的目标数字#6. int CompareTimes; //所猜次数#7. public:#8. Guess(); //构造函数的声明#9. int Compare(int InputValue); #10. int GetCompareTimes();#11. };#12. Guess:: Guess ()//构造函数的实现#13. {#14. CompareTimes=0; //猜数次数置零#15. srand((unsigned)time(NULL)); //产生随机数种子#16. Value=rand()%100;//产生0~99的随机数#17. }#18.int Guess::Compare(int InputValue)//比较猜数是否正确#19. {#20. CompareTimes++; //所猜次数加1 #21. return InputValue-Value;//比较所猜数字和目标数字是否相同,相同//返回0#22. }#23. int Guess::GetCompareTimes()//获得已猜次数#24. {#25. return CompareTimes;#26. }//************************************* //* GuessNumber.cpp 源文件************************************* #1. #include <iostream>#2. #include "Guess.h"//将已定义的类文件包含到主程序文件中#3. using namespace std;#4. int main()#5. {#6. int InputValue;#7.cout<<"\n** 欢迎使用本程序**\n"; #8. for(;;)#9. {#10. char Select;#11. Guess guessobj;//实例化Guess类#12. cout<<"我已经想好数字啦(0~99),请猜吧!\n";#13. for(;;)#14. {#15. int CompareResult; #16. cout<<"\n我想的是:";#17. cin>>InputValue;//获得游戏者输入的所猜数字#18. CompareResult=pare (InputValue);//判断游戏者所猜数字是否正确#19. if(CompareResult==0) //正确#20. {#21. int GuessTimes=guessobj.GetCompareTimes(); #22. cout<<"\n恭喜您,猜对啦!"<<endl <<"您一共猜了"<<GuessTimes<<"次"<<endl;#23. break;#24. }#25. else if(CompareResult>0)#26. {#27. cout<<"\n对不起,您猜的数大啦!\n";#28. }#29. else#30. {#31. cout<<"\n对不起,您猜的数小啦!\n";#32. }#33. }#34. cout<<"\n您还想再玩吗?('n'=No,Others=Yes)\n";#35. cin>>Select;#36. cout<<'\n';#37. if(Select=='n'||Select=='N')#38. {#39. break;#40. }#41. }#42. cout<<"********** 感谢您的使用! **********\n";#43. return 0;#44. }六、案例总结与提高1.案例总结(1)本案例的重点是介绍Visual C++ 6.0下创建并运行一个C++Win32控制台应用程序的基本过程。
C语言猜数游戏代码

#include <stdio.h>#include <math.h>#include <stdlib.h>#include <time.h>int i;long int rn();void fun();void gc();int input(long int);void grade(int);int welcome();int compare(long int,long int);void choise(int *,int);void main(){system("cls");printf("\n\n\n\t\t* * * * * * * * welcome * * * * * * * *");printf("\n\n\n");printf("\t\t\tmaker: xiachao xiaoyuyan");printf("\n\n\n\t\t\tuse enter to be continue");getch();fun();}void fun(){int b,s,g;long int a;system("cls");s=welcome();if(s==1){system("cls");a=rn();b=input(a);grade(b);gc();}if(s==2){system("cls");printf("\n\n\n\n\n");printf("\t---------------------------------------------------------\n");printf("\t|game rules: |\n");printf("\t||\n");printf("\t|input your number(10000--99999),it will compare to the |\n");printf("\t||\n");printf("\t|system's number(10000--99999),and the number doesn't have|\n");printf("\t||\n");printf("\t|same digit. |\n");printf("\t||\n");printf("\t|if your number as same as system,your win,else try again.|\n");printf("\t||\n");printf("\t ---------------------------------------------------------");gc();}if(s==3){printf("\n\n\t\t\tThanks for your using.\n");printf("\t\t\t\tBye Bye!");getch();exit(0);}}long int rn(){int b,d;long int c;unsigned long int a;int array[5];time_t t;time(&t);srand(t);loop1:a=10000+rand() % 90000;c=a;for(i=0;i<5;i++){array[i]=c%10;c=c/10;}choise(array,5);b=array[0];for(i=1;i<5;i++){if(b==array[i])goto loop1;elseb=array[i];}return a;}void choise(int *num,int n){int j,k;for(i=1;i<n;i++){k=num[i];j=i-1;while((j>=0)&&(num[j]>k)){num[j+1]=num[j];j--;}num[j+1]=k;}}int compare(long int a,long int b) {int c;if(a>b){printf("\t\t\tneed greater!");printf("( >%ld )\n",b);c=0;}if(a<b){printf("\t\t\tneed less!");printf("( <%ld )\n",b);c=0;}if(a==b){printf("\t\t\tIt's true!\n");c=1;}return c;}int input(long int a){int c=0;long int b;printf("\n\n\n\n\n");printf("\t\t\tplease input your number:\n");printf("\t\t\tinput 0 back to main menu.");loop2:printf("\n\t\t\ttimes %d:",c+1);scanf("%ld",&b);c++;if(c>67){printf("\t\tyou are lose!");gc();}if(b==0)fun();elseif(compare(a,b)!=1) goto loop2;return c;}void grade(int num){int grade=0;printf("\t\t\tyou use %d times\n",num);if(num<4)grade=100-10*(num-1);else if(num<8)grade=80-5*(num-3);else if(num<68)grade=60-(num-7);printf("\t\t\tyour grade is %d",grade);switch(num){case 1:printf("\tyou are so lucky!!!");break;case 2:case 3:case 4:printf("\tlucky!");break;case 5:case 6:case 7:case 8:case 9:printf("\tgreat!");break;case 10:case 11:case 12:case 13:case 14:case 15:case 16:printf("\tgood!");break;case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25: printf("\tjust so so.");break;default:printf("\tmaybe you can better.");}}int welcome(){int s;printf("\n\n\n\n");printf("\t\t********************************************\n");printf("\t\t* *\n");printf("\t\t* welcome paly the game! *\n");printf("\t\t* *\n");printf("\t\t* input 1: start the game *\n");printf("\t\t* input 2: help information *\n");printf("\t\t* input 3: quit the game *\n");printf("\t\t********************************************\n");printf("\t\tplease select: ");scanf("%d",&s);return s;}void gc(){int a;printf("\n\n\t\tinput 1: quit the game;\tinput 2: back to menu.\n");printf("\n\t\tplease select : ");scanf("%d",&a);if(a==1)exit(0);if(a==2){system("cls");fun();}if(a!=1&&a!=2){printf("\t\tinput error!check your input!\n\n");gc();}}。
C语言课程设计--猜数字游戏

课程设计报告课程名称C语言程序设计课题名称猜数字游戏专业机械设计及其自造化班级1185班学号201113090516姓名指导教师王颖2 0 1 2年6 月2 2 日湖南工程学院课程设计任务书课程名称C语言程序设计课题猜数字游戏专业班级机械设计1185 班学生姓名学号201113090516指导老师王颖审批王颖任务书下达日期2012 年6 月 1 日任务完成日期2012 年6 月22 日设计课题四:猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:1、本游戏显示这样的菜单:(1)随机产生数据(2)用户输入数据(3)退出游戏2、游戏成功与否都能返回主菜单三、算法提示:1、数据结构:数组2、用简单的程序设计方法四、测试数据:测试数据: 3792第一次输入: 12340A2B第二次输入: 56780A1B第三次输入: 08670A1B第四次输入: 97861A1B第五次输入: 17942A0B第六次输入: 27932A2B第七次输入: 37924A0B游戏过关!!!五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
目录第一章绪论 (1)第一节项目背景 (1)第二节本课题所做的工作 (2)第二章需求分析第一节用户需求分析 (3)第二节开发环境分析 (4)第三章程序设计 (5)第一节程序的功能 (5)第二节输入输出的要求 (5)第三节程序模块 (6)第一条模块组成 (6)第二条层次结构 (8)第三条模块调用 (9)第四章分析 (10)第一节模块解释与功能 (10)第五章调试 (14)第一节菜单测试 (14)第二节游戏测试 (16)第一条在自定义中 (16)第二条在随机游戏中 (19)第六章总结 (21)第七章附录 (23)第一节附录A 源程序 (23)第二节附录B 参考文献 (32)课程设计评分表 (33)第一章绪论第一节项目背景C语言一共有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。
几个简单有趣的c语言代码

几个简单有趣的c语言代码一、引言程序设计语言是计算机语言的一种,用于定义和编写计算机程序。
C语言是一种高级程序设计语言,由AT&T贝尔实验室的Dennis M. Ritchie于1972年开发。
C语言在软件开发中得到广泛应用,因其灵活性、效率和可移植性而备受开发人员的喜爱。
本篇文章将介绍几个简单有趣的C语言代码,用以展示C语言的魅力和应用。
二、Hello World1. 代码#include <stdio.h>int main() {printf("Hello, World!");return 0;}2. 解析这是C语言中最简单的程序,用于输出”Hello, World!“。
在代码中,printf函数用于打印消息到控制台,return 0表示程序正常执行结束。
编译并运行该程序,控制台将输出”Hello, World!“。
三、猜数字游戏1. 代码#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int secretNumber, guess, attempts = 0;srand(time(0));secretNumber = rand() % 100 + 1;printf("猜数字游戏开始!\n");do {printf("请输入一个猜测的数字:");scanf("%d", &guess);attempts++;if (guess > secretNumber) {printf("太大了!\n");} else if (guess < secretNumber) {printf("太小了!\n");} else {printf("恭喜你猜对了!你用了 %d 次尝试。
C语言——猜数字游戏代码

C语言——猜数字游戏代码#include#include#includeint x[4],y[4];//x是计算机产生的数字,y是玩家输入的数字void begin(void);//初始页void start(void);//开始游戏void creat_num(void);//创建数字int judgenum(int *n);//判断输入数字是否正确int judgeA(int *a,int *b);//获取Aint judgeB(int *a,int *b);//获取Bvoid win(void);//赢游戏void lose(void);//输游戏/************************************************************** ***********/int main() /*主函数*/{char PRESS; /*按键变量*/int i,A,B,outwhile=0; /*outwhlie为跳出循环标志*/begin(); /*显示初始页面和游戏说明*/do{scanf("%c",&PRESS); /*获取按键*/fflush(stdin); /*清除缓存*/switch(PRESS){case 'e':case 'E':exit(0);break; /*退出*/case 's':case 'S': /*是开始键*/start(); /*开始新游戏*/for(i=1;i<=8;i++) /*循环8次*/{y[0]=y[1]=y[2]=y[3]=-1;/*输入前使y置于-1*/printf("\n请输入第%d个四位数,各位之间以空格隔开:",i); do{scanf("%d%d%d%d",&y[0],&y[1],&y[2],&y[3]);fflush(stdin);/*清除缓存*/if(judgenum(y)==0) /*判断输入是否合法*/printf("输入数字不合法,请重新输入:");}while(!judgenum(y));A=judgeA(x,y); /*获取A*/B=judgeB(x,y); /*获取B*/if(A==4)break; /*如果A等于4,跳出循环*/printf("%dA%dB\n",A,B);printf("继续输入(c)看答案(a)离开(e)\n");outwhile=0; /*置零*/while(outwhile==0){scanf("%c",&PRESS);fflush(stdin); /*清除缓存*/switch(PRESS){case 'c':case 'C':outwhile=1;break;/*继续输入*/case 'a':case 'A':outwhile=1;goto out;break;/*看答案,认输*/ case 'e':case 'E':outwhile=1;exit(0);break;/*退出游戏*/default :printf("输入错误,请重新输入:");break;/*输入错误*/}}}out:if(A==4) win(); /*A等于4时赢*/else lose(); /*A不等于4时输*/break;default :printf("输入错误,请重新输入:");break; /*输入错误*/ }}while(1);return 0;}/*主函数结束*//************************************************************** *****************/void begin(void)//初始页和帮助{printf("\n\n\n\n\n");printf("******************************************************* *************\n");printf(" 猜数字游戏\n");printf("游戏帮助:\n");printf(" 每局游戏,计算机将随机产生一个四位整数,这个整数各个位上的数字都\n");printf("不重复,且首位可以为0。
C语言程序课程设计-猜数字游戏

C语言程序设计课程设计专业:自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2015年07月21日一.引言1.1设计目的复习和巩固C语言基础知识,进一步加深对C语言的理解和掌握。
提高同学将课本上的理论知识和实际结合的能力,锻炼同学的分析解决实际问题的能力,提高同学团队合作的能力。
使同学们善于观察和思考,善于合作,具备实践编程的基础素质,和实际问题分析的思考方式。
1.2设计要求在设计时充分地分析和理解问题本身,综合考虑系统功能,怎样使系统结构清晰、合理、简单和易于调试。
然后详细设计,确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。
最后认真完成课程设计说明书,并对设计方法,结果等进行总结。
充分地分析和理解问题本身,弄清要求做什么(What to do?)。
在确定解决方案框架过程中(How to do?),综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。
确定算法的主要流程,在此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。
上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:(1)用一组测试数据手工执行程序;(2)通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
二.基础题2.1题目用选择法对10个数进行排序。
有一个已排好序的数组。
现输入一个数,要求按原来的规律插入到原数组中。
2.2解题思路程序的主要功能是对数组元素用排序函数按从小到大的顺序进行排序。
先定义一个10个元素的一维数组a[10],然后从电脑输入10个数(也就是对数组赋值),然后使用一次fun()函数,对这10个数进行排序;然后再定义一个11个元素的一维数组b[11],同时再从电脑输入一个数同a[10]一起赋值给b[11],然后再使用fun()函数,重新排序的到最后的有顺序的一组数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机实习报告
面向过程编程
用C语言求解实际问题
一、问题描述
游戏类第15个任务——猜数字游戏
任务描述:
计算机从0~9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数(0不出现在首位),然后让玩家猜该数。
若玩家猜对该数,游戏则结束;若玩家猜得不对,则计算机告知玩家,数字猜对了且位置也正确的数字有几个;数字猜对了但位置不正确的数字有几个,然后让玩家继续猜。
对每个数玩家最多有m(m>0)次猜的机会。
功能要求:
①玩家可自行设置被猜数的位数n和最多猜测机会数m。
②玩家可用键盘输入其所猜数,也可通过鼠标点选数字给出其所猜数。
③当玩家没有猜对时,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数,且显示文字要直观、易理解。
例如,正确答案为52467,玩家所猜为53269,则有2个数字(即5和6)数字对位置也对;有1个数字(即2)数字对但位置对。
④玩家猜测m次后仍未猜对,则向玩家公布答案,并询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
⑤当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
⑥玩家可以在游戏进行过程中选择放弃继续猜数。
玩家放弃继续猜数后,询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
⑦若玩家猜对数字后选择退出游戏时,询问玩家是否记录其成绩,如果选择记录,则进一步要求玩家输入用户名;否则,直接退出。
⑧游戏维护一个排行榜,按照猜对一个5位数所用猜测次数由少到多的顺序排序,并在记录完玩家成绩后显示给玩家。
二、需求分析
1)猜数字游戏软件的功能有:
进入主菜单,输入挑战的次数,输入猜测的数字,若在此次数之内没有猜对,则提示挑战失败,是否继续挑战。
若挑战过程中途放弃,则提示是否继续挑战。
若挑战成功,则提示是否记录成绩,输入用户名,计入排行榜。
排行榜会按照猜测次数由小到大进行排序。
在猜数字的过程中,每猜一个数字都会提示,数字正确且位置正确的个数是,数字正确但位置不正确的个数是,提示用户继续输入。
2)输入要求:
应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需要,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
3)输出要求:
(1)应用程序运行后,在屏幕上显示一个菜单。
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
三、程序设计
针对需要做如下设计:
(1)数据结构设计
1、定义一个结构体数组,储存用户名。
struct paihang
{
char name[N];/*用户名*/
}s[N],s1,s2;
2、第一一个全局变量的数组,存储用户输入与系统随机数比较中相同的数字
int w[N];
int q=0;
(2)模块设计
本模块主要实现功能的选择
1. 定义一个主函数菜单,选择开始游戏,退出,进入排行榜。
2. 比较用户输入的数与系统随机数是否相同,利用取余的方法,用用户输入的个位数与系统随机数的个位相比,十位与十位相比,以此类推,相同记录加一,得到数字相同,位置也相同的个数。
利用取余的方法,用用户输入的个位数与系统随机数的每一位比较,相同加一,并将相同的数字存储到数组中方便查询。
然后,比较输入的数字的每一位,利用取余的方法,用个
位与十位相比,若相同,则比较数组中是否含有这个数,含有则减一,跳出循环,由十位与百位相比,不含有则继续,以此类推,得到数字相同的个数,用数字相同的个数减去数字相同位置不同的数字个数。
3. 建立一个排行榜,将猜对的次数进行保存,并按由小到大的次数进行排行。
(3)主程序设计
调用一个菜单函数,显示开始进入游戏,排行榜,退出游戏,排除非法输入。
四、程序实现
(这一部分主要是说子程序的实现,以及引用的语言资源。
具体来说,就是给出程序模块的实现)
(1)程序总体思路:
进入主页面菜单,选择管理员模式或用户模式。
管理员模式要输入密码,方可进入。
选择录入,修改和删除歌曲信息。
用户模式中,包含各种查询功能,按编号,属性,歌曲名笔画,歌手名字的字典顺序,作者名字的字典顺序进行查询,点播。
(2)各模块函数的实现
1. void menu()主菜单信息函数
进入主菜单,输入挑战的次数,排除非法输入。
2.void cai()实现猜数字功能函数
输入一个五位数,排除非法输入,当玩家没有猜对时,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数。
当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
玩家可以在游戏进行过程中选择放弃继续猜数。
玩家放弃继续猜数后,询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
若玩家猜对数字后选择退出游戏时,询问玩家是否记录其成绩,如果选择记录,则进一步要求玩家输入用户名;否则,直接退出。
3. void amenu()排行榜功能函数
按照猜对一个5位数所用猜测次数由少到多的顺序排序。
4.void jieshu()结束游戏函数
提示‘谢谢您的参与,再见!!’
(3)菜单的实现
程序主菜单在主程序中,实现伪代码是:
先输出菜单的基本信息,再进行选择:
int number,ret;
printf("\n\t******************************************************\n\n");
printf("\t******************欢迎进入猜数字游戏******************\n\n");
printf("\t\t1.开始游戏"); printf("\t\t3.结束游戏\n\n");
printf("\t\t2.排行榜");
printf("\n\n\t******************************************************\n");
do{
do{
printf("\n 请选择选项(1-3):");
ret=scanf("%d",&number);
if(ret!=1)
{
printf("输入错误,请重新输入");
fflush(stdin);
}
}while(ret!=1);
}while(number>3);
switch(number)
{
case 1: system("cls");cai();break;//开始游戏
case 2: system("cls");amenu();break;//排行榜
case 3: system("cls");jieshu();break;//结束游戏
五、程序测试猜数字游戏主菜单
游戏中
开始
用户输入,开始游戏
输入一个五位数
输入挑战次数
判断是否与随机数相同
相同
否
是
进行下一次判断
结束
退出游戏
六、设计小结
本程序完成了猜数字游戏的功能,可以实现每猜一次数字,都提示数字与位置都相同和数字相同但位置不同的个数,以及记录成绩,实现排行榜等。
优点是,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数,且显示文字要直观、易理解。
七、使用说明
本程序提交的是for DOS源代码3.cpp,所以用VC打开该程序3.cpp,再经过编译、连接,将简单抓图1中的主菜单,以后根据屏幕上的提示操作就可以进行猜数字游戏了。
八、附录
程序源代码参见C语言程序文件3.cpp。
其中有详细的注释解释了各模块的功能及主要语句的作用。