七个评委打分,去掉一个最高分,去掉一个最低分,最终得平均分,说代码逻辑有问题
Max 和min 的初始值都应该设置成 a 然后遍历数组,更新max 和 min#include<stdio.h>
int main() {
int a,b,c,d,i;
double sum,max,min;
c=1;
d=1;
for(i=0; i<=6; i++) {
scanf("%d",&a);
sum+=a;
}
for(b=0; b<=6; b++) {
if(a>a)
c=b;
}
max=a;
for(b=0; b<=6; b++) {
if(a<a)
d=b;
}
min=a;
printf("%.3f",(sum-max-min)/5);
return 0;
} 你的代码有错误
1, scanf("%d",&a);--> scanf("%d",&a);
2,sum+=a;--> sum+=a;
3,if(a>a)--> if(a>a)
4, if(a<a) -->if(a<a)
楼主的代码逻辑不是很清楚,可以精减很多,如下
int main() {
int a, i;
double sum, max = 0, min = 999;
for (i = 0; i < 7; i++) {
scanf("%d", &a);
sum += a;
}
for (i = 0; i < 7; i++) {
if (a >= max)
max = a;
if (a <= min)
min = a;
}
printf("%.3f", (sum - max - min) / 5);
return 0;
} #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int scores = { 0 };
float sum = 0.;
for (int n = 0; n < 7; ++n) {
if (scanf("%d", &scores)) 0;
}
for (int i = 0; i < 6; ++i) {
for (int j = i + 1, temp; j < 7; ++j) {
if (scores < scores) {
temp = scores;
scores = scores;
scores = temp;
}
}
}
for (int i = 1; i < 6; ++i) {
sum += scores;
}
printf("%.3f", sum / 5);
return 0;
}
页:
[1]