我编写了这个程序,它应该读取数字,计算中间值并打印最接近的数字。
#include<stdio.h>
int main(){
const int num = 6;
int i, i2 = num - 1;
float numeros[num], dist[num];
float media = 0;
for (i = num - 1; i >= 0; i--){
printf("Digite um numero\n");
scanf("%f", &numeros[i]);
media = media + numeros[i];
}
media = media / num;
for (i = num - 1; i >= 0; i--){
if (numeros[i] <= media){
dist[i] = media - numeros[i];
}
else{
dist[i] = numeros[i] - media;
}
}
for (i = num - 2; i >= 0; i--){
if (dist[i] < dist[i + 1]){
i2 = i;
}
}
printf("O numero mais proximo da media '%1.0f' eh '%1.0f'", media, numeros[i2]);
printf("\n\nPressione 'Enter' para sair");
fflush(stdin);
getchar();
return 0;
}
但有时我会得到类似的东西
input 50 50 50 500 24 20 (ok)
media 116 (ok)
prints 24 (?)
最佳答案
-
Int main()
应该是int main(void)
- 请勿使用
fflush(stdin)
,这是未定义的行为。 - 条件
dist[i] < dist[i + 1]
是错的。应该是dist[i] < dist[i2]
因为最佳元素的索引应该存储在i2
中并且该元素应该与其他元素进行比较。
关于在这个简单的程序中看不到逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063485/