满意答案
fp7675
推荐于 2016.10.30
采纳率:48% 等级:11
已帮助:4525人
#include
struct
std
//定义学生结构体,包含学好number,成绩score,名次mc
{
int
number;
int
score;
int
mc;
};
#define
N
100
int
main()
{
int
i,j,max,num;
static
int
t=1;
struct
std
stduent[N],temp;
cin>>max;
for(i=0;i
{
cin>>stduent[i].number;
cin>>stduent[i].score;
}
for(i=0;i
//冒泡法排序,从高分到低分
{
for(j=0;j
if(stduent[j].score
{
temp=stduent[j];
stduent[j]=stduent[j+1];
stduent[j+1]=temp;
}
}
for(i=0;i
//通过前面的冒泡法排序,已知成绩从高到低排序,就可以确定学生的名次,成绩相同,名次相同,否侧加一
{
if(stduent[i].score>stduent[i+1].score)
{
stduent[i].mc=t++;
stduent[i+1].mc=t;
}
else
if(stduent[i].score=stduent[i+1].score)
{
stduent[i].mc=t;
stduent[max-1].mc=t;
}
}
cout<
成绩
"<
学号
"<
名次
"<
for(i=0;i
cout<
"<
"<<
stduent[i].number<
"<
cout<
for(i=1;i<=stduent[max-1].mc;i++)
//输出相同名次的人数和学号,同名次的学号输出在同一行中,一行最多输出10个学号
{
num=0;
for(j=i-1;j<=max-1;j++)
{
if(i==stduent[j].mc)
{
num++;
cout<
";
}
if(0==num%10)
cout<
}
cout<
}
return
0;
}
10分享举报