8716555qwe @ 2022-10-14 20:50:36
我是一个小萌新,学c一个月,代码有点乱,请大家多多包涵
#include <stdio.h>
int main()
{
double n,i,max=0,min=12,x=0,a,result;//n是评委数,a是分数,x是次数,result是结果。
scanf("%lf",&n);
for(i=1;i<=n;i++){
scanf("%lf",&a);
if(a>max){
max=a;
a=max;
}
else {
if(a<min){
min=a;
a=min;
}
}
x=x+1;
result=result+a;
}
printf("%.2lf",(result-max-min)/(x-2));
return 0;
}
by 8716555qwe @ 2022-10-14 20:53:20
当我输入 3 1 2 3 时 我的min还是初始值12
by VitrelosTia @ 2022-10-14 20:54:55
@8716555qwe 我不是很理解您有什么问题
by CooooldWind_ @ 2022-10-14 21:24:22
很明显我不会C 但我会C++
#include <bits/stdc++.h>
using namespace std;
int p[1010],n;
int main()
{
cin >> n;
for(int i = 0;i < n;i++) cin >> p[i];
sort(p,p + n);
float a = 0;
for(int i = 1;i < n - 1;i++) a = a + float(p[i]);
cout << setprecision(3) << float(a / (n - 2));
return 0;
}
原理:模拟。
p数组是存分数的。
sort是排序整个p数组(不知道C有没有)。
第一个for输入,第二个是自动省略掉了最小和最大的进行累加。
至于cin与cout,和scanf与printf等价。
by 8716555qwe @ 2022-10-17 19:44:41
@VT_SODC3DC3BSLF 抱歉,这么晚才回复。再说这个题吧,可能我没表达清楚吧。其实我想说的是,当我依次输入3 1 2 3时,我的max的数值会从1变为2再变成3,而我的min的数值将仍是初始值12。而最后(result-max-min)/(x-2)的数值将会是(6-3-12)/1=-9.00,这是不对的。 也就是说当我按从小到大的顺序输入时,我得到的是错误的答案。
by 8716555qwe @ 2022-10-17 19:45:34
@ColdWind6666 谢谢