满意答案
woaizyb
推荐于 2018.05.24
采纳率: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分享举报