由计算机产生一个四位数,请人猜这四位整数是多少。人输入一个四位数后,计算机首先判断
其中有几个位被猜对,并且将猜对的数打印出来,给人提示,请人在猜
当猜对时显示出结果
#include
#include
#include
int main()
{
int seed, a, z = 0, t, i, c, m, g, s, j, k, arr[4];
long ltime;
ltime = (unsigned int)time(NULL);//用时间戳设置随机起点,只有用时间戳设置的随机数每次执行完才会变化成新值
seed = ltime / 2;//除2表示缩小时间戳产生的数值
srand(seed);
//将时间戳产生的值固定在四位数之间
if ((rand() % 10000) >= 1000 && (rand() % 10000) <= 9999)
{
z = rand() % 10000;//z为机器产生的四位数随机值
}
printf("机器已经设置好四位数****n");
printf("%d", z);
printf("n");
for (c = 1;; c++)//c记录人所猜的次数
{
printf("请输入你猜的四位数:");
scanf_s("%d", &g);
printf("提示:n");
a = z; j = 0; k = 0; arr[0] = arr[1] = arr[2] = arr[3] = 0;
for (i = 1; i < 5; i++)//i表示随机值中的某位数
{
s = g;//猜数值给s,保证猜数值g不会丢失
m = 1;//
for (t = 1; t < 5; t++)//t表示猜想值中的某位数
{
if (a % 10 == s % 10)//随机值最后一位与猜想值最后一位比较
{
//最后一位数字不同
if (m && t != arr[0] && t != arr[1] && t != arr[2] && t != arr[3])
{
j++;
m = 0;
printf("猜想值与随机值相同的数有%dn", s % 10);
arr[j - 1] = t;//记录相同数字时,该数字在所猜数字中的位置
}
if (i == t)
{
k++;//两数位置相同即数也相同,计数器k加1
printf("你猜的数中倒数第%d个数的位置相同,而且值相等为%dn", i, a%10);
}
}
s /= 10;
}
a /= 10;
}
printf("n总共有%d个数字相同,%d个位置相同n", j, k);//j记录相同数的个数,k记录几个数的位置相同
if (k == 4)
{
printf("****你猜对了****n");
break;
}
}
printf("你总共猜了 %d 次n", c);
return 0;
}



