问题描述
输入n名(100>n>0)同学的课程考试成绩,成绩均为浮点数(0<=成绩<=100),且n人成绩各不相同。编写程序,输出这n名同学成绩对应的名次,最高成绩名次为1,依次类推。
输入说明
输入为两行,第一行是一个整数n表示n个人;第二行为n个浮点数,表示n个人的成绩,成绩均为浮点数(0<=成绩<=100),且n人成绩各不相同。
输出说明
依次输出n个整数,分别表示各人成绩对应名次,数据间空一个空格。
输入样例
5
60 98 70.5 45 20
输出样例
3 1 2 4 5
代码:
#include<stdio.h>
int main()
{
float a[10],b[2][10],t,z=1.0;
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%f",&a[i]);
for(i=0;i<n;i++)
b[0][i]=a[i];
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(b[0][j]<b[0][j+1])
{
t=b[0][j];
b[0][j]=b[0][j+1];
b[0][j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
b[1][i]=z;
z++;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i]==b[0][j])
a[i]=b[1][j];
}
}
for(i=0;i<n;i++)
printf("%d ",(int)a[i]);
return 0;
}
本人写的比较复杂,没有想到简单的算法...