比这篇新的文章: 数据库查询结果 To DataSet
比这篇旧的文章: 万进制高精度储存

猜数字游戏2.0(可重复数字版))

语言: C, 标签: 猜数字 可重复数字 2008/08/06发布 5个月前更新 更新记录
作者: zackchen, 点击472次, 评论(2), 收藏者(0)

开关行号, 全选(Ctrl+C复制) | 一键复制:HTML, BBCode(Discuz!) , 源代码 | 查看:裸代码, 全屏
背景
主题: 字体:
C语言: 猜数字游戏2.0(可重复数字版))
001 /*******************************************/
002 /* 作者:Zack Chen
003 /* 时间:2008年8月6日
004 /* 网站:zack.cublog.cn
005 /*******************************************/
006 #include<stdio.h>
007 #include<stdlib.h>
008 #include<time.h>
009
010 int main()
011 {
012   int i,x=0,y,input,a,b,c,d,ai,bi,ci,di;
013   srand(time(NULL));
014   i=rand();
015   a=i%10;
016   b=(i/10)%10;
017   c=(i/100)%10;
018   d=(i/1000)%10;
019   /* printf("%d%d%d%d\n",d,c,b,a); */ /* 这行代码用于测试 */
020   for(i=1;i<=25&&x!=4;i++)
021     {
022       printf("第%d次\n",i);
023       scanf("%d",&input);
024       ai=input%10;
025       bi=(input/10)%10;
026       ci=(input/100)%10;
027       di=(input/1000)%10;
028       x=compare(a,b,c,d,ai,bi,ci,di,x,y);
029       if(x!=4&&i==25)
030     printf("正确答案%d%d%d%d\n",d,c,b,a);
031     }
032   return 0;
033 }
034
035 int compare(int a,int b,int c,int d,int ai,int bi,int ci,int di,int x,int y)
036 {
037   x=y=0;
038   int asta=1,bsta=1,csta=1,dsta=1,aista=1,bista=1,cista=1,dista=1;
039   if(a==ai){
040       x++;
041       asta=aista=0;
042   }
043   if(b==bi){
044       x++;
045       bsta=bista=0;
046   }
047   if(c==ci){
048       x++;
049       csta=cista=0;
050   }
051   if(d==di){
052       x++;
053       dsta=dista=0;
054   }
055   if(bsta&&aista&&ai==b){
056       y++;
057       bsta=aista=0;
058   }
059   if(csta&&aista&&ai==c){
060       y++;
061       csta=aista=0;
062   }
063   if(dsta&&aista&&ai==d){
064       y++;
065       dsta=aista=0;
066   }
067   if(asta&&bista&&bi==a){
068       y++;
069       asta=bista=0;
070   }
071   if(csta&&bista&&bi==c){
072       y++;
073       csta=bista=0;
074   }
075   if(dsta&&bista&&bi==d){
076       y++;
077       dsta=bista=0;
078   }
079   if(asta&&cista&&ci==a){
080       y++;
081       asta=cista=0;
082   }
083   if(bsta&&cista&&ci==b){
084       y++;
085       bsta=cista=0;
086   }
087   if(dsta&&cista&&ci==d){
088       y++;
089       dsta=cista=0;
090   }
091   if(asta&&dista&&di==a){
092       y++;
093       asta=dista=0;
094   }
095   if(bsta&&dista&&di==b){
096       y++;
097       bsta=dista=0;
098   }
099   if(csta&&dista&&di==c){
100       y++;
101       csta=dista=0;
102   }
103   printf("%dA%dB\n\n",x,y);
104   return x;
105 }
106
107
108 /*希望哪位前辈可以帮忙改进一下compare()函数,本人是新手*/
打分:

所有评论,共2条:( 我也来说两句)

1
半瓶墨水 5个月前 回复
0
0
最后的注释不对,星号是中文的
2
半瓶墨水 5个月前 回复
0
0
关于compare函数,参见: @#128  里面的get_match_ab 和 get_match_ab2

发表评论

注册登录后再发表评论