一个猜数字的游戏,不知道哪里有问题,不会改,帮帮忙指点下
程序代码:
#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; }