无法在这个简单的程序中看到逻辑问题

时间:2016-01-28 13:56:23

标签: c

我写了这个程序,它应该读取数字,计算中间值并打印最接近的数字。

#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;
}

但有时我会得到像

这样的东西
  

输入50 50 50 500 24 20(ok)

     

媒体116(ok)

     

打印24(?)

1 个答案:

答案 0 :(得分:5)

  • Int main()应为int main(void)
  • 请勿使用fflush(stdin),这是未定义的行为。
  • 条件dist[i] < dist[i + 1]错误。它应该是dist[i] < dist[i2],因为最佳元素的索引应该存储在i2中,并且元素应该与其他元素进行比较。