^/(trucks|cars|planes|system|tools)(?![^\s?]*\?)
因此,在用户找到正确的随机数后,我希望他们能够再次玩游戏(如果他们想要的话)。如何让代码重新运行?我尝试在我的guessGame函数中执行此操作,但我知道这是错误的。
答案 0 :(得分:0)
我看到的最简单的方法是让guessGame返回一个bool。如果他们做对了就是对的,如果他们弄错的话就是假的。然后在你的main中,有另一个bool变量,让我们说guessedRight,将它设置为guessGame的返回值,并将其用作while循环条件。
可能更容易的是将用户猜测的行移动到guessGame函数中(然后它不带参数)。那么你再次调用geussGame的尝试应该有效。
所以选项1:编辑guessGame的开头
void guessGame(){
int guessed_num = 0;
scanf("%d", &guessed_num);
然后完全删除
if (answer = 'n')
return 0;
它没有用处,你的功能无论如何都是一个无效的返回类型。然后在main中调用guessGame。使用这种方法你也不需要一个while循环。
选项2:更改guessGame的返回类型
bool guessGame(){
int guessed_num = 0;
scanf("%d", &guessed_num);
扫描,得到答案,然后
if (answer = 'y')
return true;
return false
然后在主要方面,我认为你实际上可以做到
while(guessGame()) {}
答案 1 :(得分:0)
由于我的英语不好,我会给你代码(由你修改)。
#include<stdio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int random_num;
int guessGame(int guessed_num) {
if (guessed_num == random_num) {
printf("Correct! That's the number.\n");
return 1;
} else if (guessed_num < random_num) {
printf("Too low. Guess again.\n");
return 0;
} else {
printf("Too high. Guess again.\n");
return 0;
}
}
int main() {
char loop;
while (1) {
int guessed_num = 0;
srand(time(NULL));
random_num = rand() % 50 + 1;
printf("I have a number between 1-50.\n");
printf("Can you guess what it is?\n");
printf("Enter your initial guess.\n");
while (1) {
scanf("%d", &guessed_num);
int returnValue = guessGame(guessed_num);
if (returnValue == 1) {
break;
}
}
printf("You wanna do it again? ");
getchar();
scanf("%c", &loop);
if (loop == 'n') {
break;
}
}
return 0;
}