人机猜数游戏
由计算机“想”一个四位数,请人猜这个四位数是多少。
人输入四位数字后,计算机首先判断这四位数字中有几位是猜对了,
并且在对的数字中又有几位位置 也是对的,将结果显示出来,给人以提示,请人再猜,
直到人猜出计算机所想的四位数是多少为止
代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int num;
srand((unsigned)time(NULL));//随机数初始化
num= rand()%9000+1000;//产生随机的四位数 %9000:不超过9000的数 +1000使随机数范围在1000~9999
int guess;
int q;//随机数的千位
int b;//百位
int s;//十位
int g;//个位
q = num / 1000;
b = num % 1000 / 100;
s = num % 100 / 10;
g = num % 10;
do
{
//输入一个数
printf("请输入猜的数:");
scanf_s("%d", &guess);
//取各个位数字
int q1, b1, s1, g1;
q1 = guess / 1000;
b1 = guess % 1000 / 100;
s1 = guess % 100 / 10;
g1 = guess % 10;
//比对num和guess 一样输出数字,不一样输出*
printf("%c", q == q1 ? q + '0' : '*');//数字+‘0’== 数字字符
printf("%c", b == b1 ? b + '0' : '*');
printf("%c", s == s1 ? s + '0' : '*');
printf("%c", g == g1 ? g + '0' : '*');
printf("\n");
} while (num != guess);
printf("猜对啦!\n");
return 0;
}
运行结果:
扩展知识:
由于同一种子数为一个随机序列,这种随机数为伪随机,因此引入time()函数改变种子数即可使用srand()生成不同随机数(time毫秒单位 每毫秒变化)
time()函数 longlong重定义time_t数据类型