麻烦帮我看见哪里有问题,我一直找不出来,有的测试点一直过不了
定义结构体struct stu,编写成绩排名函数:void sort(struct stu *ps,int n),对结构体数组按成绩排名。 程序功能为读入整数N(N<100),再读入N个学生的学号(整型)和成绩(实数)。按样例输出排名。
输出格式:
第一列是名次,注意并列情况;第二列是学号,第三列是成绩(2位小数)。
输入样例:
5
101 99
102 100
103 50
104 80
105 99
输出样例:
1 102 100.00
2 101 99.00
2 105 99.00
4 104 80.00
5 103 50.00
#include <stdio.h>
struct stu
{
int num;
double grade;
};
void sort(struct stu *ps,int n)
{
int i,j,t,m;
for(i=0;i<n;i++){
scanf("%d %lf",&ps[i].num,&ps[i].grade);
}
for(i=0;i<n;i++){
for(j=i;j<n-i-1;j++){
if(ps[j].grade<ps[j+1].grade){
t=ps[j].grade;
ps[j].grade=ps[j+1].grade;
ps[j+1].grade=t;
m=ps[j].num;
ps[j].num=ps[j+1].num;
ps[j+1].num=m;
}
}
}
int k=1,p=1;
for(i=0;i<n;i++){
if(ps[i-1].grade!=ps[i].grade){
printf("%d %d %.2f\n",p,ps[i].num,ps[i].grade);
k=p;
p++;
}else{
printf("%d %d %.2f\n",k,ps[i].num,ps[i].grade);
p++;
}
}
}
int main()
{
int n;
scanf("%d",&n);
struct stu p[100];
sort(p,n);
return 0;
}