如何使程序按预期运行?实现winningNum随机值每次迭代后更新
问题分析与解决方案
你的代码里每次do-while循环确实会重新生成winningNum,但看起来随机值没变化的核心原因是:rand()函数默认使用固定种子(值为1),导致每次运行程序时生成的随机数序列完全一致。要实现每次迭代更新随机数,需要补充随机种子的初始化。
修改后的代码
#include <stdio.h> #include <stdlib.h> #include <time.h> // 新增头文件,用于获取系统时间 int main(){ int guess; int guess_count = 0; int guess_limit = 10; // 用当前时间初始化随机种子,确保每次运行程序生成的随机序列不同 srand(time(NULL)); do { // 每次循环迭代生成新的随机数 int winningNum = rand() % 50 + 1; printf("Enter your guess (number between 1 and 50): "); scanf("%d", &guess); guess_count++; if (guess > winningNum){ printf("Too High...\n"); } else if(guess < winningNum){ printf("Too Low...\n"); } if(guess == winningNum){ printf("Correct,the number was %d.\n", winningNum); break; } }while(guess_count < guess_limit); if(guess_count == guess_limit){ printf("You made %d wrong guesses.\n",guess_count); } return 0; }
关键修改点
- 新增
<time.h>头文件:用来获取当前系统时间,作为随机数生成器的种子 - 调用
srand(time(NULL)):在程序启动时初始化随机种子,让rand()每次运行都能生成不同的随机数序列 - 保留
winningNum在循环内的定义:确保每次循环迭代都会生成全新的随机数,满足你的需求
内容的提问来源于stack exchange,提问作者clinton-k8
相关产品推荐
相关产品推荐

