C语言并列名次如何输出?

2025-04-16 09:02:39
推荐回答(2个)
回答1:

#include "stdio.h"
int main(int argc,char *argv[]){
int n,i,j,k,t,s[30];
printf("How many students(1~30)?\nn=");
while(scanf("%d",&n)!=1 || n<1 || n>30){//限制学生数1~30,若输错了要求重输
fflush(stdin);
printf("Input error, redo: ");
}
printf("Enter each student's total grade...\n");
for(i=0;i printf("\n");
for(i=0;i for(k=i,j=k+1;j if(s[k] k=j;
if(k-i)
j=s[k],s[k]=s[i],s[i]=j;//到这里排序内容结束,下面是顺便输出
if(!i || s[i]!=s[i-1])//这个if小算法解决重分为同名次且占位问题
t=i+1;
printf("%d:\t%d\n",s[i],t);//输出
}
return 0;
}

运行样例:

回答2:

#include int main() { int i,j,temp,a[100]={0},ranking=0,n; printf("请输入学生数:\n"); scanf("%d",&n); printf("请输入学生成绩:\n"); for (i=0;i