二维数组中的值

时间:2016-04-04 03:29:36

标签: c

myArray和q打印0我无法弄清楚原因。

printf("Diameter: %f Flow rate: %f\n",myArray[rows][columns],q);

程序计算流速,我正在尝试打印一个包含直径和流速值的表格。

#include <stdio.h>
#include <stdlib.h>

void printArray(float myArray[5][3], float v);

int main()
{
    float q, a, d, v, array[5][3];
    int rows, columns;

    printf("Enter: ");
    scanf("%f",&v);

    for (rows = 0; rows < 5; rows++ )
    {
        for ( columns = 0; columns < 3; columns++)
        {
            printf("Enter value for %d, %d",rows,columns);
            scanf("%d",&array[rows][columns]);
        }
    }
    printArray(array, v);

}

void printArray(float myArray[5][3], float v)
{
    int i, rows, columns;
    float q, a;

    for (rows = 0; rows < 5; rows++ )
    {
        for ( columns = 0; columns < 3; columns++)
        {
            a=(3.14*(myArray[rows][columns]*myArray[rows][columns]))/4;
            q=a*v;
            printf("Diameter: %f Flow rate: %f\n",myArray[rows][columns],q);
        }
    }
    printf("\n");
}

1 个答案:

答案 0 :(得分:2)

%d

您正在使用float扫描%f,这是未定义的行为。您需要使用scanf代替。此外,您应该检查scanf的返回值,以确保它已成功扫描了某些内容。 EOF返回成功扫描的项目数,因此在您的情况下它应该返回1.如果没有合适的输入,它将返回0,或者如果读取输入时出错,它将返回{{1 }}

例如,您可以:

if (scanf("%f", &array[rows][columns]) != 1)
{
    fprintf(stderr, "Unable to read input\n");
    return 1;
}