sea_flowers 2021-07-02 22:44 采纳率: 50%
浏览 25
已采纳

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

#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++)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效