c - if-else statement -


my codes allows user enter in score 1 100, either tell them score "good", "ok", "moron", or "invalid".

but, when compile these codes. output has invalid in correct statement if more 54.

for example :

  • if enter in 55 "ok" , "invalid".
  • if enter in 54 "moron".

here codes:

#define _crt_secure_no_warnings #include<stdio.h> #include<stdlib.h>  void main()    {     int score;     printf("enter score");     scanf("%d", &score);     if (score >=80 && score <= 100){         printf("good\n",);     }      if (score >=55 && score <=79){         printf("ok\n",);     }      if (score >=1 && score <=54){         printf("moron\n",);     }     else{         printf("invalid\n");     }         system("pause"); } 

it happening because instead of using 1 control flow use multiple (thus if condition met before last if control flow (score >= 55 through score <= 100), else code last 1 executed). 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 use nested if/else statements, solution above seems less cumbersome.