c语言程序设计第6章 循环控制结构
Questions and answers * * * * 猜数游戏用到的库函数 怎样模拟计算机“想”一个数呢? 随机函数rand() 产生[0,RAND_MAX] 之间的随机数 magic = rand(); #include RAND_MAX在stdlib.h中定义,不大于双字节整数的最大值32767 产生[0,b-1] 之间的随机数 magic = rand()%b; 产生[a,a+b-1] 之间的随机数 magic = rand()%b + a; #include #include main() { int magic; /*计算机"想"的数*/ int guess; /*人猜的数*/ magic = rand()%100 + 1; /*“想”一个[1,100]之间的数magic*/ printf("Please guess a magic number:"); scanf("%d", &guess); if (guess > magic) { printf("Wrong! Too high!\n"); } else if (guess < magic) { printf("Wrong! Too low!\n"); } else { printf("Right! \n"); printf("The number is:%d \n", magic); } } 例5.4 只猜1次 #include #include main() { int magic; int guess; int counter; /*记录人猜次数的计数器变量*/ magic = rand() % 100 + 1; counter = 0; /*计数器变量count初始化为0*/ do{ printf("Please guess a magic number:"); scanf("%d", &guess); counter ++; /*计数器变量count加1*/ if (guess > magic) printf("Wrong! Too high!\n"); else if (guess < magic) printf("Wrong! Too low!\n"); else printf("Right!\n"); }while (guess != magic); printf("counter = %d \n", counter); } 直到猜对为止 例6.6 猜数游戏用到的库函数 每次运行程序时计算机所“想”的数都是一样的,这是什么原因呢? 函数rand()产生的只是伪随机数 随机函数srand 为函数rand()设置随机数种子来实现对函数rand所产生的伪随机数的 “随机化” 通过输入随机数种子,产生[0,100]之间的随机数 scanf("%u", &seed); srand(seed); magic = rand() % 100 + 1; #include #include main() { int magic; int guess; int counter; /*记录人猜次数的计数器变量*/ unsigned int seed; printf("Please enter seed:"); scanf("%u", &seed); srand(seed); magic = rand() % 100 + 1; counter = 0; /*计数器变量count初始化为0*/ do{ printf("Please guess a magic number:"); scanf("%d", &guess); counter ++;