C语言数组编程
发布网友
发布时间:2022-05-10 16:32
我来回答
共1个回答
热心网友
时间:2023-07-21 16:53
程序运行结果:
制作流程:
输入分数
找到最高分和最低分
去掉最高分和最低分
求出平均分
平均分派排名
按要求输出信息
完整源码如下:
#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;
}