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");
}
答案 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;
}