C++临走前奉献:学生成绩排序

来源:百度知道 编辑:UC知道 时间:2024/05/10 17:42:11
按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出10个学号。

#include <stdio.h>
#include <stdlib.h>
typedef struct _st {
char *xh; // 学号
int score; // 成绩
} st;

int compare(const void *a, const void *b)
{
return ((st *) b)->score - ((st *) a)->score;
}

int main()
{
int i, j, k, n; // number of students
printf("input number of students: ");
scanf("%d", &n); // input
st *p = malloc(n * sizeof(st));

for (i = 0; i < n; i++) {
printf("输入第%d个学生的学号和分数:", i);
scanf("%ms%d", &p[i].xh, &p[i].score); // input
}

qsort(p, n, sizeof(p[0]), compare);

for (i = 0, j = 0, k = 0; i < n; i++) {
if (i > 0 && p[i].score == p[i - 1].score) {

分数弄成浮点型试下 并且多个
跟字符串一起输入

记得回来给分啊,我这么支持你。
这个程序很小啊,哈哈。

......收藏了

一路走好?!!

快走吧。

还没走呢