Code:
while (infile >> CL[ns].lastname)
{
(CL[ns].firstname);
while (y = 0; y < 4; y ++)
{
(CL[ns].exams[y]);
ns++;//////////////////////////////////here's the problem, I think. With this line here each student is only going to get one exam grade in the exams array, with the firtst student getting a report in exams[0] the second student in exams[1], the third in exams[2], the fourth in exams[3], the fifth in exams[0] again, etc. I'll leave it up to you to figure out where to put this line.
This is an example of why I think the coding style displayed here is easier to debug than the one you used, although the one you used is a common style.
}//while1
}//while2