我正在制作一个猜谜游戏程序。主要功能要求用户猜测一个数字,如果该数字不等于正确的猜测,则将其发送到另一个函数,该函数告诉用户该数字是太高还是太低。然后第二个函数要求用户进行另一次猜测,并将猜测发送回第一个函数。
我的代码被困在第二个函数中,似乎没有退出它。我不知道该改变什么。
#include <stdio.h>
int guess(int num);
int main(void)
{
int units;
printf("How many legs on a wonderwump??\n");
scanf_s("%d", &units);
while (units != 56)
{
guess(units);
}
printf("Great guess!\n");
return 0;
}
int guess(int num)
{
if (num > 56)
{
printf("Too high of a guess! Try again!");
}
else // (num < 56)
{
printf("Too low of a guess! Try again!");
}
return scanf_s("%d", &num);
}
答案 0 :(得分:0)
每次调用第二个函数后,您需要重置units
值,因为此时它永远不会被更改。
所以改变
while (units != 56) {
guess(units);
}
到
while (units != 56) {
units = guess(units);
}
答案 1 :(得分:0)
你的代码错了。将guess
函数替换为:
int guess(int num)
{
if (num > 56)
{
printf("Too high of a guess! Try again!");
return 1;
}
else if (num < 56)
{
printf("Too low of a guess! Try again!");
return 1;
} else
return 0;
}
和
while (units != 56)
{
guess(units);
}
应该是
while (1)
{
if(guess(units) == 0)
break;
}
答案 2 :(得分:0)
使用guess(units)
传递变量值(复制值),您可以通过引用guess(&units)
发送它:
#include <stdio.h>
void guess(int* num);
int main(void)
{
int units;
printf("How many legs on a wonderwump??\n");
scanf("%d", &units);
while (units != 56)
{
guess(&units);
}
printf("Great guess!\n");
return 0;
}
void guess(int* num)
{
if (*num > 56)
printf("Too high of a guess! Try again!\n");
else // (num < 56)
printf("Too low of a guess! Try again!\n");
scanf("%d", num);
}