#猜数字环节中‘guess’变量,例如:输入2.5会导致死循环
能否通过代码实现:输入非想要的整数内容时,提示输入信息错误
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
void menu()
{
printf("*********************\n");
printf("*****1.进入游戏******\n");
printf("*****0.退出游戏******\n");
printf("*********************\n");
}
void game()
{
int ret = rand()%100 + 1;//生成一个1-100的随机数
int guess = 0;
while (1)
{
printf("请猜数字\n");
scanf("%d", &guess);
if (guess < 0)
{
printf("错误的范围,请猜0-100区间的整数\n");
}
else if (guess > 100)
{
printf("错误的范围,请猜0-100区间的整数\n");
}
else
{
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你猜中了\n");
break;
}
}
}
return 0;
}
int main()
{
int input = 0;
srand((unsigned int)time (NULL));
do
{
menu();//打印菜单
printf("请选择\n");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("错误指令");
break;
}
} while (input);
return 0;
}
该回答内容部分引用GPT,GPT_Pro更好的解决问题
要实现通过代码提示输入错误的功能,可以使用C语言中的scanf()函数。scanf()函数有一个参数,其中可以指明想要获取的输入类型,如整型int、浮点型float等,程序会根据指定的输入类型进行验证,如果输入的内容不符合指定的类型,则会提示输入错误,从而避免出现死循环。
下面是代码实例:
#include <stdio.h>
int main(){
int guess; //定义一个整型变量guess
printf("输入一个整数:");
scanf("%d",&guess); //从键盘获取整型数据,并储存在guess变量中
if(guess == 0){ //判断输入的数据是否为0
printf("输入正确\n");
}else{ //输入不为0时,提示输入错误
printf("输入有误!请重新输入\n");
}
return 0;
}
如果回答有帮助,望采纳。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以在输入guess的代码块中添加对输入是否为整数的判断。如果输入不是整数,则提示用户输入信息错误,并清空缓存区。可以使用scanf函数的返回值来判断输入是否为整数。修改后的代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("*********************\n");
printf("*****1.进入游戏******\n");
printf("*****0.退出游戏******\n");
printf("*********************\n");
}
void game()
{
int ret = rand()%100 + 1;//生成一个1-100的随机数
int guess = 0;
while (1)
{
printf("请猜数字\n");
int res = scanf("%d", &guess);
if (res != 1)
{
printf("输入信息错误,请输入一个整数\n");
fflush(stdin); // 清空缓存区
}
else if (guess < 0 || guess > 100)
{
printf("错误的范围,请猜0-100区间的整数\n");
}
else
{
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你猜中了\n");
break;
}
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time (NULL));
do
{
menu();//打印菜单
printf("请选择\n");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("错误指令");
break;
}
} while (input);
return 0;
}
在输入guess时,我们使用scanf函数读取一个整数,并将其保存到guess变量中。如果scanf函数返回的值不为1,则说明输入不是整数,因此我们提示用户输入信息错误,并使用fflush函数清空缓存区。注意,fflush函数在标准输入流上的行为是未定义的,但是在某些系统上可以清空缓存区。因此,如果要跨平台使用该程序,可能需要使用其他方法来清空缓存区。