七个评委打分,去掉一个最高分,去掉一个最低分,最终得平均分。怎么会有问题啊
#include<stdio.h>int main() {
int a,b,c,d,i;
double sum,max,min,aver;
c=1;
d=1;
for(i=1; i<=7; i++) {
scanf("%f",&a);
sum+=a;
}
for(b=1; b<=7; b++) {
if(a>a)
c=b;
}
max=a;
for(d=1; d<=7; d++) {
if(a>a)
d=b;
}
min=a;
aver=(sum-max-min)/5;
printf("%.3f",&aver);
return 0;
} #include<stdio.h>
int main() {
int a,b,c,d,i;
double sum,max,min,aver;
c=1;
d=1;
for(i=1; i<=7; i++) {
scanf("%d",&a); //应该是%d,不是%f
sum+=a;
}
for(b=1; b<=7; b++) {
if(a>a)
c=b;
}
max=a;
for(d=1; d<=7; d++) {
if(a<a) //求最小值,就应该是小于号
d=b;
}
min=a;
aver=(sum-max-min)/5;
printf("%.3f",aver); //printf 中不需要带 &
return 0;
} tommyyu 发表于 2022-11-11 15:18
好像还是有点问题,把1 2 3 4 5 6 7这几个输入进去平均值应该是5但是程序输出答案是5.4。是我写的程序有问题吗 本帖最后由 jackz007 于 2022-11-11 15:52 编辑
int a,b,c,d,i;
. . . . . .
for(i=1; i<=7; i++) {
scanf("%f",&a) ; // 错误 1:用 "%f" 读取 int,错误2:当 i = 7 时,a 会下标越界
后面所有涉及 a 的循环都有同样的问题,解决方法,for 循环不要这样写 for(i = 1 ; i <= 7 ; i ++),要这样写 for(i = 0 ; i < 7 ; i ++) 。
#include <stdio.h>
int main(void)
{
int a , i , sum , min , max ;
double aver ;
for(min = max = i = 0 ; i < 7 ; i ++) {
scanf("%d" , & a) ;
if(a > a) max = i ;
else if(a < a) min = i ;
sum += a ;
}
aver = (sum - a - a) / 5.0 ;
printf("%.2lf\n" , aver) ;
}
编译运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
95 93 91 85 92 87 89
90.40
D:\\C> 2207122216 发表于 2022-11-11 15:28
好像还是有点问题,把1 2 3 4 5 6 7这几个输入进去平均值应该是5但是程序输出答案是5.4。是我写的程序有 ...
{:10_282:}刚才还有两个错误没有找到#include<stdio.h>
int main() {
int a,b,c,d,i;
double sum,max,min,aver;
c=1;
d=1;
for(i=1; i<=7; i++) {
scanf("%d",&a); //应该是%d,不是%f
sum+=a;
}
for(b=1; b<=7; b++) {
if(a>a)
c=b;
}
max=a; //这一行也有问题
for(b=1; b<=7; b++) { //这一行也有问题
if(a<a) //求最小值,就应该是小于号
d=b;
}
min=a;
aver=(sum-max-min)/5;
printf("%.3f",aver); //printf 中不需要带 &
return 0;
}
页:
[1]