c语言 有大佬能帮写下吗 从键盘上输入N名学生的姓名和某课成绩,按分数从高到低打印出成绩单。
展开全部
#include "stdio.h"
#include <stdlib.h>
struct STU{
char name[15];
int score;
};
int main(int argc,char *argv[]){
int N,i,j,k;
struct STU *pstu,t;
printf("Enter N(int 0<N)...\nN=");
if(scanf("%d",&N)!=1 || N<1){//有几个学生?
printf("Input error, exit...\n");
return 0;
}
if((pstu=(struct STU *)malloc(sizeof(struct STU)*N))==NULL){//动态申请空间
printf("Application memory failure...\n");
return 0;
}
for(i=0;i<N;scanf("%14s%d",pstu[i++].name,&pstu[i].score));//输入数据
printf("\n\tNAME\tSCORE\n ===============\n");
for(i=0;i<N;i++){//排序并输出
for(k=i,j=k+1;j<N;j++)
if(pstu[k].score<pstu[j].score)
k=j;
if(k!=i)
t=pstu[k],pstu[k]=pstu[i],pstu[i]=t;
printf("\t%s\t%d\n",pstu[i].name,pstu[i].score);//从高至低输出
}
free(pstu);//释放动态空间
return 0;
}
运行样例:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询