c - 再玩一次函数c

标签 c function while-loop do-while

我有一个家庭作业,基本上是根据用户的输入来创建一个高尔夫游戏,询问要打多少洞,每个洞的标准杆是多少,然后随机生成那个人在那个洞上打的球,然后打印出来。最后,它要求用户再次播放,输入 y 或 Y 表示是,输入 n 或 N 表示否,等等。我程序中的一切工作正常,除了我不能完全让播放功能正常工作。这是我的代码,特别是我的主要方法和再次播放方法:

int main() {
int holes, par, strokes, count = 1, low, high, go;
char *shotName;
go = 1;
while (go != 0) {
    count = 1;
    holes = readHoles();
    do {
        printf("\nHole number: %i\n", count);
        par = readPar(holes);
        low = 1;
        high = par + 5;
        strokes = calcStrokes(low, high);
        shotName = getName(par, strokes);
        printStatement(count, par, strokes, shotName);
        count++;
    }while (count <= holes);
    go = goAgain();
}
return 0;

int goAgain() {
char *temp;
printf("\nWould you like to play again(Y/N)? " );
scanf("%s", temp);
while (temp != 'y' || temp != 'Y' || temp != 'n' || temp != 'N') {
    printf("\nI am sorry that is invalid -- try again\n");
    printf("Would you like to play again(Y/N)? " );
    scanf("%c", &temp);
}
if (temp == 'y' || temp == 'Y') {
    return 1;
} else {
    return 0;
}

我想我只是对如何使用 while 循环或 do while 循环来完成这项工作感到困惑。这行得通,但是当我运行程序并到达必须输入是或否的地步时,我键入的任何内容都会导致程序突然崩溃。我不知道该怎么办。 基本上,我希望用户输入一些内容,如果是,则再次玩整个游戏,如果不是,则结束循环,如果是其他内容,则给他们一个错误并再次提示他们。今晚到期,我们将不胜感激! :/谢谢

最佳答案

while (temp != 'y' || temp != 'Y' || temp != 'n' || temp != 'N') {

temp 不能一次全部为 4,所以这将始终评估为 true 将其更改为 &&

关于c - 再玩一次函数c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370406/

相关文章:

c - 将字符串的一部分 append 到另一个字符串

循环内的 C 代码未被执行

c - Valgrind - strcpy 大小为 1 的无效写入

java - Java 8 中的谓词和函数接口(interface)有什么区别?

php - 使用连接表对 mysql 结果进行分组

在 C 中导致缓冲区溢出以强制条件为真

c - 如何在C中调用一个函数?另外,为什么几乎每一行代码都是错误的?

python - 如何在Python中引用列表中的字符串

javascript - 在复杂例程中使用多个值的最简洁方法?

c++ - 是否可以在没有用户输入的情况下跳过 getline()?