c: if elseif else 中的最后一个循环不起作用

标签 c loops if-statement

我试图解决下面代码中循环的错误,但我不明白为什么它不会在第一个“if”中再次出现,在最后一个“else”之后(“Introduceti d sau n! "), 我写'n'。 'd' 工作正常并返回到“else if”。在上次修订的代码中,我更新了工作代码。至少,它在我在最后一个“else”句子中按“n”并带我回到第一个菜单后起作用。

原始代码

switch(alegere_opt1)
{
    case 1:
        while(decizie != 'n')
        {          
            alegereStudent(&stud);
            printf("Doriti sa introduceti un nou student? (d/n):");
            scanf(" %c",&decizie);
            if (decizie == 'n')
                {
                meniuPrincipal();
                alegereStudent(&stud);
                printf("Doriti sa introduceti un nou student? (d/n):");
                scanf(" %c",&decizie);
                }
            else if (decizie == 'd')
                {
                alegereStudent(&stud);
                printf("Doriti sa introduceti un nou student? (d/n):");
                scanf(" %c",&decizie);
                }
            else
                {
                printf("Introduceti d sau n! ");
                scanf(" %c",&decizie);
                }
        }
        break;

修改后的代码:

switch(alegere_opt1)
{
case 1:
{           
            alegereStudent(&stud);
            printf("Doriti sa introduceti un nou student? (d/n): ");
            scanf(" %c",&decizie);
                 if (decizie == 'n')
                    {
                    meniuPrincipal();
                    alegereStudent(&stud);
                    }

                   else if (decizie == 'd')
                    {
                    alegereStudent(&stud);
                    }
                    else
                     {
                    printf("Introduceti d sau n! ");
                    scanf(" %c",&decizie);
                     }
}
break;

修改后的代码正确:

    switch(alegere_opt1)
{
     case 1: while (decizie != 'z')
     {          
                {          
            alegereStudent(&stud);
            printf("Doriti sa introduceti un nou student? (d/n):");
            scanf(" %c",&decizie);
            if (decizie == 'd')
                {
                alegereStudent(&stud);
                printf("Doriti sa introduceti un nou student? (d/n):");
                scanf(" %c",&decizie);
                }
            else if (decizie == 'n')
                {
                meniuPrincipal();
                }
            else
                {
                printf("Introduceti d sau n! ");
                scanf(" %c",&decizie);
                    if (decizie == 'n')
                    {
                    meniuPrincipal();
                    }
                }

                }
     }
        break;

最佳答案

I can't figure out why it won't go again in first "if", after in last "else" ("Introduceti d sau n! "), I write 'n'. The 'd' is working fine and going back to "else if".

因为您的 while 循环条件 (while(decizie != 'n'))。只要您提供 n 以外的任何内容作为输入,循环就会执行。它不会出现在第一个 if 中,因为您将 n 作为输入。

关于c: if elseif else 中的最后一个循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931889/

相关文章:

c - .avi 文件的无操作重新混合

c - 循环中的 fread fwrite 错误 - C

java - 循环后写入字符串

php - 如果变量的语句错误

javascript - 有没有办法在 document.write 中编写 i/else 语句?

c - 如何在 IAR 上使用 stdin.h

c++ - 适用于 Windows、Linux 等的跨平台 API 开发

java - 用户输入后重复执行的代码

Perl 创建散列引用并一次从每个分支循环一个元素

java - 缺少多个 IF 的 return 语句