C 二维数组中的值

C 二维数组中的值,c,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,

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");
}
#包括
#包括
void printary(float myArray[5][3],float v);
int main()
{
浮点q,a,d,v,数组[5][3];
int行、列;
printf(“输入:”);
scanf(“%f”、&v);
用于(行=0;行<5;行++)
{
对于(列=0;列<3;列++)
{
printf(“输入%d、%d”、行、列的值);
scanf(“%d”&数组[行][列];
}
}
打印阵列(阵列,v);
}
void printary(float myArray[5][3],float v)
{
int i,行,列;
浮动q,a;
用于(行=0;行<5;行++)
{
对于(列=0;列<3;列++)
{
a=(3.14*(myArray[行][列]*myArray[行][列])/4;
q=a*v;
printf(“直径:%f流速:%f\n”,myArray[行][列],q);
}
}
printf(“\n”);
}
您正在使用
%d
扫描到
float
,这是未定义的行为。您需要改用
%f
。此外,您应该检查
scanf
的返回值,以确保它已成功扫描某些内容
scanf
返回成功扫描的项目数,因此在您的情况下,它应该返回1。如果没有合适的输入,它将返回0,或者如果读取输入时出错,它将返回
EOF

例如,您可以:

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

一个问题是将int读入浮点。您为读取数组的scanf使用了错误的格式说明符。谢谢,真的帮了大忙。
if (scanf("%f", &array[rows][columns]) != 1)
{
    fprintf(stderr, "Unable to read input\n");
    return 1;
}