一旦用户在决策部分中输入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/

10-10 17:27