【问题标题】:Why is this float array not printed properly?为什么这个浮点数组没有正确打印?
【发布时间】:2020-07-13 17:38:33
【问题描述】:

我已经测试了各种方法来修复此错误,但找不到解决方案。添加了一条注释,它应该找出所有在 (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

    }

}

【问题讨论】:

  • &amp;&amp; 更改为 ||

标签: c if-statement syntax floating-point


【解决方案1】:

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

没错。一个数字怎么可能既小于或等于 4.6 大于或等于 9.7?!它可以小于或等于 4.6 大于或等于 9.7。所以你的条件总是假的。

解决方案:

&amp;&amp; 替换为 ||

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多