c语言编程:输出成绩排名

问题描述
给定一批成绩(最多200个),请给出各个分数值对应的排名。在并列排名后的名次为紧接着的名次,如:有2个并列第1名,第3个成绩为第2名。
输入格式
一批用空格分隔的成绩(0~100)
输出格式
一批“成绩:名次”对,前者占4位,后者占3位且左对齐。输出不要求自己加上<回车>。
样例输入
50 84 73 95 88 0 73 84 72 75
64 67 95 91 91 33 65 92 84 67
样例输出
95:1 95:1 92:2 91:3 91:3 88:4 84:5 84:5 84:5 75:6
73:7 73:7 72:8 67:9 67:9 65:10 64:11 50:12 33:13 0:14

#include <stdio.h>
int main()
{
int i,j,temp,a[100]={0},ranking=0,n;
printf("请输入学生数:\n");
scanf("%d",&n);
printf("请输入学生成绩:\n");
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//对成绩排序
for (i=0;i<n;i++)
{
for (j=i+1;j<n;j++)
{
if (a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("成绩由高到低顺序排序:\n");
for (i=0;i<n;i++)
{
++ranking;
if ((a[i]==a[i-1]))
{
ranking=ranking-1;
}
printf("%d:%d\n",a[i],ranking);
}
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-27
c语言程序帮解决 私信
相似回答