m0_57460422
2021-07-02 22:44
采纳率: 50%
浏览 7

这个程序为什么运行出来排名有问题,请教一下🙏

#include <stdio.h>
int max[10],min[10];
double average[10];
int no[10]={0,1,2,3,4,5,6,7,8,9};
int main()
{
char names[10][10]; /定义二维字符数组存放选手名字/
int i;
for(i=0;i<10;i++)
{
printf("please input the name of the No. %d singer\n",i+1);
/*提示用户输入编号为i+1的选手的名字*/
gets(names[i]);
/*将用户输入的字符串作为该选手的名字*/
}
int score[10][7],j;
for(i=0;i<10;i++)
{
printf("\nplease input the score of the No. %d singer\n",i+1);
/*提示用户输入编号为i+1的选手的成绩*/
for(j=0;j<7;j++)
scanf("%d",&score[i][j]);
}
for(i=0;i<10;i++)
{
max[i]=score[i][0];
for(j=1;j<7;j++)
if(score[i][j]>max[i])
max[i] = score[i][j];
printf("the highest score of the No.%d singer is:%d\n", i+1, max[i]);
}
for(i=0;i<10;i++)
{
min[i]=score[i][0];
for(j=1;j<7;j++)
if(score[i][j]<min[i])
min[i] = score[i][j];
printf("the lowest score of the No.%d singer is:%d\n", i+1, min[i]);
}
int sum,temp; /清零/
for(i=0;i<10;i++)
{
sum=0;
for(j=0;j<7;j++)
sum+=score[i][j]; /累加/
sum=sum-max[i]-min[i]; /去掉最高和最低分/
average[i] = (double)sum/5; /计算平均分/
printf("the average score of the No.%d singer is:%lf\n\n", i+1, average[i]);
}
for(i=1;i<=6;i++)
{
for(j=0;j<7-i;j++)
{
/比较的average[no[j]],而不是no[j]本身/
if(average[no[j]]<average[no[j+1]])
{
temp=no[j]; no[j]=no[j+1]; no[j+1]=temp; /交换排名位置/
}
}
}
for(i=0;i<10;i++)
printf("%d : %s(number:%d) get %lf\n",i,names[no[i]],no[i]+1,average[no[i]]);
return 0;
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qfl_sdu 2021-07-02 23:06
    已采纳

    排序这里:
    for(i=1;i<=6;i++) //应该是for(i=0;i<6;i++)
    for(j=0;j<7-i;j++) //应该是for(j=0;j<6-i;j++)

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 执意孤心 2021-07-02 23:13

    1111

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题