问题描述:输入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()
{
int n;
scanf ("%d", &n);
double a[100],b[100];
int k, l;
for (k=0;k<n;k++) //引入数组a
{
scanf ("%lf",&a[k]);
}
for (k=0;k<n;k++) //将a中的数组复制到b中,因为下面a的顺序要改变
b[k]=a[k];
int temp;
for (k=0;k<n-1;k++) //将a中数组由大到小排列
{
for (int l=0;l<n-1-k;l++)
{
if(a[l]<a[l+1])
{
temp=a[l];
a[l]=a[l+1];
a[l+1]=temp;
}
}
}
int i,j;
int sum[n]={0};//引入数组记录a与b比较次数
for(i=0;i<n;i++)//将b中的数依次与a比较看是否相等
{
for (j=0;j<n;j++)
{
if(b[i]!=a[j]) //如果a与b不等,次数加一
sum[i]++;
else
{
printf ("%d ", sum[i]+1);
break;
}
}
}
return 0;
}