Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 循环,可以每次通过_C - Fatal编程技术网

C 循环,可以每次通过

C 循环,可以每次通过,c,C,如何创建一个每次循环时都能接受用户输入的循环 #include <stdio.h> #define WORD "jumble" #define JUMBLED "mleujb" int main() { char string[6]; int i = 0; printf("The jumbled word is "); printf(JUMBLED); printf("\nCan you guess the original: ");

如何创建一个每次循环时都能接受用户输入的循环

#include <stdio.h>

#define WORD "jumble"
#define JUMBLED "mleujb"

int main()
{
    char string[6];
    int i = 0;
    printf("The jumbled word is ");
    printf(JUMBLED);
    printf("\nCan you guess the original: ");
    while(i == 0)
    {
        scanf("%d", string);
        if (string == "exit")
        {
            return;
        }
        if(string == WORD)
        {
            i++;
            printf("Kudos! You've guessed the word!");
        }
        else
        {
            printf("English please, good sir. Guess again.\n");
        }
    }
}
#包括
#定义“混杂”一词
#定义混乱的“mleujb”
int main()
{
字符串[6];
int i=0;
printf(“混乱的单词是”);
printf(混杂);
printf(“\n您能猜出原文:”);
而(i==0)
{
scanf(“%d”,字符串);
如果(字符串==“退出”)
{
返回;
}
if(string==WORD)
{
i++;
printf(“太好了!你猜对了!”;
}
其他的
{
printf(“请说英语,好先生。再猜一次。\n”);
}
}
}
我所希望的是,每次程序通过循环时,它都需要一个带有scanf函数的新输入。然而,这显然不起作用。相反,程序获取第一个scanf的值并反复使用它。如果它是一个错误的词,它将有一个无限循环


这个程序有不止几个错误:例如,它实际上还没有将输入与实际单词进行比较。因为这与这个问题无关,所以我现在不关心这个问题。

用于精确帮助您的伪代码不是很好 你能更好地定义你的问题吗?你并没有说到底出了什么问题

但这是我的猜测

你的测试是i==0,这意味着一旦你的用户输入了正确的单词,你就会退出你的循环

我猜你在找这样的东西

exit_condition = 0;

while (exit_condition == 0)
{

   read keyboard entry

    if(condition to exit loop)
    {

        exit_condition = 1;
        printf("correct")
    }
    else
    {
        printf("try again")
    }

}
关于测试,我想你需要仔细阅读一下输入和测试

试试这个


用于精确帮助您的伪代码并不好 你能更好地定义你的问题吗?你并没有说到底出了什么问题

但这是我的猜测

你的测试是i==0,这意味着一旦你的用户输入了正确的单词,你就会退出你的循环

我猜你在找这样的东西

exit_condition = 0;

while (exit_condition == 0)
{

   read keyboard entry

    if(condition to exit loop)
    {

        exit_condition = 1;
        printf("correct")
    }
    else
    {
        printf("try again")
    }

}
关于测试,我想你需要仔细阅读一下输入和测试

试试这个

您错误地使用了
scanf()
而不是
scanf(“%d”,string)
使用
scanf(“%s”,string)
因为%d用于十进制输入,而%s用于字符串输入

您错误地使用了
scanf()
而不是
scanf(“%d”,string)
使用
scanf(“%s”,string)
因为%d用于十进制输入,而%s用于字符串输入

  • scanf获取输入字符串不正确。正如其他人指出的,它应该是scanf(“%s”,string)
  • 无法使用“C”中的==进行字符串比较。它只会比较两个失败字符串的地址。改用“strncmp”函数
  • scanf获取输入字符串不正确。正如其他人指出的,它应该是scanf(“%s”,string)
  • 无法使用“C”中的==进行字符串比较。它只会比较两个失败字符串的地址。改用“strncmp”函数

  • 您能解释一下发生了什么吗?您的代码不能按原样编译(缺少分号,语句无效),并且请使用正确的缩进,不要将右大括号放在另一个语句旁边。使您的代码更难阅读。:)它接受原始输入并在循环中再次使用它,如果它是错误的,基本上会形成一个无限循环。您以前是否使用过
    scanf
    ?@birryrree很抱歉格式不好。您能解释一下发生了什么吗?您的代码无法按原样编译(缺少分号,无效的stations),另外,请使用正确的缩进,不要把右大括号放在另一个语句旁边。使您的代码更难阅读。:)它接受原始输入并在循环中再次使用它,如果它是错误的,则实质上会生成一个无限循环。您以前是否使用过
    scanf
    ?@birryrree对糟糕的格式表示抱歉。据我所知,它将继续运行,直到结束。也就是说,即使i的值在if结束之前发生了变化,c仍将让程序完成if语句,然后跳回检查while语句是否仍然为true。是的,它将执行到底,您在这里似乎缺少的是,在代码中,只要输入正确的答案,就退出循环。正如我所说,你不太清楚你想做什么,所以我在没有完全理解你的问题的情况下提出了一个答案。你是否试图得到一个循环,只要用户没有输入正确的答案,循环就会一直要求输入一个数字?你想让用户输入一系列答案吗?我想说的是,如果用户输入了错误的单词,循环应该重新开始,输入应该根据我的理解重新进行,它仍然会完成运行,直到结束。也就是说,即使i的值在if结束之前发生了变化,c仍将让程序完成if语句,然后跳回检查while语句是否仍然为true。是的,它将执行到底,您在这里似乎缺少的是,在代码中,只要输入正确的答案,就退出循环。正如我所说,你不太清楚你想做什么,所以我在没有完全理解你的问题的情况下提出了一个答案。你是否试图得到一个循环,只要用户没有输入正确的答案,循环就会一直要求输入一个数字?你想让用户输入一系列答案吗?我想说的是,如果用户输入了错误的单词,循环应该重新开始,并再次输入