2012-10-29 71 views
0

我試圖使用for循環將浮點值賦值爲二維數組。已被宣佈爲float num[4][7];ANSI C - 二維數組

這是我到目前爲止的代碼:

float num[4][7]; 
int x; 
for(x=0;x<=3;x++) { 
    printf("Enter number: %d",x); 
    scanf("%f",cad[x][x]); 
} 
return 0; 

但好像它不能正常工作,它沒有做什麼,我之前解釋..

任何幫助將不勝感激, 謝謝!

+0

編譯與'-Wall'代碼(顯示所有警告);編譯器通常會遇到這樣的錯誤。 – nibot

+0

什麼是CAD?當你想讀入'num'時,你爲什麼要讀'cad'? – AnT

+0

仍然懷疑爲什麼使用'[x] [x]'? –

回答

4
scanf("%f",cad[x][x]); 

使用代替:

scanf("%f", &cad[x][x]); 

scanf的參數爲%f轉換規格必須是一個指針float。您正在使用類型爲float的參數。

1

三個問題,第一,正如已經提到的,使用scanf()當你需要給它一個指針,它是怎麼回事更新:

  // v-----added that 
    scanf("%f",&cad[x][x]); 

第二你初始化所謂的「民」的數組,但你填充一個名爲「cad」的數組。所以改變其中之一,名稱必須匹配。

最後,你的循環只會填充共28個元素的4:

//This 
float num[4][7]; 
for(x=0;x<=3;x++) { 
    scanf("%f",&num[x][x]); 

//Will give you: 
[%f][ ][ ][ ] 
[ ][%f][ ][ ] 
[ ][ ][%f][ ] 
[ ][ ][ ][%f] 
[ ][ ][ ][ ] 
[ ][ ][ ][ ] 
[ ][ ][ ][ ] 

顯然,在這個例子中%f的由任何取代你在輸入要填充你需要有全陣列式兩個for循環,x<=3(用於列)和y<=6(對於行)

float num[4][7]; 
int x; 
int y; 
for(x=0;x<=3;x++) { 
    for(y=0; y<=6; y++) { 
     printf("Enter number: [%d][%d]",x,y); 
     scanf("%f",num[x][y]); 
    } 
}