The error appears to happen even earlier, when you read the first and last names:
for(i=0;i<entry;i++)>
{
scanf("%s%s%f",&first_name[i],&last_name[i],&score[i]);
}
This should probably read:
for (i = 0; i < entry; i++)
scanf("%s%s%f", first_name[i],
last_name[i], &score[i]);
You made last_name[i] to be a pointer to a buffer that can accept a string. By putting an ampersand before last_name, you are overwriting the buffer pointer. And when later accessing memory using this destroyed pointer, things go south.