////猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
// 产生一个0~RAND_MAX之间的伪随机数
// int rand=rand(); 错误
//rand() 函数是标准库中的一个函数,用于生成一个伪随机数
// 而 rand 是一个变量名,当你使用 int rand = ...; 时
// 你实际上是在尝试定义一个名为 rand 的变量 由于变量名和函数名冲突,编译器通常会报错
// srand(1); 这样传入一个种子会固定不变
void menu() {
printf("************************************\n");
printf("欢迎来到猜数字游戏:\n");
printf("请选择:1.play 0.quit\n");
printf("********************************\n");
}
void game() {
// 初始化随机数生成器
srand((unsigned int)time(NULL));
// 生成一个1到100之间的随机数
int red = rand() % 100 + 1;
int guess;
int count = 0;
while (count < 3) { // 允许用户猜3次
printf("你还有%d次机会,请输入一个数字:", 3 - count);
if (scanf("%d", &guess) != 1) {
// 如果输入不是整数,则清除输入缓冲区并提示用户重新输入
while (getchar() != '\n');
printf("输入错误,请输入一个整数。\n");
continue; // 跳过当前循环的剩余部分,重新开始循环
}
if (guess > red) {
printf("猜大了,请再试一次。\n");
} else if (guess < red) {
printf("猜小了,请再试一次。\n");
} else {
printf("恭喜,猜对了!\n");
return; // 猜对后退出函数
}
count++; // 增加猜测次数
}
// 如果循环正常结束,即用户用完猜测次数
printf("很遗憾,你没有猜对。正确答案是%d。\n", red);
}
int main() {
int choice;
do {
menu();
printf("请输入选择: ");
if (scanf("%d", &choice) != 1) {
// 如果输入不是整数,清除输入缓冲区并提示用户重新输入
while (getchar() != '\n');
printf("输入错误,请输入1(play)或0(quit)。\n");
continue;
}
switch (choice) {
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
}
} while (choice != 0); // 当用户输入0时退出循环
return 0;
}
标签:rand,游戏,17,int,choice,结构化程序,red,printf,输入
From: https://www.cnblogs.com/gaodiyuanjin/p/18117233