c - 当我的随机数大于我写的数字时,为什么我的计数变为 0?
问题描述
我为一个生成随机数的游戏编写了 C 代码,用户必须猜测正确的数字。因此,每当我写一个数字并且它大于随机数时,我的代码都会按应有的方式执行。但是,当我写一个小于随机数的数字时,计数变量变为零,而不是将计数值减 1。我不知道我做错了什么?我附上了可以看到问题的输出图像。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
time_t t;
int a,count=5;
srand((unsigned)time(&t));
int randomnumber=rand()%21;
printf("This is a guessing game, Only 5 tries are left\n");
printf("enter the number: ");
scanf("%d",&a);
printf(" \n");
if (a>=20){
printf("ERROR!! Enter number only between 0-20\n");
}
printf("You only have %d tries left\n",count);
printf("enter number only between 0-20: ");
scanf("%d",&a);
printf(" \n");
if (a==randomnumber){
printf("You guessed it correctly, YOU WIN!!\n");
}
else{
for(count=4;count>=1;count--)
{
if (a>randomnumber){
printf("My number is smaller than that\n");
printf("You only have %d tries left\n",(count));
printf("enter number again: ");
scanf("%d",&a);
printf(" \n");
}
}
if (a<randomnumber){
printf("My number is greater than that\n");
printf("You only have %d tries left\n",(count));
printf("enter number again: ");
scanf("%d",&a);
printf(" \n");
}
if (a==randomnumber){
printf("You guessed it correctly, YOU WIN!!\n");
}
}
if (a!=randomnumber)
{
printf("You LOOSE!!, the Number was %d",randomnumber);
}
return 0;
}
解决方案
您对a < randomnumber
anda == randomnumber
的测试不在for
循环内。因此,您只有在一直数到 后才检查它们0
。
您需要将所有测试放入循环中。您还应该使用else if
这样您就不会检查他们在同一迭代中输入的新数字(因为您还没有递减count
)。
当他们猜测数字时,您需要跳出循环。
最简单的组织方法是从块中取出提示输入下一个数字的所有代码if
,因为小于和大于相同。这些if
块只是打印错误的方式,并在他们获胜时爆发。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
time_t t;
int a,count=5;
srand((unsigned)time(&t));
int randomnumber=rand()%21;
printf("This is a guessing game, Only 5 tries are left\n");
printf("enter the number: ");
scanf("%d",&a);
printf(" \n");
if (a>=20){
printf("ERROR!! Enter number only between 0-20\n");
}
printf("You only have %d tries left\n",count);
printf("enter number only between 0-20: ");
scanf("%d",&a);
printf(" \n");
if (a==randomnumber){
printf("You guessed it correctly, YOU WIN!!\n");
}
else{
for(count=4;count>=1;count--)
{
if (a>randomnumber) {
printf("My number is smaller than that\n");
} else if (a<randomnumber) {
printf("My number is greater than that\n");
} else {
printf("You guessed it correctly, YOU WIN!!\n");
break;
}
printf("You only have %d tries left\n",(count));
printf("enter number again: ");
scanf("%d",&a);
printf(" \n");
}
}
if (a!=randomnumber)
{
printf("You LOOSE!!, the Number was %d",randomnumber);
}
return 0;
}
推荐阅读
- python - 在后台执行 python 脚本,同时返回对话流响应(Python Flask)
- angular - Angular 不会在异步任务中显示任何类型的 Observable userdata
- react-native - 使用操作按钮时出现 Usenativedriver 错误 - 动画问题
- pandas - 大熊猫 df.describe() 上的 TQDM
- javascript - 如何使用正则表达式或字符串函数在字符串中插入反斜杠以在 JavaScript 中的 \ 之后提取子字符串?
- c - 编译器优化不尊重`-pthreads`
- python - 使用请求模块 Python 登录 Instagram 时遇到问题
- angular - 安装角度编译器的问题
- python - 烧瓶:sqlalchemy.exc.ProgrammingError:(psycopg2.errors.UndefinedColumn)列
- html - 滚动时jQuery元素位置绝对更改顶部