c语言 名字 分数排序,C语言 学生成绩排序 按学生的序号输入 n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩...

满意答案

00e27ab806e4881f8254fe7ae8741834.png

woaizyb

推荐于 2018.05.24

00e27ab806e4881f8254fe7ae8741834.png

采纳率:49%    等级:12

已帮助:7953人

#include 

#include 

typedef struct student

{

int index; //学生的序号

int score; //学生的成绩

}STUDENT_T;

//根据学生成绩进行冒泡排序

void ranking(STUDENT_T *a, int cnt)

{

int i = 0;

int j = 0;

STUDENT_T tmp = {0};

for (i = 0; i 

{

for (j = i+1; j 

{

if (a[i].score 

{

memcpy(&tmp, &a[j], sizeof(STUDENT_T));

memcpy(&a[j], &a[i], sizeof(STUDENT_T));

memcpy(&a[i], &tmp, sizeof(STUDENT_T));

}

}

}

}

void main(int argc, char *argv[])

{

int i = 0;

int j = 0;

int cnt = 0;

int rank = 0;

STUDENT_T student[1024] = {0};

char tmp[32] = {0};

printf("请输入学生人数:\n");

scanf("%d", &cnt);

if (cnt > 1024)

{

printf("最多1024个学生\n");

return;

}

printf("请按序号依次输入%d个学生的成绩\n", cnt);

for (i = 0; i 

{

printf("第%d个学生:\n", i+1);

scanf("%s", tmp);

student[i].index = i+1;

student[i].score = atoi(tmp);

}

//根据成绩进行排名

ranking(student, cnt);

//计算名次并打印

for (i = 0; i 

{

//名次要考虑到并列的情况

if (0 == i || student[i].score != student[i-1].score)

{

rank = i+1;

}

printf("名次:%d 序号:%d 成绩:%d\n", rank, student[i].index, student[i].score);

}

}

011分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值