我试图解决下面代码中循环的错误,但我不明白为什么它不会在第一个“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/