猜数字游戏(c语言)

来源:互联网 发布:vmware网络nat 编辑:程序博客网 时间:2024/05/07 20:04
/*规则:随机产生 0 ~ 9 4个数字组成一个4位各个位不重复的数字,然后让玩家猜出是哪4个数字组成和数字在第几位A代表数字为位置都对了,B代表数字对了但位置不对例:产生2943 当你猜2893 电脑就显示2A1B     当你猜2943 电脑就显示4A0B*/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h>int main(){int dig_Default[4];for(int i = 0; i <= 3; i++){srand((unsigned)time(NULL));dig_Default[i] = rand()%9+1;for(int j = 0; j < i; j++){while(dig_Default[j] == dig_Default[i])//判断不能出现重复数字{dig_Default[i] = rand()%9+1;j = -1;}}}int dig_Guess;int counts = 1;printf("If you want to quite the games,please input -1!\n\n");printf("Please input guess number:\n");while(1){printf("%d\t",counts++);scanf("%d",&dig_Guess);if(-1 == dig_Guess){printf("\t退出!!\n");break;}int a = 0, b = 0;for(int j = 3; j >= 0; j--){for(int i = 0; i <= 3; i++){if(dig_Default[i] == dig_Guess/(int)pow(10,j)){if(3 == i + j){//数字和位置都对了a = a + 1;break;}else{//仅仅是数字对了b = b + 1;break;}}}dig_Guess = dig_Guess - (dig_Guess/(int)pow(10,j) * (int)pow(10,j));}printf("\t%dA%dB\n",a,b);if(a == 4){printf("\t胜利!!\n");break;}}return 0;}