First things first: Forget you ever saw the keyword "goto" or how to create labels. Do not use them again for at least four years of "C" coding - if you need them, you have designed your code wrong. After four years, you should know enough to understand where you should use them, but you will also know enough to probably not need to either...
If you had done this using loop constructs it would be obvious what your problem is:
int main(void)
{
int m;
char ch;
bool done = false;
clrscr();
printf("ENTER MARKS (0-100) : ");
scanf("%d",&m);
while (!done)
{
if(m<40)
printf("\nResult :\n %d is FAIL",m);
else if(m>=40 && m<50)
printf("\nResult :\n %d is THIRD CLASS",m);
else if(m>=50 && m<60)
printf("\nResult :\n %d is SECOND CLASS",m);
else if(m>=60 && m<70)
printf("\nResult :\n %d is FIRST CLASS",m);
else if(m>=70 && m<=100)
printf("\nResult :\n %d is DISTINCTION",m);
else
printf("\n %d is Invalid Marks",m);
printf("\n Do you want to check another mark : Type (Y/N)");
printf("\n Enter choice : ",ch);
scanf("%c",&ch);
if(ch == 'Y' || ch == 'y')
done = false;
else if(ch == 'N' || ch == 'n')
done = true;
else
printf("\nInvalid selection",ch);
}
return 0;
}
Now, move the loop construct so that the prompt for and input of the new value are within the loop...
[edit]Missed the lack of conditional testing :doh: - OriginalGriff[/edit]