C語言問題二維陣列,C語言題目 對二維陣列的正確說明是

時間 2022-09-24 10:05:57

1樓:匿名使用者

#include

#include

//這裡假設1行最多100個字元

#define maxline 100

int main()

;//開啟檔案,假設在d盤根目錄下

file *fp;

fp=fopen("d:\\icc1.q7","r");

if(fp==null)

char line[maxline]=; //接收檔案資料,以行為單位

int segment=0; //定義段落,一共有3個int i; //迴圈用

int j=0; //result行數

while( fgets(line,maxline,fp)!=null )

if(line[0]!='0'&& line[0]!='1') //如果不為字元0或1,跳出

continue;

for(i=0;i

}j++;

}fclose(fp);

//檢視結果資料

for(i=0;i<3;i++)

printf("\n");

}return 0;}

2樓:匿名使用者

fsanf可以實現你的要求

c語言題目 對二維陣列的正確說明是:

3樓:匿名使用者

c是正確的。

二維陣列初始化的形式為:

資料型別 陣列名[整常量表示式][ 整常量表示式]=;

在中給出各陣列元素的初值,各初值之間用逗號分開。把中的初值依次賦給各陣列元素。

有如下幾種初始化方式:

⑴ 分行進行初始化

int a[2][3]=,};

在內部再用把各行分開,第一對中的初值1,2,3是0行的3個元素的初值。第二對中的初值4,5,6是1行的3個元素的初值。相當於執行如下語句:

int a[2][3];

a[0][0]=1;a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6;

注意,初始化的資料個數不能超過陣列元素的個數,否則出錯。

⑵ 不分行的初始化

int a[2][3]=;

把中的資料依次賦給a陣列各元素(按行賦值)。即a[0][0]=1; a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6;

⑶ 為部分陣列元素初始化

static int a[2][3]=,};

第一行只有2個初值,按順序分別賦給a[0][0]和a[0][1];第二行的初值4賦給a[1][0]。由於儲存型別是static,故其它陣列元素的初值為0。注:

某些c語言系統(如:turbo c)中,儲存型別不是static的變數或陣列的初值也是0。

static int a[2][3]=;

只有2個初值,即a[0][0]=1,a[0][1]=2,其餘陣列元素的初值均為0。

⑷ 可以省略第一維的定義,但不能省略第二維的定義。系統根據初始化的資料個數和第2維的長度可以確定第一維的長度。

int a[ ][3]=;

a陣列的第一維的定義被省略,初始化資料共6個,第二維的長度為3,即每行3個數,所以a陣列的第一維是2。

一般,省略第一維的定義時,第一維的大小按如下規則確定:

初值個數能被第二維整除,所得的商就是第一維的大小;若不能整除,則第一維的大小為商再加1。例如,int a[ ][3]=;等價於:int a[2][3]=;

若分行初始化,也可以省略第一維的定義。下列的陣列定義中有兩對,已經表示a陣列有兩行。

static int a[ ][3]=,};

來自

4樓:

c是對的,可以編譯通過。

d顯然格式就不對,排除。

而abc呢,c語言二維陣列初始化時,第一維可以不指定數字,但第二維必須指定數字。語言規則。沒什麼解釋的。可以自己揣摩一下為什麼是這個規則。

c語言問題:c語言中二維陣列在記憶體中怎樣儲存?

5樓:匿名使用者

嚴格意義上說不存在copy二維bai陣列,只是陣列裡的每du個元素是乙個一zhi維陣列,而記憶體是一段連續dao的空間,根據你申請乙個變數的順序按位址從低到高排,所以二維陣列不可能像乙個矩陣那樣在記憶體中排列,這就涉及到它是按行依次往下排,還是按列往下排,而在c++中是按行,既 int a[2][2]

a[0][0]

a[0][1]

a[1][0]

a[1][1]

6樓:匿名使用者

嚴格意義上說不存在二維陣列,只是陣列裡的每個元素是乙個一維陣列,而記憶體是

專一段連續的空間屬,根據你申請乙個變數的順序按位址從低到高排,所以二維陣列不可能像乙個矩陣那樣在記憶體中排列,這就涉及到它是按行依次往下排,還是按列往下排,而在c++中是按行,既 int a[2][2]

a[0][0]

a[0][1]

a[1][0]

a[1][1]

7樓:匿名使用者

在c/c++中多維數bai組都是以行的形式連du續地分布在記憶體中的,zhi來個例子dao:

int a[2][2];

則其在記憶體中內

的表現方式為:

a[0][0], 低位址

容a[0][1],

a[1][0],

a[1][1],高位址

8樓:匿名使用者

指向一維陣列的指標陣列。

c語言問題。我想宣告乙個超大的二維陣列——a[1000][1000],如何實現?

9樓:小羊裝狼

直接定義 int a[1000][1000];變數存放在棧裡,這個要看編譯的時候棧的大小。

如果棧空間不夠大,可以通過new實現。

int **a = new int *[1000];

for(int i=0;i<1000;i++)

10樓:南瓜豬的的的

宣告跟大小沒有關係

直接 extern int a[1000][1000];

定義的話不要把這個陣列放到{}裡面

例如int a[1000][1000];

int main()

c語言二維陣列賦值問題

11樓:匿名使用者

宣告的時候賦值是對整個陣列的賦值,這是編譯器特性

而宣告以後再對a[5][3]賦值實際就是在對第六行第四列的單個元素進行賦值,先不說這個越界,對單個元素進行陣列資料的賦值本身就是乙個錯誤

所以,如果你要在宣告以後再賦值的話,那麼必須乙個元素乙個元素的賦值

12樓:匿名使用者

首先,除非在變數宣告時,a[5][3]是指明陣列名為a,大小為5x3,此時可以初始化,給陣列整體賦值;

在程式中,單獨使用a[5][3]是指數組a中一元素,但因陣列a大小為5x3,所以下標最大元素為a[4][2],因此編譯報錯;

希望上述對您有幫助。

13樓:匿名使用者

a[5][3]= 其實就是在給最後乙個賦值

並不是陣列的初始位址

14樓:匿名使用者

陣列不能被直接這樣賦值的,初始化可以,賦值只能通過指標或者單個元素賦值。

c語言問題。定義乙個二維陣列

15樓:ok洛陽水席

#include

int main()

sum=0;

for(i=0;i<5;i++)

return 0;

}樓主基本沒有大錯誤,只是不夠仔細,用來儲存特定值的變數使用前一定要初始化,如本例中的最大值,最小值,下標,都是必須初始化的!

整型與整型運算會得到整型,1/2=0,5/4=1;系統會捨去小數部分。只要將其中乙個提公升至浮點型即可,如1.0/2,5/4.

0,如果是兩個整型變數,可以寫成(float)a/b,即可使得得到浮點型結果!

2013 5 25 7:05

1l耗時 4min

16樓:匿名使用者

第七行scanf("%d",&arr[5][6]);這句就有問題了,首先應改為scanf("%d",&arr[i][j]);還有其他錯誤,修改後:

#include

int main()

max=arr[0][0];

for(i=0;i<5;i++)

for(j=0;j<6;j++)

if(maxarr[i][j])

else ;

for(i=0;i<5;i++)

} }

return 0;}

17樓:匿名使用者

scanf("%d",&arr[5][6]);

應該改為:

scanf("%d",&arr[i][j]);

c語言關於定義二維陣列的問題

18樓:焮欣

首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始位址,第二維就是某組資料中的某個值.其次,你要知道a[4]所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度(元素總個數/4,如果不能整除,則長度加1,此時還應該有幾個沒有賦初值的陣列元素).

而a[3]的意思從表面上看可以成立,但問題是編譯器不能直接識別其第二維的確切長度(你可以考慮,如果總的初值個數為2時,可以認為a的第二維長度為1,也可以是2,.......),這樣就會產生錯誤.所以,可以a[4]=這樣定義,而不能定義a[3]=。

對於你補充的問題,其實我已經講了.因為賦初值是5個元素,所以5/4=1,但除不盡,所以要加1,即實際陣列a實質上定義為a[2][4],其內元素為:

1 2 3 4

5 0 0 0 (後面的三個0是系統預設值)希望對你有所幫助.^-^

19樓:匿名使用者

首先 假如定義乙個一維陣列 int ary;

缺少了一維陣列的長度 系統無法按大小分配空間;

但假如int ary = ;

就可以根據初始化的元素個數來把ary定義成相當於ary[2];

這應該能懂

再次c語言中沒有多維陣列的概念 我們平常說的二維陣列其實是「陣列的陣列」 c語言對多維陣列的定義也是定義成

"陣列的陣列的陣列的..."

所以 當定義二維陣列int a[4] = ;

其實是 「定義了兩個以[4]為長度的陣列」(這說法可能不準確)所以在定義二維陣列並初始化時 需要指明第二維的長度 好讓編譯器根據初始化元素的個數來確定陣列的大小

文字表述欠缺專業 但 意思是這樣 希望能明白呵呵

20樓:佳樂比海

主要是分配記憶體的問題.

a[i][j]是陣列的陣列,意思是定義i個元素的陣列,每個元素都是乙個含有j個元素的陣列.

a[4]是定義了n個含有4個元素的陣列,如:

a[4]=,,}是定義了3個"含有4個元素的陣列"的陣列.雖然3個自定義的,但是是確定的數字。程式可以分配記憶體.

而a[3]是定定義了3個"含有n個元素的陣列"的陣列.如:

a[3]=},由於n的值是不確定的(如上有3個的,2個的),所以程式無法為這個陣列分配記憶體空間.

c語言二維陣列指標,C語言二維陣列指標

問題的關鍵是主函式中的指標p的值被修改了,因為 在f r 中,r p 在 f 函式中,s t 相當與 p t 而 t k 所以 p k.那麼主函式中,p k r k。 八千漢字 include int k 7 void f int s int main 三昧離火 b答案是正確的,因為二維陣列名相當於...

c語言排列二維陣列,c語言 排列二維陣列

這個程式演算法很好,但是你沒有想一下,if j 3 這段中j 3是不夠的,因為它有可能與a 3 0 比較,因為a 3 0 未知而出錯。另外,你第乙個for語句中標點錯了。還有乙個錯誤是你查不出來的原因,大括號少了乙個,自己仔細查一下,也可以使用ue32這個程式查一下括號匹配。建議你使用這個程式來寫源...

c語言中的二維陣列問題,c語言問題 c語言中二維陣列在記憶體中怎樣儲存?

目的是將緩衝區中輸入流中資料清除,可以使用 fflush stdin 清除資料 gets函式會把前面在scanf函式的輸入結束符即回車當做第乙個字串資料的結束符接收,因此不加gets s 就會導致資料個數少乙個。當然使用gets s 會提前接收了回車,因此也是起到同樣的作用。你程式函式中有個錯誤,p...

c語言動態二維指標陣列,c語言動態二維指標陣列

對你的問題有點不懂,你是想說元素都是char型變數,如果是,可以這麼做 char array new char m n m和n的值都可以隨意改變 不知道是不是你想要的 維位址,指向二維陣列第0行位址 0開始計數 第1列 0開始計數 優先順序 所以表示式實際是 p 1 乘以 p 1 1 p指向值為 2...

c語言,指標二維陣列

n是個陣列,已經定義成陣列常量了,陣列的元素型別是指標,元素指標的對應的物件型別是字串,即為字元指標。因為n是陣列名,n不能再賦值 n 等價於返回 n然後n n 1 給n賦值報錯 include int main for i 0 i 3 i system pause return 0 雖然有人回答了...