C 二维数组中的值
myArray和q打印0,我不知道为什么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,
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;
}