c:如果其他情况下不起作用,则最后循环

时间:2018-10-22 14:36:29

标签: 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;

1 个答案:

答案 0 :(得分:2)

  

我不知道为什么它不会在第一个“ if”中再出现在最后一个中   “ else”(“ Introduceti d sau n!”),我写“ n”。 'd'工作正常   然后返回“ else if”。

由于您的GoogleApiAvailability does not exist in the context循环条件(while)。只要您输入while(decizie != 'n')以外的任何内容,循环就会执行。当您输入n作为输入时,它将不会出现在第一个if中。