I have created a student grading program that should allow me to enter gades ansd also sort according to date, oldest first. The code supplied is a different version compared to the earlier one.

Code:
/* Question 3. It describes a student using structures and arrays to
store and print data */

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

#define N_student 4
int i,n;

struct student
{
 char id[5];
 char name[50];
 double Bday,Bmonth,Byear;
 double mark1, mark2, mark3;
 double av_marks;
 char grade;
} students [N_student];

void assigngrade();
void printavg();

main()
{
   char buffer[50];
   double total;
   for (i=0; i<N_student; i++)
   {
	printf("Enter Student ID no: \n");
 	 gets(students[n].id);
	printf("Enter Student name: \n");
	 gets (students[n].name);
	printf("Enter Date Of Birth (dd):");
	gets (buffer);
    students[n].Bday = atof (buffer);
	printf("Enter Month Of Birth (mm):");
	gets (buffer);
    students[n].Bmonth = atof (buffer);
	printf("Enter Year Of Birth (yyyy):");
	gets (buffer);
    students[n].Byear = atof (buffer);
	printf("Enter marks obtained for test1(0-4): \n");
	 gets (buffer);
         students[n].mark1 = atof (buffer);
	printf("Enter marks obtained for test2(0-4): \n");
	 gets (buffer);
         students[n].mark2 = atof (buffer);
	printf("Enter marks obtained for test3(0-4): \n");
	gets (buffer);
        students[n].mark3 = atof (buffer);
    total = (double)students[n].mark3 + (double)students[n].mark2 + (double)students[n].mark1;
	students[n].av_marks = (double)total/3;
	assigngrade();
   }
	printf("You've entered the students details. \n");

	printavg();
    system("PAUSE");
return 0;
}

void assigngrade()
{
    if ((students[n].av_marks<=4) && (students[i].av_marks>3))
		{
		students[i].grade='A';
		}
    else if ((students[i].av_marks<=3) && (students[i].av_marks>2))
		{
		students[i].grade='B';
		}
    else if ((students[i].av_marks<=2) && (students[i].av_marks>1))
		{
		students[i].grade='C';
		}
    else if ((students[i].av_marks<=1)	 && (students[i].av_marks>=0))
		{
		students[i].grade='D';
		}
}

void printavg()        /* prints the average grade for a student */
{
for (i=0; i<N_student; i++)
{

	printf ("Student Id=");
	printf ("%s\n",students[i].id);
	printf ("Student Name=");
	printf ("%s\n",students[i].name);
	printf ("Student Average marks=");
	printf ("%.2f\n",students[i].av_marks);
	printf ("Student Grade=");
	printf ("%c\n",students[i].grade);
}

}

Right now the question is how do i sort according to date, oldest first?