满意答案
#include
#include
#include int Input(long *pnum, char *pname[], int *pscore);
void Sort(long *pnum, char *pname[], int *pscore, int n);
void Print(long *pnum, char *pname[], int *pscore, int n);int main(void)
{
long pnum[30];
char *pname[30];
int pscore[30];
int n;
int i;
for(i = 0; i < 30; i++)
{
pname[i] = (char*)malloc(126);
}
n = Input(pnum, pname, pscore);
Sort(pnum, pname, pscore, n);
printf("\n");
Print(pnum, pname, pscore, n);
for(i = 0; i < 30; i++)
{
free((char*)pname[i]);
}
return 0;
}int Input(long *pnum, char *pname[], int *pscore)
{
int n = 0;
long num;
char name[126];
int score;
while(n < 30)
{
// printf("输入学号、姓名和分数:");
scanf("%ld%s%d", &num, name, &score);
if(score < 0)
{
break;
}
pnum[n] = num;
strncpy(pname[n], name, 125);
pscore[n] = score;
n++;
}
return n;
}void Sort(long *pnum, char *pname[], int *pscore, int n)
{
int i, j;
long num_tmp;
char name_tmp[126];
int score_tmp;
for(i = 0; i < n; i++)
{
for(j = 0; j < n-i-1; j++)
{
if(pscore[j] < pscore[j+1])
{
num_tmp = pnum[j];
pnum[j] = pnum[j+1];
pnum[j+1] = num_tmp; strncpy(name_tmp, pname[j] ,125);
strncpy(pname[j], pname[j+1], 125);
strncpy(pname[j+1], name_tmp, 125); score_tmp = pscore[j];
pscore[j] = pscore[j+1];
pscore[j+1] = score_tmp;
}
}
}
}void Print(long *pnum, char *pname[], int *pscore, int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%d %ld %s %d\n", i+1, pnum[i], pname[i], pscore[i]);
}
}
00分享举报