一个猜数字的游戏,不知道哪里有问题,不会改,帮帮忙指点下
程序代码:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
//#include <process.h>
int main(void)
{
int answer[4],guess=0,a=0,b,times=0,i,j;//初始化被猜答案为1352
for ( i=0; i<=3; i++)
{
int randomize(); //随机数发生器
answer[i] = rand()%10; //产生模为10的随机数
for ( j=0; j<i; j++)
{
while (answer[i] == answer[j]) //判断是否和之前产生的随机数相同
{
answer[i] = rand()%10; //如果相同,则重新产生
j = -1;
}
}
}
printf("please guess\n");
while(a != 4) //进入猜数字循环
{
a = 0;
b = 0; //每次猜测前设定A,B都为0
times++; //猜测次数加1
do
{
printf("%d ",times);
scanf("%d",&guess);//从键盘读取本次猜测的四位数字
if (guess == 0) //输入的是字符
{
exit(0);
}
}
while (guess<0 ||guess>9999); //要求输入规定范围内的数字
//进入猜测和正确答案比对循环
for ( i=3; i>-1; i--) //被猜数从10的3次方开始整除,以取得最高位值,一直除到0次方
{
for ( j=0; j<4; j++)//真实答案从最高位(数组最前面)开始取,直到数组最后
{
if(int(guess/pow (10,i)) == answer[j])//比较两者相应位是否相同.将每一位猜测数字比对,pow10(i):取10的i次方的函数
{
if(i+j==3)
a=a+1; //如果位置相同A加1
else
b=b+1; //如果位置不同B加1
}
}
guess = guess-(int)(guess/double pow 10(i))*double pow 10(i); //比对下一位猜测数字
}
printf(" %dA%dB\n",a,b); //显示本次猜测的A,B正确性
}
return 0;
}








