if-else statement

前端 未结 3 608
-上瘾入骨i
-上瘾入骨i 2021-01-21 08:57

My codes allows the user to enter in a score from 1 to 100, which will either tell them that the score is \"Good\", \"OK\", \"Moron\", or \"Invalid\".

But, when I compil

相关标签:
3条回答
  • 2021-01-21 08:59

    It is happening because instead of using one control flow you use multiple (thus if condition is met before the last if control flow (score >= 55 through score <= 100), else code from the last one is also executed). You can use else if branches:

    if (score >= 80 && score <= 100){
       printf("Good\n",);
    } else if (score >= 55 && score <= 79){
       printf("OK\n",);
    } else if (score >= 1 && score <= 54){
       printf("Moron\n",);
    } else {
       printf("Invalid\n");
    }
    

    You can also use nested if/else statements, but the solution above seems less cumbersome.

    0 讨论(0)
  • 2021-01-21 08:59

    Each if statement is a standalone conditional statement. Your example has three groups of conditional statements:

    1. if (score >=80 && score <= 100)
    2. if (score >=55 && score <=79)
    3. if (score >=1 && score <=54) { ... } else { ... }

    So if score has the value 55, it will match against #2 above and the else of #3.

    One solution here would be to combine the above statements into one group. You can do this with else if.

    e.g.

    if (*expr*) {
        ...
    } else if (*expr*) {
        ...
    } else if (*expr*) {
        ...
    } else {
        ...
    }
    
    0 讨论(0)
  • 2021-01-21 09:02

    You have 2 if-else statements and both get executed. So you will do "something" for both of them. Walk through your code with score=55 and you'll find the problem.

    2 solutions:

    1. Make the ifs "standalone" (so only one will pass)
    2. Add some elses to ensure only one of your branches executes.
    0 讨论(0)
提交回复
热议问题