Este es el codigo que te di hace un tiempo (31-01-2005) con los clrscr comentados y abajo hay un screen-shot del output (CORRECTO) generado:
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#define cant 1
void main()
{
struct colegio
{ int legajo;
char apellido[30];
char nombre[30];
float prom;
}alumno[cant],aux;
int i;
//clrscr();
for (i=0;i<cant;i++)
{
printf("ingrese el nro. de legajo del alumno\n\n");
scanf("%d",&alumno[i].legajo);
fflush(stdin);
printf("ingrese el apellido del alumno (maximo 30 carac.)\n\n");
gets(alumno[i].apellido);
fflush(stdin);
printf("ingrese el nombre del alumno (maximo 30 carac.)\n\n");
gets(alumno[i].nombre);
fflush(stdin);
printf("ingrese el promedio del alumno \n\n");
fflush(stdin);
scanf("%f",&alumno[i].prom);
fflush(stdin);
//clrscr();
}
for (i=0;i<cant;i++)
{
if (alumno[i].prom>alumno[i+1].prom)
{
aux.prom=alumno[i].prom;
aux.legajo=alumno[i].legajo;
strcpy(aux.nombre,alumno[i].nombre);
strcpy(aux.nombre,alumno[i].nombre);
alumno[i].prom=alumno[i+1].prom;
alumno[i].legajo=alumno[i+1].legajo;
strcpy(alumno[i].nombre,alumno[i+1].nombre);
strcpy(alumno[i].apellido,alumno[i+1].apellido);
alumno[i+1].prom=aux.prom;
alumno[i+1].legajo=aux.prom;
strcpy(alumno[i+1].apellido,aux.apellido);
strcpy(alumno[i+1].nombre,aux.nombre);
}
}
for (i=0;i<cant;i++)
{
printf("%d\t%s,%s\t%.02f\n",alumno[i].legajo,alumno[i].apellido,alumno[i].nombre,alumno[i].prom);
}
getch();
}