我仍然是C編程的初學者,我需要一點幫助,爲我的C編程類 編寫代碼。 提示符爲: 該程序的輸入是位於名爲textfile94的文件中的浮點數據的二維數組。輸入數組將包含3行數據,每行包含5列數據,每行包含 行。如何創建二維數組
- 我希望你使用動態內存分配的雙下標方法。
- 使用malloc創建一個包含指針的數組。
- 該數組的每個元素指向另一個數組,即數據行 。
- 在循環中使用malloc來創建行。
- 然後,您可以使用兩個下標運算符[r] [c]來獲取您的數據 以執行程序調用的求和和求平均值。
該程序調用硬編碼的二維數組的高度和寬度,事先已知(3x5,實際)。而不是在代碼中寫入字面數字,我希望您創建一個全局常量變量來保存這些維度,並在您的代碼中使用這些維度。
這裏是我到目前爲止(我不知道,如果它的正確):
#include <stdio.h>
#include <stdlib.h>
#define int rows = 3;
#define int columns = 5;
float array[rows][columns];
int main(int argc, char* argv[]){
FILE* fin;
float x;
int i,j;
int* array;
fin = fopen("textfile94", "r");
fscanf("%f", &x);
array = (int*) malloc(rows*sizeof(int*));
for(i=0;i<rows;i++){
for(j=0;j<columns;j++)
array[i]=(int*) malloc(columns* sizeof(int));
}
}
printf("The Average values for the three rows are:%f",array[rows]);
printf("The Average values for the five columns are:%f", array[columns]);
return 0;
}
你不需要分別分配每個整數。你可以一次分配它們,例如:'int * array; array = malloc(x * sizeof(int));',然後使用'array [i]'來訪問每個位置。 – jweyrich
如何在malloc之前不需要int *?我不是用它作爲指針嗎?這也是我的老師對這個問題的看法:我希望你使用動態內存分配的雙下標方法。使用malloc創建一個包含指針的數組。該數組的每個元素指向另一個數組,即數據行。在循環中使用malloc來創建行。然後,您可以使用兩個下標運算符[r] [c]來獲取您的數據以進行程序調用的求和和求平均值。 – Cka91405
請閱讀[c-Faq鏈接](http:// c- faq.com/~scs/cclass/int/sx9b.html)我之前在我的評論中提供了你,它詳細解釋了這一點。 –