Start by indenting your code correctly so it doesn't look like it ends with a spurious close curly bracket:
#include <stdio.h>
#include <limits.h>
int main ()
{
char StudentName[100];
char end;
float ExamValue, Sum, Avg;
int students,exams;
for (students=1; students <INT_MAX ; students++)
{
Sum =0.0;
printf("Enter Student Name \n");
scanf("%s", StudentName);
for (exams=0; exams < 3; exams++)
{
printf ("Enter exam grade: \n");
scanf("%f", &ExamValue);
Sum += ExamValue;
}
Avg = Sum/3.0;
printf( "Average for %s is %f\n",StudentName,Avg);
if (StudentName == 'end')
{
break;
}
}
return 0;
}
Now what I would look at is moving the "exit test" higher in the function, so that it's the first thing you do:
#include <stdio.h>
#include <limits.h>
int main ()
{
char StudentName[100];
char end;
float ExamValue, Sum, Avg;
int students,exams;
for (students=1; students <INT_MAX ; students++)
{
printf("Enter Student Name \n");
scanf("%s", StudentName);
if (strcmp(StudentName, "end") == 0)
{
break;
}
Sum =0.0;
for (exams=0; exams < 3; exams++)
{
printf ("Enter exam grade: \n");
scanf("%f", &ExamValue);
Sum += ExamValue;
}
Avg = Sum/3.0;
printf( "Average for %s is %f\n",StudentName,Avg);
}
return 0;
}
If that doesn't fix your problem, then you need to explain in a lot more detail exactly what it is doing that you didn't expect, or not doing that you did. And what you have done to find out why - including what the debugger showed you while your code was running.