请写一个猜数字程序游戏程序,在测试类中只能用5次,超过5次给出提示:游戏试玩结束,请付费。

51CTO旗下网站
4.8 综合运用--猜数字游戏
《C程序设计伴侣》本书的笔墨放在了彻底讲清楚难以理解的概念、重点和难点上,放在了帮助初学者建立良好的编程思想和符合业界标准的编程规范上,放在了从实际应用出发,指导初学者在实际开发和应用中遇到问题时如何思考和解决上。本节为大家介绍综合运用--猜数字游戏。
作者:陈良乔来源:人民邮电出版社| 16:12
4.8 综合运用--猜数字游戏
在这个小节中,谭老师给出了使用选择结构的综合范例,我们可以从中体会条件结构的使用场景和学习它的表达方法。特别是例4.8,给出了利用各种形式的条件结构解决同一个问题的不同方法和途径,我们应该仔细体会各种条件结构的特点,从而在我们的程序中灵活选用合适的选择结构。
这些范例还不过瘾?没关系,我们用条件结构来实现一个经典的猜数字游戏。从中我们不仅可以学到各种条件结构的运用,更能够体会到创造游戏比玩游戏更加快乐。
猜数字(又称 Bulls and Cows )是一种大概于20世纪中期兴起于英国的益智类小游戏。一般由两个人玩,也可以由一个人和电脑玩,在纸上、在网上都可以玩。这种游戏规则简单,但可以考验人的严谨和耐心,而这也正是程序员所需要的优秀品质。
标准规则如下:
通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。
我们发现,整个游戏的过程,实际上是一个逐个数字进行判断的过程,判断数字是否在正确的位置上;判断数字是否正确。而这些判断,正是条件结构的用武之地。根据游戏的规则,我们将这个游戏实现如下。其中可能有某些函数我们还不太熟悉,没关系,我们只要清楚这些函数的作用,在稍后的章节中,我们会做更加详细的介绍。#include&&//&引入随机函数srand()、rand()所在的头文件 &#include&&//&引入时间函数time()所在的头文件 &#include&&//&引入字符查找函数strchr()所在的头文件 &#include&&& &&int&main() &{ &&&&&//&定义保存目标数字的字符数组 &&&&&char&bull[5]&=&""; &&&&&srand((int)time(NULL)); &&&&&//&利用rand()函数产生一个四位随机数, &&&&&//&并利用sprintf()函数将其转换成字符串,保存在bull字符数组中 &&&&&sprintf(bull, &&&&&&&&&"%d",&rand()%10000); &&&&& &&&&&//&定义表示猜测数字的字符数组 &&&&&char&cow[5]&=&""; &&&&&//&定义表示猜测状况的A和B &&&&&int&A&=&0; &&&&&int&B&=&0; &&&&&//&猜测次数,最开始是第一次 &&&&&int&count&=&1; &&&&& &&&&&//&构造一个循环结构,只要没有完全猜对, &&&&&//&就继续下一次猜测 &&&&&while(4!=A) &&&&&{ &&&&&&&&&//&判断是否超过次数限制 &&&&&&&&&//&最多猜测10次 &&&&&&&&&if(count&&10)&&& &&&&&&&&&{ &&&&&&&&&&&&&puts("sorry,you&lost.&:-("); &&&&&&&&&&&&&//&跳出猜测循环,结束游戏 &&&&&&&&&&&&& &&&&&&&&&} &&&&&&&&&//&输出当前次数 &&&&&&&&&printf("%d&:",count); &&&&&&&&&&//&获取用户输入的猜测数字 &&&&&&&&&//&因为需要与目标数字进行比对, &&&&&&&&&//&所以将输入作为字符串(%s),而不是作为一个整数(%d) &&&&&&&&&scanf("%s",cow); &&&&&&&&&//&采用循环结构,逐个字符比对输入数字(cow)和目标数字(bull) &&&&&&&&&for(int&i&=&0;&i;&++i) &&&&&&&&&{ &&&&&&&&&&&&&//&判断当前字符是否相同 &&&&&&&&&&&&&if(bull[i]&==&cow[i]&) &&&&&&&&&&&&&{ &&&&&&&&&&&&&&&&&//&如果相同,则表示数字正确且位置正确, &&&&&&&&&&&&&&&&&//&A的值增加1 &&&&&&&&&&&&&&&&&++A; &&&&&&&&&&&&&} &&&&&&&&&&&&&else&&//&否则,判断当前数字是否是正确数字 &&&&&&&&&&&&&{ &&&&&&&&&&&&&&&&&//&在目标字符串中查找当前字符 &&&&&&&&&&&&&&&&&char*&p&=&strchr(&bull,&cow[i]); &&&&&&&&&&&&&&&&&//&如果p不是一个空指针(C语言中用NULL或者0表示), &&&&&&&&&&&&&&&&&//&则表示目标字符串中有这个字符,当前字符是正确数字, &&&&&&&&&&&&&&&&&//&B的值增加1 &&&&&&&&&&&&&&&&&if(0&!=&p) &&&&&&&&&&&&&&&&&&&&&++B; &&&&&&&&&&&&&} &&&&&&&&&} &&&&&&&&&//&输出此次猜测的结果 &&&&&&&&&printf("%s&:&%dA%dB\n",cow,A,B); &&&&&&&&&//&如果完全猜测正确,则输出最终结果,结束游戏 &&&&&&&&&if(4&==&A) &&&&&&&&&{ &&&&&&&&&&&&&printf("you&win!&the&bull&is&%s.",bull); &&&&&&&&&&&&& &&&&&&&&&} &&&&&&&&&//&否则,开始下一次猜测,次数增加1,A和B数据归零 &&&&&&&&&++ &&&&&&&&&A&=&0; &&&&&&&&&B&=&0; &&&&&} &&&&&& &&&&&return&0; &} &
在这个例子中,我们多次用到了条件结构,在不同的场景下,条件结构发挥着不同的作用。首先是在while语句中的一个简单条件判断(if(count & 10) ),它会根据当前次数(count)是否小于最大次数限制而决定是否结束整个游戏;其次就是for语句中的一个嵌套的条件结构,它会首先判断当前字符是否与目标字符相同,如果相同则让A的值增加1,反之,则利用嵌套的条件结构开始第二次判断,看当前字符是否在目标数字字符串中,如果在(0 != p),则表示当前字符是一个正确数字,B的值相应地增加1;最后,我们还会用条件结构判断此次猜测是否完全正确(if(4 == A)),如果完全正确,就输出结果,结束游戏循环,反之,则数据归零并开始下一次循环。这个例子,综合地展示了条件结构对程序执行流程的控制,我们可以用条件结构来判断循环是否需要提前结束;可以判断是否满足某个条件而执行某些动作(如果猜测完全正确,就输出最终结果);也可以将条件结构与for语句组合使用,对某一个序列的数据(数组)进行逐个判断;我们更可以将条件结构嵌套,实现多个条件的逐级多个判断。
实际上,我们这里利用随机数产生一个四位数的方法是存在缺陷的,例如,它无法保证所有产生的数字都是四位数,即使是四位数,它也无法保证这个四位数的所有数字都不相同。这样,就要求我们使用条件结构对数字的合法性进行验证。这个问题,就留给大家自己去动手解决了,相信大家一定可以利用条件结构解决这个问题,从中体会到编程的乐趣。
总之,条件结构在C语言中的应用方式是灵活多样的,我们应该在实践中合理地加以选用,以达到对程序流程的灵活控制。【责任编辑: TEL:(010)】&&&&&&
大家都在看猜你喜欢
热点热点头条头条热点
24H热文一周话题本月最赞
讲师:30675人学习过
讲师:30572人学习过
讲师:51945人学习过
精选博文论坛热帖下载排行
本书由Symantec首席反病毒研究员执笔,是讲述现代病毒威胁、防御技术和分析工具的权威指南。与多数讲述计算机病毒的书籍不同,本书完全是...
订阅51CTO邮刊404错误,没有找到您想要进入的页面
您访问的页面不存在!!!
您可以返回 &或者&
为您推荐热门产品求用shell编写简单的猜数字游戏的程序,要求用case和while语句。急!_百度知道
求用shell编写简单的猜数字游戏的程序,要求用case和while语句。急!
我有更好的答案
#!/bin/shwhile [ 1 ]doread -p "please enter a number between 1 to 100: " numbercase $number in&&&&13)&&&&&&&&echo "you get the first prize"&&&&;;&&&&71)&&&&&&&&echo "You get the second prize"&&&&;;&&&&23)&&&&&&&&echo "You get the third prize"&&&&;;&&&&*)&&&&&&&&echo "You lose"&&&&;;esacdone
请问,程序要是先输入随便的数字,然后用case语句,最后用while语句判断该怎么编写呢?
#!/bin/shread -p "please enter a number between 1 to 100: " numbercase $number in&&&&13)&&&&&&&&prize=1&&&&;;&&&&71)&&&&&&&&prize=2&&&&;;&&&&23)&&&&&&&&prize=3&&&&;;&&&&*)&&&&&&&&prize=4&&&&;;esacwhile [ $prize -gt 0 ]do&&&&if [ $prize -eq 1 ];then&&&&&&&&echo "You get first prize"&&&&elif [ $prize -eq 2 ]; then&&&&&&&&echo "You get second prize"&&&&elif [ $prize -eq 3 ]; then&&&&&&&&echo "You get third prize"&&&&else&&&&&&&&echo "You lose"&&&&fi&&&&break&&done
采纳率:67%
来自团队:
1-100这个范围太大,难度太高,还是在1-20范围内猜猜吧。数字随机,玩起来更有意思。
#!/bin/shmax=20while truedo
read -p &Please enter a number [1-$max]: & num
let rand1=&RANDOM % max + 1&
let rand2=&RANDOM % max + 1&
let rand3=&RANDOM % max + 1&
case $num in
echo &Bingo! You win First Prize.&;
echo &Congratulations! You win Second Prize.&;
echo &Not bad! You win Third Prize.&;
echo &Bad luck! You lose.&;
为您推荐:
其他类似问题
猜数字游戏的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 猜数字程序 的文章

 

随机推荐