vc6.0c语言猜数字游戏次数1000-1999并输出次数,可结束。

简单猜数字问题(C语言)_百度知道
简单猜数字问题(C语言)
#include&stdio.h&
#include&math.h&
void compare(int x,int y);
srand((unsigned)time(NULL));
num=(rand()%);/*随即产生一个的数*/
printf(&%d\n&,num); /*输出产生的数字;*/
printf(&p...
我有更好的答案
scanf(&%d\n&,&n);
scanf(&%d&,&n);
输入的时候换行?还有这些代码是不是没有写完整我在VS2008上调试少了几个头文件!#include&stdio.h&#include&stdlib.h&#include&time.h&#include&math.h&void compare(int x,int y);void main(){ int a, srand((unsigned)time(NULL)); num=(1000+rand()%9000);/*随即产生一个的数*/ printf(&%d\n&,num); /*输出产生的数字;*/ printf(&please write in a four figures:&); scanf(&%d&,&a);/*输入第一个数;*/ compare(a,num); /*调用函数,产生的数与输入的数比较;*/}int count1=0;int count2=0;int sum=0;void compare(int x,int y){ if(x&y) {printf(&The number is
bigger.\n&); printf(&please write in a four figures again:\n&); scanf(&%d&,&n); count1=count1+1; /*记录输入数比产生数小的次数;*/ compare(n,y); /*继续调用函数比较;*/ } if(x&y) {
printf(&The number is
smaller.\n&);
printf(&please write in a four figures again:\n&);
scanf(&%d&,&n);
count2=count2+1; /*记录输入数比产生数大的次数;*/
compare(n,y); } if(x==y) {printf(&your are right.&); printf(&The number is %d.\n&,y);/*输出这个数*/ printf(&The step is %d.\n&,(count1+count2));}/*输出一共用了多少步骤*/}
采纳率:23%
你的所有的scanf()中都多了一个无用的\n,去掉它即可。 还有,程序用到了time(),srand()以及rand()函数,应该包含time.h和stdlib.h头文件
为您推荐:
其他类似问题
猜数字的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言编程题(设计一个猜数字的小游戏)满意再加200分!!!!_百度知道
C语言编程题(设计一个猜数字的小游戏)满意再加200分!!!!
游戏规则:① 游戏软件随机产生四个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字值和位置顺序均正确,则猜数字成功。 ② 用户有10次猜数字机会,如果在10次之内仍未猜出正确的数字值和顺序,则提示用户游戏失败,并给用户...
各位C语言高手慢慢想
时间不是问题(10天后关闭)
(各位大虾啊 你们看清楚题目好不好 还不清楚题目就在那长篇大论 郁闷~~~)(那位10级的大大虾 知道的话 直接发在这几行了啊 )
我有更好的答案
我看了楼上几个的答案,功能均不是很完善,所以我决定来试一试,应该是今天最迟是明天可以贴出来了.希望不要那么快就结贴....哈哈.....经过了几个小时的奋战..
终于搞出来了!!!!!!!!!!!!!!!!!!!
你题目要求的功能几乎全部实现.希望你认真调试一下!!!!!!调试环境.vc++ 6.0.
支持中文编译的编译器都可以调试运行的.注意事项:如果编译器是不支持中文显示的就会出现乱码的,所以最好是在支持中文显示的编译器上面编译运行.例如:vc++ 6.0以上的版本!!!!#include &stdlib.h&#include &stdio.h&#include &time.h&#include&windows.h&#include&string.h&#define MAX 5struct record{ char name[10];}rec[MAX],R
//记录行数
//输入的数字void display();
//开始界面void xuanze();
//选择函数void sys(int a);
//操作函数void newgame();
//新游戏void vdisplay();
//浏览记录界面void vxuanze();
//浏览选择函数void help();
//帮助说明void vsys(int a);
//浏览操作函数void viewsorce();
//按记录的顺序浏览void viewname();
//按记录的姓名浏览void viewsname();
//按记录和姓名浏览void delrec();
//删除记录 int qushu();
//取数函数int tishi(int aa);
//提示函数void addrec(int a);
//判断并且增加记录void recread();
//读取记录文件void recwrite();
//写入记录文件///////////////////////////////////////////////////////////////////////////////////////////////////////////////////函数定义//////////////void display()
//开始界面{ system(&cls&);
//清屏 printf(&
============================================\n&);
================数字竞猜游戏================\n&); printf(&
============================================\n&); printf(&\n&); printf(&
1: 新游戏\n&); printf(&\n&);
2: 浏览记录\n&); printf(&\n&); printf(&
3: 帮助说明\n&); printf(&\n&);
4: 清除记录\n&); printf(&\n&);
5: 退出\n&);
printf(&\n&); printf(&
============================================\n&); xuanze();}void xuanze()
//选择函数{ printf(&请输入你所选择的操作数:\n&); scanf(&%d&,&a); if(a==1||a==2||a==3||a==4||a==5) {
sys(a); }//选择相应的操作数执行函数 else {
printf(&错误的操作数!\n&);;
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display(); }}void sys(int a)
//操作函数{ switch(a) { case 1:newgame(); case 2:vdisplay(); case 3:help(); case 4:delrec(); case 5:exit(0);
//退出 }}void newgame()
//新游戏{ recread(); system(&cls&);
//清屏 printf(&\n&); printf(&记录列表显示如下:\n&); printf(&\n&); for(int i=0;i&MAX;i++) {
if(rec[i].sorce==0)printf(&
&---空记录---&\n&);
%d\n&,i+1,rec[i].name,rec[i].sorce); } printf(&\n&); printf(&请按任意键继续...\n&); getchar(); getchar();//////////////上面列出记录文件中的记录 /////////////////////////////////////////////////////////////////////////////
//输入的数字 int sn=10;
//机会次数 num=qushu();
//取数L: system(&cls&);
//清屏printf(&
============================================\n&);
================数字竞猜游戏================\n&); printf(&
============================================\n&); printf(&\n&); printf(&
1: 显示答案\n&); printf(&
============================================\n&); printf(&\n&); printf(&请输入你猜想的四个数字(格式为9999样式)你还有 %d 次机会:\n&,sn); scanf(&%d&,&snum); if(snum&10000 && snum&1000 || snum==1) {
if(snum==1)
printf(&你放弃了本局游戏!该四个数字是: %d\n&,num);
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display();
int flag=tishi(snum);
if(flag!=0 && sn!=0)
printf(&真是遗憾!十次机会没有了!没有关系!下次继续!\n&);
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display();
printf(&请按任意键继续猜...\n&);
getchar();
getchar();
if(sn!=0)addrec(sn);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display();
} } else {
printf(&错误的操作数!\n&);;
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
goto L; }}void help()
//帮助说明{ system(&cls&);
//清屏 printf(&
============================================\n&);
==============数字竞猜游戏帮助==============\n&); printf(&
============================================\n&); printf(&\n&); printf(&1.新游戏中,你可以输入四位数,来竞猜系统自动生成的四个数字!,只有十次的机会,\n&); printf(&
每次机会都有相对应的提示,十次的机会利用完了还没有猜对的话就算失败!四个数字的\n&); printf(&
相应格式在游戏中会有提示!当成功猜出系统给定的数字时候,就会统计你的成绩.当你的\n&); printf(&
成绩比记录文件中的记录好的时候就会提示你是否把记录记录到记录文件中,当你选择是\n&); printf(&
的时候就会接着提示你输入你的名字.再按回车.没有意外就会提示保存成功!\n&); printf(&
还有要说明的是记录中的分数是越低就代表成绩越好!\n&); printf(&2.浏览记录有三种方式!第一种只是列出记录中的姓名;第二种是列出记录中的成绩次序\n&); printf(&
第三种是姓名跟成绩一起列出来!\n&); printf(&3.清除记录就是把记录文件初始化.即是让记录文件为空!\n&); printf(&\n&); printf(&请按任意键继续...\n&); getchar(); getchar(); display();}void vdisplay()
//浏览记录界面{ system(&cls&);
//清屏 printf(&
============================================\n&);
================数字竞猜游戏================\n&); printf(&
============================================\n&); printf(&\n&); printf(&
1: 按记录的顺序浏览\n&); printf(&\n&);
2: 按记录的姓名浏览\n&); printf(&\n&);
3: 姓名记录全部浏览\n&); printf(&\n&);
4: 返回上级\n&);
printf(&\n&); printf(&
============================================\n&); vxuanze();}void vxuanze()
//浏览选择函数{ printf(&请输入你所选择的操作数:\n&); scanf(&%d&,&a); if(a==1||a==2||a==3||a==4) {
}//选择相应的操作数执行函数 else {
printf(&错误的操作数!\n&);;
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
vdisplay(); }}void vsys(int a)
//浏览操作函数{ switch(a) { case 1:viewsorce(); case 2:viewname(); case 3:viewsname(); case 4:display();
//返回上级 }}void viewname()
//按记录的顺序浏览{ recread(); system(&cls&);
//清屏 printf(&\n&); printf(&记录列表显示如下:\n&); printf(&\n&); for(int i=0;i&MAX;i++) {
if(rec[i].sorce==0)printf(&
&---空记录---&\n&);
姓名: %s\n&,i+1,rec[i].name); } printf(&\n&); printf(&请按任意键继续...\n&); getchar(); getchar(); vdisplay();}void viewsorce()
//按记录的姓名浏览{ recread(); system(&cls&);
//清屏 printf(&\n&); printf(&记录列表显示如下:\n&); printf(&\n&); for(int i=0;i&MAX;i++) {
if(rec[i].sorce==0)printf(&
&---空记录---&\n&);
%d\n&,i+1,rec[i].sorce); } printf(&\n&); printf(&请按任意键继续...\n&); getchar(); getchar(); vdisplay();}void viewsname()
//按姓名和记录浏览{ recread(); system(&cls&);
//清屏 printf(&\n&); printf(&记录列表显示如下:\n&); printf(&\n&); for(int i=0;i&MAX;i++) {
if(rec[i].sorce==0)printf(&
&---空记录---&\n&);
%d\n&,i+1,rec[i].name,rec[i].sorce); } printf(&\n&); printf(&请按任意键继续...\n&); getchar(); getchar(); vdisplay();}void delrec()
//删除记录 { recread(); for(int i=0;i&MAX;i++) {
rec[i].sorce=0; } recwrite(); printf(&删除成功!\n&); printf(&\n&); printf(&请按任意键继续...\n&); getchar(); getchar(); display();}int qushu()
//取数函数{ int a=0; int i=0; srand( (unsigned)time( NULL ) );
//随机数种子设置 while(i==0) {
//这样做就是为了增加随机性
i=i%100; }L: for(int j=0;j&i;j++) {
a=a+rand();
//判断随机数是否是四位数 如果不是继续取数 } a=(a/i+rand())%10000; if(a&1000)goto L; return(a);}int tishi(int aa)
//提示函数{ int a,b,c,d; int af,bf,cf, if(aa==num) {
printf(&恭喜!你猜对了!四个数就是:%d\n&,num);
return(0); } else {
a=(num-num%;
b=(num%1000-(num%)/100;
c=((num%-((num%)%10)/10;
//获取默认四个数字
d=((num%)%10;
af=(aa-aa%;
bf=(aa%1000-(aa%)/100;
cf=((aa%-((aa%)%10)/10;
//获取输入的四个数字
df=((aa%)%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);
if(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);
return(1); }}void addrec(int a)
//判断并且增加记录{ int flag=0;
//标志位 a=11-a; recread(); for(int i=0;i&MAX;i++) {
if(a&rec[i].sorce || rec[i].sorce==0)
if(i==4 || rec[i].sorce==0)
printf(&\n&);
printf(&恭喜!你的成绩 %d 分已经达到了前五名!\n&,a);
printf(&确认要保存记录请按'y',任意键返回...!\n&);
scanf(&%s&,&c);
if(c!='y')display();
rec[i+1].sorce=rec[i].
//记录后移
strcpy(rec[i+1].name,rec[i].name);
printf(&请输入你的名字\n&);
scanf(&%s&,&rec[i].name);
rec[i].sorce=a;
recwrite();
printf(&恭喜!添加成功!\n&,a);
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display();
printf(&\n&);
printf(&恭喜!你的成绩 %d 分已经达到了前五名!\n&,a);
printf(&确认要保存记录请按'y',任意键返回...!\n&);
scanf(&%s&,&c);
if(c!='y')display();
for(int j=i;j&MAX-1;j++)
rec[j+1].sorce=rec[j].
//记录后移
strcpy(rec[j+1].name,rec[j].name);
if(rec[j+2].sorce==0)
printf(&\n&);
printf(&请输入你的名字\n&);
scanf(&%s&,&rec[i].name);
rec[i].sorce=a;
recwrite();
printf(&恭喜!添加成功!\n&,a);
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display();
} } if(flag==0) {
printf(&\n&);
printf(&请按任意键继续...\n&);
getchar();
getchar();
display(); }}void recread()
//读取记录文件{ FILE *L: fp=fopen(&E:\\rec.rec&,&rb&); if(fp==NULL) {
recwrite();
//初始化 }
if(fread(&rec,sizeof(record),MAX,fp)==MAX)
printf(&文件读取失败!&);
} fclose(fp);}void recwrite()
//写入记录文件{ FILE * fp=fopen(&E:\\rec.rec&,&wb&); if(fp==NULL)
printf(&写入失败!\n&); fwrite(rec,sizeof(record),MAX,fp); fclose(fp);}void main(){ display();}////////////////////////////////
采纳率:50%
虽然做得不好,但我还是决定发过来,必境花了点时间嘛#include&stdio.h&#include&stdlib.h&#include&time.h&#include&string.h&#include&conio.h&void fun(int n){char name[10];if(n&6){printf(&请输入姓名:&); scanf(&%s&,name);}switch(1){case 1:printf(&第一名:%s\n&,n==1?name:&jone&);case 2:printf(&第二名:%s\n&,n==2?name:&jim&);case 3:printf(&第三名:%s\n&,n==3?name:&tank&);case 4:printf(&第四名:%s\n&,n==4?name:&ling&);case 5:printf(&第五名:%s\n&,n==5?name:&hai&);default:if(n&5)printf(&继续努力!!!&);}}void main(){int a[4],b[4],i,j,s=0,m,n,g,gs,g1,flag=0;char ch,str,srand((unsigned)time(NULL));do{s=0;do{ g=rand()%=g;if(g1&1000){ for(i=3;i&=0;i--){a[i]=g%10;g/=10;}for(i=0;i&4;i++)for(j=0;j&4;j++)if(a[i]!=a[j]&&i!=j)flag=1;else if(i==j)if(flag)}}while(1);loop:printf(&%d&,g1);//*** do{s++;n=0;m=0;printf(&\n请输入一个4位数:&);scanf(&%4d&,&gs);for(j=3;j&=0;j--){b[j]=gs%10;gs/=10;}for(i=0,j=0;i&4,j&4;)if(a[i++]==b[j++])m++;for(i=0;i&4;i++)for(j=0;j&4;j++)if(a[i]==b[j]){n++;}if(m&4)printf(&\n猜对了%d个,位置对了%d个。&,n,m);if(m==4){printf(&\n恭喜您赢了!共猜了%d次\n&,s);printf(&是否查看排行榜y/n:&);getchar();str=getchar();if(str=='y')fun(s);printf(&要清屏请输入y:&);strch=getche();if(strch=='y')system(&cls&);}if(s==10){printf(&\n您失败了!!!&);printf(&\n数字是%d&,g1);}}while(s&10);printf(&\n从来吗y/n:&);scanf(& %c&,&ch);if(ch=='n')exit(1);}while(1);}
#include &stdio.h&#include &stdlib.h&#include &time.h&int main(){srand(time(0L));int result=0;result=rand()%100;printf(&Enter you guess number: \n&)}
留个脚印,有空写一个.
#include &stdafx.h& #include &stdio.h& #include &math.h& #include &stdlib.h& #include &time.h& void main( void ) { int i,k,s; int a[4]; int N=0,M=0; srand( (unsigned)time( NULL ) ); for( i = 0; i &=3;i++ ) {
a:a[i]=rand()%10; for(s=0;s&i;s++) { if(a[s]==a[i])
} //END// printf( & %d\n&,a[i]); } printf(&qingshuru:\n&); int b[4]; for(k=0;k&=3;k++) { scanf(&%d&,&b[k]); } for(i=0;i&=3;i++) { for(k=0;k&=3;k++) if(a[i]==b[k]) { if(i==k) N++; // if(i!=k) M++; // } } printf(&%d\n%d\n&,N,M); }
其他类似问题
c语言编程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。JAVA猜数字游戏:现在规则如下,输入一个1-100之间的数请人猜_百度知道
JAVA猜数字游戏:现在规则如下,输入一个1-100之间的数请人猜
规则如下,输入一个1-100之间的数请人猜,如果猜对了结束游戏,如果猜错ㄋ则继续猜并提示所猜测的数字是大于还是小于所指定的数,最终提示猜对所用的次数。Scanner scan = new Scanner(System.in);int input = scan.nextInt();使用for循环.
我有更好的答案
等下我在给你写public&static&void&main(String[]&args)&{&&&&&&&&&&&&&&&Scanner&scanner&=&new&Scanner(System.in);&&&&&&&&System.out.println(&输入初始数字:&);&&&&&&&&int&input&=&scanner.nextInt();&&&&&&&&int&count&=&0;&&//计数&&&&&&&&System.out.println(&猜一个数字:&);&&&&&&&&for(;;){&&&&&&&&&&&&int&cai&=&scanner.nextInt();&&&&&&&&&&&&count++;&&&&&&&&&&&&if(cai==input){&&&&&&&&&&&&&&&&System.out.println(&恭喜你,猜对了,赶紧去买彩票吧!&);&&&&&&&&&&&&&&&&&&&&&&&&&&&&}else{&&&&&&&&&&&&&&&&if(cai&input){&&&&&&&&&&&&&&&&&&&&System.out.println(&太小了,继续猜。。。&);&&&&&&&&&&&&&&&&}else{&&&&&&&&&&&&&&&&&&&&System.out.println(&太大了,继续猜。。。&);&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&}&&&&}
for(;;)这个是什么
for(;;)这样写就是说循环无限制,如果不跳出会一直循环下去
采纳率:55%
  java现在基本忘了,我做个C语言的,你自己转换吧。  #include&stdio.h&  int&main()  {&&&&  int&count=0;&&&&  int&&&&&  int&target=100;&&&&  printf(&请输入一个数:&);&&&&  scanf(&%d&,&guess);&&&&  for(;;)&&&&  {&&&&&&&&  if(guess&target)&&&&&&&&  {&&&&&&&&&&&&  printf(&大了!请重新输入:&);&&&&&&&&&&&&  scanf(&%d&,&guess);&&&&&&&&  }&&&&&&&&  else&if(guess&target)&&&&&&&&  {&&&&&&&&&&&&  printf(&小了!请重新输入:&);&&&&&&&&&&&&  scanf(&%d&,&guess);&&&&&&&&  }&&&&&&&&  else&&&&&&&&  {&&&&&&&&&&&&  printf(&恭喜你猜对了!\n&);&&&&&&&&&&&&  printf(&你一共猜了%d次。&,count);&&&&&&&&&&&&  &&&&&&&&  }&&&&&&&&  count++;&&&&  }  return&0;  } 
import java.util.*;import java.io.*;public class CaiShu{ public static void main(String[] args) throws IOException{
Random a=new Random();
int num=a.nextInt(100);
System.out.println(&请输入一个100以内的整数:&);
for (int i=0;i&=9;i++){
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String str=bf.readLine();
int shu=Integer.parseInt(str);
if (shu&num)
System.out.println(&输入的数大了,输小点的!&);
else if (shu&num)
System.out.println(&输入的数小了,输大点的!&);
System.out.println(&恭喜你,猜对了!&);
System.out.println(&你真是个天才!&);
else if (i&=6)
System.out.println(&还将就,你过关了!&);
else if (i&=8)
System.out.println(&但是你还……真笨!&);
System.out.println(&你和猪没有两样了!&);
为您推荐:
其他类似问题
猜数字游戏的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。猜数字游戏的实现(Python3.5)
时间: 06:21:16
&&&& 阅读:311
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&最近实现了一个猜数字的游戏,用python写的,本人python技术很渣,在不断百度的情况下,总算完成了这个猜数字的游戏,写上一点心得,也许以后有用。
猜数字游戏规则特别简单,就是用户猜一个4位数字,如果位置正确则记为A,数字正确则记为B(例如:被猜数字1234,用户输入了1456;则返回1A1B)
首先,我定义了一个猜数字的大类,写入了初始化方法后,加了一个生成4位不重复数字的方法,具体逻辑是这样:首先生成一个10位不重复的序列,然后利用List的pop方法,返回结果,然后把每个结果用字符串累加的方法加起来,用while循环控制次数,最后得到4位不重复的数字字符串,其它额外要求根据实际情况增加。这里用到了random模块,所以要import random
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
&&& #生成随机不重复的4位数,包括首位位0的数字,如(0567)
&&& def genRandomNum(self):&&&&&&& if self.guess_number == ‘‘:&&& #对象中guess_number参数有没有纸,如果有就直接返回传入的值&&&&&&&&&&& result = ‘‘ #生成的数字&&&&&&&&&&& l1 = [str(i) for i in range(10)]&&& #l1是一个类似[0,1,2,3,4,5,6,7,8,9]序列&&&&&&&&&&& while(result.__len__() & 4):&&& #用while循环控制生成数字的位数&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #用list的pop方法返回对应的数字,这样可以避免重复&&&&&&&&&&&&&&& if tmp == ‘0‘:&&& #判断首位是否为0,如果是0,那么需要加上之前去除的元素 &&&&&&&&&&&&&&&&&&& l1.append(‘0‘)&&& #把之前删除的&0&重新加上&&&&&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #再来一次&&&&&&&&&&&&&&&&&&& result += tmp&&& #字符串累加,响应while的循环条件,到4位时停止循环&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& result += tmp&&&&&&& else:&&&&&&&&&&& result = str(self.guess_number)&&& #如果已经设置了guess_number,那么直接返回设置的结果&&&&&&& return result&&& #返回生成的4位不重复的数字(仅限于自动生成,其它途径传入的不算)
if __name__ == ‘__main__‘:
&&& guess = guessNumber()
&&& target = guess.genRandomNum()
&&& print(target)
第二步:实现生成随机不重复的4位数字后,接下来就考虑用户输入的数字了。
用户输入的数字有这么几种情况:
1、长度不符合要求
2、输入其它非数字字符
这些异常都要过滤
在类guessNumber中添加这个方法:
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
&&& #因为没有参数,所以在要加静态方法的声明
&&& @staticmethod&&&
&&& def user():&&&&&&& result = ‘‘&&&&&&& while True:&&&&&&&&&&& primary_number = input("请输入您猜测的数字:")
&&&&&&&&&&& #其它准出条件,如果用户输入了q,Q,quit字符,则退出游戏&&&&&&&&&&& if primary_number == ‘q‘ or primary_number == ‘Q‘ or primary_number == ‘quit‘:&&&&&&&&&&&&&&& return 1
&&&&&&&&&&& #判断用户输入的是不是数字以及长度是不是刚好4位&&&&&&&&&&& elif primary_number.isdigit() and len(primary_number) == 4:&&&&&&&&&&&&&&& tmp = list(str(primary_number))&&& #把用户输入的数字转换成list方便操作&&&&&&&&&&&&&&& a1 = tmp.pop(0)&&& #去掉其中两个字符,并穿给对应的变量(为什么这么做?一种实现方法,勿喷。囧)&&&&&&&&&&&&&&& a2 = tmp.pop(0)&&&
&&&&&&&&&&&&&&& #如果输入的数字大于1000,小于10000&&&&&&&&&&&&&&& if int(primary_number) & 1000 and int(primary_number) & 10000:
&&&&&&&&&&&&&&&&&&& #如果a1和a2有一个在tmp里面,或者tmp里面的两个值相等,那么意味着有重复数字&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& #同上&&&&&&&&&&&&&&& elif(int(primary_number)&1000 and int(primary_number) &= 100):&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&& else:&&&&&&&&&&&&&&& print("不要输入非数字字符")&&&&&&& result = primary_number&&&& #把值给result&&&&&&& return result&
if __name__ == ‘__main__‘:
&&& guess = guessNumber()
&&& target = guess.user()
&&& print(target)
第三步:第二步的代码写得很啰嗦,但是不影响使用&&,用户输入数字后,需要判断用户输入的数字于被猜测的数字之间差了多远,所以要写一个逻辑判断语句
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
& & & & self.number = ‘‘&&& #猜测的数字
& & & & self.history = {} && #存储猜测的结果
&&& #我把方法命名成提示
&&& def tip(self):&&&&&&& input_list = list(str(self.number))&&& #将类中的猜测的数转换成一个list&&&&&&& target_list = list(str(self.guess_number))&&& #将类中的被猜测的数转换成一个list&&&&&&& a = 0&&& #A的个数&&&&&&& b = ""&&& #B的字符串&&&&&&& for i in range(input_list.__len__()):&&& #遍历猜测的数字,如果其中有一个数字在被猜测的数中,那么b中增加一个B,如果对应位置的数正好相等,那么a自增1&&&&&&&&&&& if input_list[i] == target_list[i]:&&&&&&&&&&&&&&& a += 1&&&&&&&&&&& if input_list[i] in target_list and input_list[i] != target_list[i]:&&&&&&&&&&&&&&&&b += ‘B‘&&&&&&& result = ("%sA%sB" % (a, len(b)))&&&&&&& #将猜测的结果写入结果集,不重复记录&&&&&&& tmp = []&&&&&&& for key in self.history:&&&&&&&&&&& tmp.append(key)&&&&&&& if self.number in tmp:&&&&&&&&&&& pass&&&&&&& else:&&&&&&&&&&& self.history[self.number] = result&&&&&&& return result&&
if __name__ == ‘__main__‘:&&& a = guessNumber()&&& a.guess_number = ‘1234‘&&& a.number = ‘1456‘&&& print(a.tip())&&& #应该打印出:1A1B
第四步:整合
import random
class guessNumber():
&&& ‘‘‘
&&& 猜数字游戏:
&&& 1、用户输入一组数字后,返回以*A*B的方式返回结果
&&& 2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
&&& ‘‘‘
&&& def __init__(self):
&&&&&&& self.guess_number = ‘‘ #被猜测的数字
& & & & self.number = ‘‘&&& #猜测的数字
& & & & self.history = {} && #存储猜测的结果
&&& #生成随机不重复的4位数,包括首位位0的数字,如(0567)
&&& def genRandomNum(self):&&&&&&& if self.guess_number == ‘‘:&&& #对象中guess_number参数有没有纸,如果有就直接返回传入的值&&&&&&&&&&& result = ‘‘ #生成的数字&&&&&&&&&&& l1 = [str(i) for i in range(10)]&&& #l1是一个类似[0,1,2,3,4,5,6,7,8,9]序列&&&&&&&&&&& while(result.__len__() & 4):&&& #用while循环控制生成数字的位数&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #用list的pop方法返回对应的数字,这样可以避免重复&&&&&&&&&&&&&&& if tmp == ‘0‘:&&& #判断首位是否为0,如果是0,那么需要加上之前去除的元素 &&&&&&&&&&&&&&&&&&& l1.append(‘0‘)&&& #把之前删除的&0&重新加上&&&&&&&&&&&&&&&&&&& tmp = l1.pop(random.randrange(l1.__len__()))&&& #再来一次&&&&&&&&&&&&&&&&&&& result += tmp&&& #字符串累加,响应while的循环条件,到4位时停止循环&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& result += tmp&&&&&&& else:&&&&&&&&&&& result = str(self.guess_number)&&& #如果已经设置了guess_number,那么直接返回设置的结果&&&&&&& return result&&& #返回生成的4位不重复的数字(仅限于自动生成,其它途径传入的不算)
&&& @staticmethod&&&
&&& def user():&&&&&&& result = ‘‘&&&&&&& while True:&&&&&&&&&&& primary_number = input("请输入您猜测的数字:")
&&&&&&&&&&& #其它准出条件,如果用户输入了q,Q,quit字符,则退出游戏&&&&&&&&&&& if primary_number == ‘q‘ or primary_number == ‘Q‘ or primary_number == ‘quit‘:&&&&&&&&&&&&&&& return 1
&&&&&&&&&&& #判断用户输入的是不是数字以及长度是不是刚好4位&&&&&&&&&&& elif primary_number.isdigit() and len(primary_number) == 4:&&&&&&&&&&&&&&& tmp = list(str(primary_number))&&& #把用户输入的数字转换成list方便操作&&&&&&&&&&&&&&& a1 = tmp.pop(0)&&& #去掉其中两个字符,并穿给对应的变量(为什么这么做?一种实现方法,勿喷。囧)&&&&&&&&&&&&&&& a2 = tmp.pop(0)&&&
&&&&&&&&&&&&&&& #如果输入的数字大于1000,小于10000&&&&&&&&&&&&&&& if int(primary_number) & 1000 and int(primary_number) & 10000:
&&&&&&&&&&&&&&&&&&& #如果a1和a2有一个在tmp里面,或者tmp里面的两个值相等,那么意味着有重复数字&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& #同上&&&&&&&&&&&&&&& elif(int(primary_number)&1000 and int(primary_number) &= 100):&&&&&&&&&&&&&&&&&&& if a1 in tmp or a2 in tmp or tmp[0] == tmp[1]:&&&&&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& print("您输入的数字不符合要求")&&&&&&&&&&& else:&&&&&&&&&&&&&&& print("不要输入非数字字符")&&&&&&& result = primary_number&&&& #把值给result&&&&&&& return result&
&&& def tip(self):&&&&&&& input_list = list(str(self.number))&&& #将类中的猜测的数转换成一个list&&&&&&& target_list = list(str(self.guess_number))&&& #将类中的被猜测的数转换成一个list&&&&&&& a = 0&&& #A的个数&&&&&&& b = ""&&& #B的字符串&&&&&&& for i in range(input_list.__len__()):&&& #遍历猜测的数字&&&&&&&&&&& if input_list[i] == target_list[i]:&&&&&&&&&&&&&&& a += 1&&&&&&&&&&& if input_list[i] in target_list and input_list[i] != target_list[i]:&&&&&&&&&&&&&&&&b += ‘B‘&&&&&&& result = ("%sA%sB" % (a, len(b)))&&&&&&& #将猜测的结果写入结果集,不重复记录&&&&&&& tmp = []&&&&&&& for key in self.history:&&&&&&&&&&& tmp.append(key)&&&&&&& if self.number in tmp:&&&&&&&&&&& pass&&&&&&& else:&&&&&&&&&&& self.history[self.number] = result&&&&&&& return result&&
&&& #在start函数中调用
&&& def start(self):&&&&&&& self.guess_number = guessNumber.genRandomNum(self)&&& #先生成被猜测的数字,写入类中&&&&&&& while True:&&& #呼应user方法的返回值:1&&&&&&&&&&& self.number = guessNumber.user()&&& #然后用户开始猜测&&&&&&&&&&& if self.number != 1:&&&&&&&&&&&&&&& result = guessNumber.tip(self)&&&&&&&&&&&&&&& if result == ‘4A0B‘:&&& #准出条件,还有隐藏的q/Q/quit!&&&&&&&&&&&&&&&&&&& print("恭喜你,你赢了!")&&&&&&&&&&&&&&&&&&& break&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& print("你猜测的数字是: " + self.number + " 结果是: " + result)&&&&&&&&&&& else:&&&&&&&&&&&&&&& print("游戏结束,欢迎下次游戏!")&&&&&&&&&&&&&&& breakif __name__ == ‘__main__‘:&&& game = guessNumber()&&& game.start()
1、还可以继续优化
2、可以尝试实现电脑和人脑对局。第一种是猜同一组数字,电脑必须分析并返回最大结果给玩家,但是另外却存储最有可能的数据集合,直到运行出唯一正确答案后直接战胜玩家。另外一种是玩家和电脑对猜对方的数字,先猜正确的先赢。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/stanmao/p/5599338.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!

我要回帖

更多关于 vc 6.0中文版下载 的文章

 

随机推荐