一旦用户在决策部分中输入1,我试图终止程序,但是即使用户输入1,它仍然继续要求输入。请帮忙,我好像没弄错什么。
#include <stdio.h>
int main()
{
int H, N, mark, s, n, last;
/*Student Marks Input, Grade Output/Loop*/
do
{
printf("Please enter your marks:");
scanf("%i", &mark);
if(mark>100)
{
printf("Invalid Input\n");
printf("Re-enter your marks:");
scanf("%i",&mark);
}
if(mark>=80)
{ H++;
printf("You got a H\n");
}
else
if(mark>=70)
{
printf("You got a D\n");
}
else
if(mark>=60)
{
printf("You got a C\n");
}
else
if(mark>=50)
{
printf("You got a P\n");
}
else
if(mark<=49)
{
N++;
printf("You got an N\n");
}
/*Decisions*/
printf("Are you the last student?(Y=1/N=0):");
scanf("%i", &last);
if(last==0)
{
n++;
}
else if (last==1)
{
s++;
}
}
while(s>0);
/*Results*/
if(H>N)
printf("Good Results");
else
printf("Bad Results");
return 0;
}
最佳答案
首先,就像对未初始化的变量进行操作一样,您的代码中具有未定义的行为。
未初始化的局部变量,例如s
,具有不确定的值,例如s++
将导致不确定的行为。变量s
并不是唯一您不初始化然后对其执行操作的变量。
然后,在初始化s
时,请记住循环会继续迭代while (s > 0)
,因此,如果将s
初始化为零,则执行s++
意味着s
将大于零,并且循环将继续。
您应该将s
初始化为零,然后循环while (s == 0)
。
或者,您知道,只需break
即可:
if (last == 1)
break;
// No else, no special loop condition needed, loop can be infinite
关于c - 如何终止程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36339351/