程序运行结果:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/b7fd5266d016092486a932ecd80735fae7cd34bc?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
制作流程:
输入分数
找到最高分和最低分
去掉最高分和最低分
求出平均分
平均分派排名
按要求输出信息
完整源码如下:
#include <stdio.h>
#include <stdlib.h>
int score[100][100]; //最大选手和评委数
float scoreLast[100]; //最后得分
float sortTemp[100];
int MaxScore[100];
int MinScore[100];
int main()
{
int n = 0;
int m = 0;
int i = 0;
int j = 0;
int k = 0;
//1.输入分数
scanf("%d%d", &n, &m);
for (i = 0; i < n; i++)
{
printf("%d: ", i+1);
for (j = 0; j < m; j++)
{
scanf("%d", &score[i][j]);
}
}
//2.找到最高分和最低分
for (i = 0; i < n; i++)
{
MaxScore[i] = MinScore[i] = 0;
for (j = 0; j < m; j++)
{
if (score[i][j]>MaxScore[i])
MaxScore[i] = score[i][j];
if (score[i][j] < MinScore[i])
MinScore[i] = score[i][j];
}
}
printf("C/C++学习乐园:");
//3.去掉最高分和最低分-->747821062
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (score[i][j] == MaxScore[i] || score[i][j] == MinScore[i])
{
for (k = j; k < m; k++)
{
score[i][k] = score[i][k + 1];
}
}
}
}
//求出平均分
for (i = 0; i < n; i++)
{
scoreLast[i] = 0;
for (j = 0; j < m-2; j++)
{
scoreLast[i] += score[i][j];
}
scoreLast[i] /= (float)(m-2);
sortTemp[i] = scoreLast[i];
}
for (i = 0; i < n; i++)
{
printf("%d\t%0.2f\n", i + 1, scoreLast[i]);
}
//排名
for (i = 0; i < n; i++)
{
for (j = 0; j < n - i-1; j++)
{
if (sortTemp[j]<sortTemp[j + 1])
{
float temp = sortTemp[j];
sortTemp[j] = sortTemp[j+1];
sortTemp[j + 1] = temp;
}
}
}
for (i = 0; i < n; i++)
{
int sortPos = 0;
for (j = 0; j < n; j++)
{
if (scoreLast[j] == sortTemp[i])
sortPos = j;
}
printf("%d\t%d\t%0.2f\n", i + 1,sortPos+1,sortTemp[i]);
}
system("pause");
return 0;
}
追问输出样例好像不对啊
追答格式嘛?
基本流程就是这样,可能数据输入有问题