| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 720 人关注过本帖
标题:完善后的猜数字游戏——仍有个小问题
只看楼主 加入收藏
无悔大学四年
该用户已被删除
收藏
 问题点数:0 回复次数:5 
完善后的猜数字游戏——仍有个小问题
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 数字 游戏 
2008-06-03 12:39
无悔大学四年
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-03 12:40
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
收藏
得分:0 
请改用大写字母,谢谢


" border="0" />[color=white]
2008-06-03 12:43
菜鸟选手
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2008-5-5
收藏
得分:0 
... 论坛上的一题

算法学习群57909089
2008-06-03 12:52
无悔大学四年
该用户已被删除
收藏
得分:0 
回复 3# Loli 的帖子
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-03 13:07
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
应该是键盘缓存的问题
程序代码:
/*************************************************************
         
        把你的程序加了点东西,试了一下,现在应该是可以了。

        不过觉得你的程序好象有点儿乱。另外,如果熟悉这个游戏
    的人还可以,如果不熟悉的人,你也没个说明啥的,让人家怎么
    玩儿呢?

        一家之言,谨供参考。

 
*************************************************************/

#include <stdlib.h>
#include "stdio.h"
#include<time.h>
#define X {char c;c=getchar()!='\n';}
int answer[4];
void main()
{
  void produce();
  void guessing();
  void playagain();
  produce();
  guessing();
  playagain();  
}

void produce()/*产生随机的一个四位数*/
{
    int i,j;
    for(i=0;i<=3;i++)
    {
       srand(time(0));
        answer[i]=rand()%10;
       
       for(j=0;j<i;j++)
        {
            while(answer[i]==answer[j])
            {
                answer[i]=rand()%10;
                j=-1;
            }
        }
         if(answer[0]==0)/*如果这个四位数的千位数为0则重新产生*/
          { i=-1;
              continue;  }
    }
    
}

void guessing()
{   int m,guess[4],x,y,i,j,k,l,times=1;
    while(x!=4)
   {     
            x=0,y=0;
            printf("\nguess the num:");
            printf("     %d\n",times);
            scanf("%d",&m);/*猜数*/
            if(m<1000||m>9999)/*不合法输入或退出*/
             playagain(); 
              
            while(m>=1000&&m<=9999)/*answer和guess数组中一个个比较*/
            {
                for(i=3;i>=0;i--)/*求guess数组的每一个元素的值*/
                 {
                    guess[i]=m%10;
                    m=m/10;
                  }
                for(j=0;j<4;j++)
                {
                      if(answer[j]==guess[j])
                      x++;
                 }    
                for(k=0;k<4;k++)
                  for(l=0;l<4;l++)          
                     if(answer[k]==guess[l])
                      y++;
              
                printf("%dA%dB",x,y-x);/*x是位置和数字都猜对的个数,
                (y-x)是数字对了,但位置不对的个数*/
              
             times++;
          } 
        if(x==4)
         {printf("\ncongratulations!,you only need %d times to guess it ",times-1);
             playagain();/*重复玩一次*/
         }           
   }
}

void playagain()
{
   char key;
   printf("\nPress 'q' to quit:");
                 key=getchar();
                 X;
                 if(key=='q')
                  {
                    printf("\n quit game?(y or n)");
                    key=getchar();
                    X;
                    if(key=='y')
                     exit(0);
                    else
                      if(key=='n')/*重复再玩一次*/
                        {  
                          produce();
                          guessing();
                        }    
                  } 
}
2008-06-04 16:55
快速回复:完善后的猜数字游戏——仍有个小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022459 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved