| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 483 人关注过本帖
标题:帮忙解决一下bug
只看楼主 加入收藏
满江风
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-10-30
收藏
 问题点数:0 回复次数:4 
帮忙解决一下bug
小弟写了一个猜数字的小游戏,但有一处有漏洞,当输入66666时,不出错!!你各位大侠帮忙!!
游戏介绍:玩家输入猜测数,与题设答案比较根据返加A与B的信息继续猜测直到猜正确,A表示数字和位数都相同,B表示数字相同位数不同,在win-tc中编译
*****************************************************************************
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<bios.h>
#define Y 0x1579
#define N 0x316e
/*定义全局变量*/
int i,j,error,times,A,B,key;
/*自定义函数*/
void Init_num(int answer[]);      /*初始化四位数*/
void Input_guess_num(char str[],int guess[]);     /*输入猜测数*/
void Compare_num(int guess[],int answer[]);       /*比较猜测数和答案,并返回比较结果*/
void Congratulation();                            /*猜测成功信息*/

/*主函数*/
int main()
{
    char str[5];
    int answer[4],guess[4];
    while(1)
    {
        clrscr();
        randomize();
        Init_num(answer);
        times=1;
        do
        {
            Input_guess_num(str,guess);
            Compare_num(guess,answer);
        }while(A!=4);
        Congratulation();
        clrscr();
        gotoxy(25,10);
        printf("Do you want to continue?(Y/N)");
        while(1)
        {
            key=bioskey(0);
            if(key==Y)
              break;
            if(key==N)
              return 0;
        }
    }
}

void Init_num(int answer[])
{
    for(i=0;i<4;i++)             /*选出四位随机数*/
    {
        do
        {
            error=0;
            answer[i]=rand()%10;
            if(i==0&&answer[0]==0)     /*最高位不能为0*/
               error=1;
            for(j=0;j<i;j++)
            {
                if(answer[i]==answer[j])      /*每位数都不能相同*/
                {
                    error=1;
                    break;
                }
            }
        }while(error==1);
    }
}

void Input_guess_num(char str[],int guess[])
{
    int num;
    do      /*输入的猜测的数字,如果不在范围内则重新输入*/
    {
        error=0;
        printf("%d\t    ",times);
        times++;
        gets(str);
        num=atoi(str);
        if(num<1000||num>9999)
        {
            printf("-------------------------\n");
            printf("Data error! Repeat enter!\n");
            printf("-------------------------\n");
            error=1;
        }
    }while(error==1);
    for(i=0;i<4;i++)      /*分离四位数的每一位*/
    {
        guess[i]=num/(int)pow10(3-i);
        num=num%(int)pow10(3-i);
    }
}

void Compare_num(int guess[],int answer[])
{
     A=0;B=0;
     for(i=0;i<4;i++)           /*比较输入的数字和正确的答案*/
     {
         for(j=0;j<4;j++)
         {
             if(guess[i]==answer[j])
             {
                 if(i==j)
                   A++;
                 else
                   B++;
             }
         }
     }
     printf("\t    %dA%dB\n",A,B);      /*返回信息*/
     printf("-------------------------\n");
}

void Congratulation()
{
    printf("YOU WIN!CONGRATULATIONS!");
    getch();
}
搜索更多相关主题的帖子: bug 
2008-03-15 02:04
nobush
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-1-10
收藏
得分:0 
我機器上沒有TC2.0調試不了,
但我認為:66666 大於 TC2 的int 範圍 65536
所以 ,当输入66666时,不出错!! 因為:66666-65536=1130 是你的程序正常範圍。
2008-03-15 16:32
nobush
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-1-10
收藏
得分:0 
我上面說的範圍是 正負數在內
2008-03-15 16:34
满江风
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-10-30
收藏
得分:0 
改long型已解决此问题.感谢!!!
但你觉得还会出现类似的问题吗?比如超过long型的数
2008-03-15 16:54
满江风
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-10-30
收藏
得分:0 
没事

[[it] 本帖最后由 满江风 于 2008-3-15 17:03 编辑 [/it]]
2008-03-15 17:02
快速回复:帮忙解决一下bug
数据加载中...
 
   



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

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