#include<time.h>//将函数time需要的头文件time.h包含其中
#include<stdlib.h>
#include<stdio.h>
int main()
{
int magic, guess, counter = 0, ret;
char reply;
srand(time(NULL));//为rand设置随机数种子
do {
counter = 0;
magic = rand() % 100 + 1;//利用求余运算rand() % b将函数rand()生成的随机数变化在[0,b-1],利用rand() % b+a将随机数范围平移到[a,a+b-1]上,此处即为[1,100]
do {
printf("Please guess a magic number:");
ret = scanf_s("%d", &guess);
while (ret != 1)
{
while (getchar() != '\n')
printf("Please guess a magic number:");
ret = scanf_s("%d", &guess);
}
counter++;
if (guess > magic)
printf("Wrong!Too big!\n");
else if (guess < magic)
printf("Wrong!Too small!\n");
else
printf("Right!\n");
} while (guess != magic && counter < 10);
printf("counter=%d\n", counter);
printf("Do you want to continue(Y/N or y/n)?");
scanf_s(" %c", &reply);
//getchar();C语言中输入单字符避免回车的几种方法,一是再输入字符前加空格;二是用getchar();将回车读入;三是在前一个输入后加\n:如scanf("%d\n",&n);scanf("%c",m);
printf("%c\n", reply);
} while (reply == 'Y' || reply == 'y');
return 0;
}
//rand()生成的是不大于双字节整数的最大值32767,及其取值范围为[0,32767].调用该函数要用到头文件stdlib.h。
//我对rand函数的理解是这样的:rand会在电脑中随机生成一系列数列,但每次调用时都只调用了相同的那个数列的第一个数。而用srand()为rand()设置随机数种子,就会产生不同的随机数序列。而对应的那个数也就不同了;
//time(NULL)返回一与日历秒有关的无符号整数。
这个程序让我不是很满意的地方就是如果要确定继续或者退出的话,需要按两次回车,但是我现在还没想到一个好的主意。求大佬帮忙,哈哈哈哈。