c语言 有大佬能帮写下吗 从键盘上输入N名学生的姓名和某课成绩,按分数从高到低打印出成绩单。

 我来答
White_MouseYBZ
2019-06-09 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6711万
展开全部
#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;
}

运行样例:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式