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.