帮忙解决一下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();
}