2016-04-04 52 views
-1

由於某種原因printArray崩潰了程序。它應該用2個數組中的15個用戶定義的直徑值計算流量,然後生成一個表格。程序在printArray上崩潰

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

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[5][3], v); 

} 

void printArray(float myArray[][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

這是不符合標準的C語言代碼。首次使用時,printArray未聲明。編譯器警告的存在是有原因的,而不僅僅是打印一些奇特的文本。 – Olaf

回答

1
printArray(array[5][3], v); 

array[5][3]裝置第6行和第4列中的元素。這裏有兩個明顯的問題:

  • 該數組沒有6行和4列。
  • 該函數期望您傳遞(指向)整個數組,而不僅僅是它的一個元素。

將其更改爲:

printArray(array, v); 
+0

好的,謝謝你修復了崩潰。現在'printf(「Diameter:%f Flow rate:%f \ n」,myArray [rows] [columns],q);'給每個循環賦0。我知道你說數組沒有6行和4列,但我不知道如何解決這個問題。 – stc

+0

@UnEntitled用於輸入數組值的'scanf'是錯誤的,您應該使用'%f'就像您要獲得'v'一樣。 – yano