为什么此float数组无法正确打印?

时间:2020-04-01 20:39:54

标签: c if-statement syntax floating-point

我已经测试了多种解决此错误的方法,但是找不到解决方案。在应该查找所有(4.6,9.7)循环之外的数字的位置添加了一条注释。语法可能有错误吗?

int main()
{
    int i,n;

    float pom=0;
    printf("vnesi broj na elementi na nizata\n");

    scanf("%d",&n);
        float arr1[n], arr2[n];
    printf("vnesi elementi \n");
    for(i=0;i<n;i++)
    {
        scanf("%f",&arr1[i]);

    }

    pom =((arr1[0]+arr1[n-1])/2);

    int k = 0;

    for(i=0;i<n;i++)
    {

        if(arr1[i]<=4.6 && arr1[i]>=9.7) // the problem lies here
        {
            arr2[k]=arr1[i];
            k++;
            printf("%f", arr1[i]);
        }
    }

    printf("\n elementi od prva niza: \n");
    for(i=0; i<n; i++)
    {
        printf("%.2f ", arr1[i]);
    }

    printf("\n\n elementi od vtora niza: \n");


    for(i=0; i<k; i++)
    {
        printf("%f", arr2[i]); // is not printing the array

    }

}

1 个答案:

答案 0 :(得分:4)

if(arr1 [i] <= 4.6 && arr1 [i]> = 9.7)//问题出在这里

完全正确。一个数字如何既小于或等于4.6 又大于或等于9.7?它可以小于或等于4.6 ,或者大于或等于9.7。所以你的情况总是假的。

解决方案:

&&替换为||