C++问题:请帮我找出问题
答案:4 悬赏:0 手机版
解决时间 2021-05-10 01:05
- 提问者网友:藍了天白赴美
- 2021-05-09 03:23
有3位歌手参加比赛,有6位评委对他们进行10分制打分,编程序求各位选手的平均分(打分按照先去掉一个最高分和最低分再求平均值的方式进行)。
以下是我编的但是有点问题不知是哪里出了问题?编译可以就是输入选手分时有问题了,请帮我找出问题,谢谢!
#include <stdio.h>
void main()
{
int t,j,man[3][6],i;
float avg[3];
for(i=0;i<3;i++)
{
printf("please input NO. %d man score:\n",i+1);
for(j=0;j<6;j++)
scanf("%d",man[ i ][ j ]);
}
for(i=0;i<3;i++) //先用冒泡从小到大排序
{
for(j=0;j<6-i;j++)
{
if(man[ i ][ j ]>man[ i ][ j+1 ])
{
t=man[ i ][ j ];
man[ i ][ j ]=man[ i ][ j+1 ];
man[ i ][ j+1 ]=t;
}
}
}
for(i=0;i<3;i++) //去除最小值和最大值
{
for(j=1,avg[ i ]=0;j<5;j++)
{
avg[ i ]+=man[ i ][ j ];
}
avg[ i ]=avg[ i ]/4;
printf("NO. %d man avg score is%f ",i+1,avg[ i ]);
}
}
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-05-09 04:53
这个代码有两个错误的地方,一个是输入的时候没加取址运算符,另一个是冒泡法错了。
#include <stdio.h>
void main()
{
int t, i, j, k, man[3][6]; //增加一个循环变量k
float avg[3];
for(i = 0; i < 3; i++)
{
printf("please input NO. %d man score:\n", i + 1);
for(j = 0; j < 6; j++)
scanf("%d", &man[i][j]); //传递给scanf函数的参数应该是变量的地址
}
for(i = 0; i < 3; i++) //先用冒泡从小到大排序
for(j = 0; j < 6; j++)
for(k = 5; k > j; k--) //这是2维数组,对数组的每行分别排序应该用3重循环
if(man[i][k] < man[i][k - 1])
{
t = man[i][k];
man[i][k] = man[i][k - 1];
man[i][k - 1] = t;
}
for(i = 0 ; i < 3; i++) //去除最小值和最大值
{
for(j = 1 , avg[i] = 0; j < 5; j++)
avg[i] += man[i][j];
avg[i] /= 4;
printf("NO. %d man avg score is %f\n", i + 1, avg[i]); //加上换行
}
}
运行截图:
全部回答
- 1楼网友:洎扰庸人
- 2021-05-09 07:18
改写后的没有错误了。
#include <stdio.h>
void main()
{
int t,j,man[3][6],i,k;
float avg[3]={0};
for(i=0;i<3;i++)
{
printf("please input NO. %d man score:\n",i+1);
for(j=0;j<6;j++)
scanf("%d",&man[ i ][ j ]);
}
for(i=0;i<3;i++) //先用冒泡从小到大排序
{
for(k=0;k<6;k++)
for(j=k;j<6-k;j++)
{
if(man[ i ][ j ]>man[ i ][ j+1 ])
{
t=man[ i ][ j ];
man[ i ][ j ]=man[ i ][ j+1 ];
man[ i ][ j+1 ]=t;
}
}
}
for(i=0;i<3;i++) //去除最小值和最大值
{
for(j=1 ;j<5;j++)
avg[ i ]+=man[ i ][ j ];
avg[ i ]=avg[ i ]/4;
printf("NO. %d man avg score is%f \n",i+1,avg[ i ]);
}
}
scanf("%d",man[ i ][ j ]);
man前面要加地址符
scanf里,第二个参数,一定要用地址的或指针的
- 3楼网友:街头电车
- 2021-05-09 06:06
for(i=0;i<3;i++)
{
printf("please input NO. %d man score:\n",i+1);
for(j=0;j<6;j++)
scanf( "%d", &man[ i ][ j ] ); //获取输入时,忘了加取地址符&
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯