5 条题解
-
2
#include <bits/stdc++.h> using namespace std; int n, a[1005], ans, maxn = -1, minn = 99999; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; maxn = max(a[i], maxn); minn = min(a[i], minn); ans += a[i]; } cout << fixed << setprecision(2) << (ans - maxn - minn) * 1.0 / (n * 1.0 - 2); return 0; }
简简单单
-
1
这道题就硬算,丝毫不怂。定义一个二维数组 student[100][20] ,放每个同学的编号和分数。再用三个 for 循环,对二维数组的每一层进行排序,再用两个 for 循环进行除最高分和最低分的平均分,放进数组 score[20] 。再用一个 for 循环进行比较大小。
AC代码
#include<stdio.h> int main() { int n,m; double count=0; int mark=0; double student[100][20]; double score[20]; scanf("%d %d",&n,&m); for (int i=0;i<n;i++) { for(int j=0;j<m;j++) scanf("%lf",&student[i][j]); } for(int i=0;i<n;i++)//开始排序 { for(int j=0;j<m;j++) { for(int k=j+1;k<m;k++) { if(student[i][k]<student[i][j]) { double temp; temp=student[i][k]; student[i][k]=student[i][j]; student[i][j]=temp; } } } } for(int i=0;i<n;i++)//开始计算平均分 { for(int j=1;j<m-1;j++) { count =count+student[i][j]; } score[mark]=(double)(count/(m-2)); mark+=1; count=0; } double max=score[0];//开始求最大值 for(int i;i<mark;i++) { if(max<score[i]) max=score[i]; } printf("%.2lf\n",max); return 0; }
- 1
信息
- ID
- 168
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 3
- 标签
- 递交数
- 128
- 已通过
- 70
- 上传者