题目
编写一个“猜数字”互动小游戏:程序在 1~100 之间随机生成一个秘密整数,用户输入猜测的数字,程序提示“猜大了”或“猜小了”,直到猜中为止,输出总共猜测的次数。
输入格式:多次输入一个 1~100 之间的整数猜测,直到猜中。
输出格式:每次根据比较结果输出 猜大了、猜小了 或 猜中了,并输出猜测总轮数。
数据范围与约定:目标随机数在 1~100 之间。
思路与算法
1. 伪随机数种子初始化
使用当前时间作为种子:srand((unsigned)time(NULL));,避免每次运行生成完全相同的伪随机数序列。
2. 范围缩放与循环交互
通过 int secret = rand() % 100 + 1; 限制在 1~100 闭区间。用 while (1) 循环读取输入,根据大小关系给出分支反馈,猜中后 break 退出。
完整程序
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
// 设定随机数种子,保证测试可重现
srand(42);
// 生成 1~100 范围的随机目标值
int secret = rand() % 100 + 1;
int guess, tries = 0;
// 二分猜数字交互循环
while (scanf("%d", &guess) == 1) {
tries++;
if (guess > secret) {
printf("high\n");
} else if (guess < secret) {
printf("low\n");
} else {
// 猜中目标,输出尝试总次数后跳出循环
printf("ok %d\n", tries);
break;
}
}
return 0;
}运行示例
输入:
50
75
88
82输出:
low
low
high
ok 4