C++ 语句 cout << rand() << ' ' << rand(); 的第二个输出值较大。( )
答案B。文件重定向后cout的输出被写入文件。程序本身无法确定输出目的地。
文件重定向后程序行为不变,只是I/O目的地改变了。程序无法区分。
【考点】随机数生成|rand/srand 机制|伪随机序列确定性
考纲定位:本题考查 GESP 二级 C++ 的随机数生成模块,命题人专门卡住考生对"伪随机数序列确定性"的理解盲点——很多孩子背熟 rand() 能出数,却误以为没 srand() 每次运行都不同。
解题思维:看到 cout << rand() 先想"rand 是伪随机数生成器,需要 srand 设种子"。关键观察题目未调用 srand,依据 C++ 标准,默认种子为 1,因此序列固定。推理链:rand 依赖种子→无 srand 则种子固定→序列确定→第二值大小固定但未必"较大"。通法:遇 rand 题先检 srand,无则默认种子固定,序列可预测。
陷阱拆解:A 选项"正确"利用直觉误判"随机数每次不同";"较大"表述模糊,无上下文无法判定大小,命题人故意用不确定词诱导错误;若只背结论"rand 是随机数"而不理解其伪随机依赖种子,必掉坑。
反命题思维:若改题加 srand(time(0)),第二值大小取决于时间种子,答案变"不确定";刷到类似题先问"命题人想考我什么"——考确定性、考范围还是考 srand 影响。