c語言的陣列問題,若有定義inta以下選項

2021-03-03 21:42:52 字數 4985 閱讀 2736

1樓:匿名使用者

選d。一個二維陣列可以被認為是一個帶有 x 行和 y 列的**。下面是一個二維陣列,包含 2 行和 3列:

因此,陣列中的每個元素是使用形式為 a[ i , j ] 的元素名稱來標識的,其中 a 是陣列名稱,i 和 j 是唯一標識 a 中每個元素的下標。i最大值為1,j最大值為2,超出此範圍則表示錯誤。

2樓:孤獨的蠍子

d 因為1>2為假,所以表示式為0 ; 其次!1也就是非真,即為假,所以a[1>2][!1]等價於a[0][0]

3樓:藍人

d,陣列的有效範圍是a[0][0] - a[1][2]

a,b,c都超過範圍了。

4樓:匿名使用者

定義的陣列引用時那個數下標減1

c語言若有下列說明和語句:int a[4][5], (*p)[5]; p = a; 則對a陣列元素

5樓:匿名使用者

如果定義int (*p)[n];p1=a;p1++後,p指向a[1][0];

則p+j將指向a[0]陣列中的元素a[0][j]。

由於a[0]、a[1]┅a[m-1]等各個行陣列依次連續儲存,則對於a陣列中的任一元素a[i][j],指標的一般形式如下:

p+i*n+j,相應的如果用p來表示,則為*(p+i)+j;

元素a[i][j]相應的指標表示為:

*( p+i*n+j) ,相應的如果用p1來表示,則為*(*(p+i)+j)。

推出以下的等價關係:

a+i == p+i;

a[i] == p[i] == *(a+i) == *(p+i);

a[i][j] == p[i][j] == *(a[i]+j) == *(p[i]+j) == *(*(a+i)+j) == *(*(p+i)+j)。

6樓:鍵盤未找到

a.表示&a[1].

b.a[3]

c.&a[1][3]

d.a[0][2]

7樓:匿名使用者

首先呢,a是二維陣列,不解釋。

然後呢,p是一個指標,什麼樣的指標呢,就是指向一維陣列的指標,而且這個一維陣列的元素個數呢是5.

然後呢,p=a;就是把p指向a陣列。

分析選項:

a p+1 .因為p是一維陣列指標,所以p每+1就是+1行。錯誤。

b *(p+3)是指第4行的首地址,訪問不到元素。需要再*c *(p+1) + 3 對地址+3 沒啦意義d *(*p+2) *p是第0行首地址 +2 呢就是第二個元素的地址,*取資料咯。

8樓:一方通通

本題中定義了一個二維陣列c和一個陣列指標p並初始化讓它指向c,顯然此時p中的各元素為地址,

a中p+1,此時的1代表的長度是整個二維陣列c的長度,p+1將讓p指向c陣列後面的元素,故不能引用c陣列中的成員,故選項a錯誤;同理,選項b和選項c都不正確,

d中p[0]+2代表的是第一行第三個元素的地址,而*(p[0]+2)將代表第一行第三個元素的值。

若有說明int a[3][4] 則對a陣列元素的正確引用為

9樓:達豐

二維陣列引用基本格式:陣列名[行標][列標]。

行標和列標都是從0開始,最大下標為行(列)標長度-1。

比如:a[0][1],表示第一行第二列的陣列元素。

二維陣列:

由行和列組成的二維**形式的元素,其實也就是矩陣。

基本格式:

資料型別 陣列名[行長度][列長度];

行長度為二維陣列行的個數,必須為常量表示式,不能為變數。

列長度為二維陣列每一行列的個數,必須為常量表示式,不能為變數。

二維陣列包含的元素的個數是:行長度*列長度,其中每個元素佔據的位元組數是sizeof(資料型別),故二維陣列佔據的內在位元組數是 行長度*列長度*sizeof(資料型別)。

舉例:定義一個二維陣列a,包含4行4列的元素,每個元素均為int型別int a[4][4];

10樓:韓信靳婉

若有說明int

a[3][4];則對a陣列元素的正確引用是a[1][3]。

a[2][4]越界了

最後一個元素a[2][3]

引用時下標從0開始

第一行a[0][0]

a[0][1]...

第三行a[2][0]

a[2][1]...

程式1.

//定義為區域性性質的陣列

#include

void

main()

printf("\n");

}程式2.

//定義為全域性性質的陣列

#include

inta[5];

//定義為全域性性質的陣列

void

main()

printf("\n");}

大一c語言題目 24、若有定義語句:int a[2][3],*p[3]; ,則以下

11樓:匿名使用者

核心在於p的型別。

定義等效於

int *p[3];

這裡p是一個陣列,包含三個元素,每個元素型別為int *所以a p為陣列名, 不可以賦值。

b p[0]為int*, 而a為二維陣列名,等效於int **, 型別不匹配。

c a[1][2]為a的一個元素,型別是int,所以&a[1][2]是int*, 和p[0]型別相同, 所以這個賦值是合法的。

d 這個沒什麼說的了,錯的比b還離譜, int ***, 賦值給int*, 型別不匹配。

12樓:匿名使用者

定義中p[3]表示一個陣列,*p[3]表示一個整形指標陣列,p[0]是陣列成員,是一個整形指標,p=a錯因為不能向一個陣列賦值

int a[2][3], a是一個二維陣列,因此在等式右邊a表示一個整形指標的指標,不能賦值給整形指標值p[0],a的子陣列a[0],a[1],a[2]才是整形指標

c 中 a[1][2]是一個整形值,取地址&a[1][2]就是整形指標,可以賦值給p[0]

d a和 &a意思一樣,表示二維陣列a的地址。

若有說明:int a[3][4];則對a 陣列元素的正確引用是 () a a[2][4] b a[1][3] c a[1+1][0] d a(2)(1)

13樓:匿名使用者

選b和c

int a[3][4],陣列高維下標從0-2,陣列低維下標從0-3a的低維下標是4,超過最大低維下標,所以不合法b的兩個下標都落在合法區域

c的高維下標是1+1常量,即為2,也是合法的d的表達方式不合法,陣列下標要用,而不能用()

14樓:匿名使用者

a、a[2][4]是錯的,原因是第一維越界,不存在a[4]。

d、a(2)(1)是錯的,只有函式、強制型別轉換、算式才使用圓括號。

所以正確的答案是b、c。

c語言賦值表示式問題:若定義有語句:int a=3, b=2, c=1; 以下選項

15樓:匿名使用者

測試**:

#include "stdio.h"

#include "conio.h"

main()

測試平臺:

【dev_c++】 順利通過

結果:a=3,b=3,c=1

a=5,b=4,c=1

a=2,b=2,c=1

a=2,b=4,c=4

a=12,b=4,c=4

【tc2.0測試】

a=(b=4)=3;

(a=3*5)=4*3;

2句話有語法錯誤!

這個怎麼說呢?其實就是賦值等號從右往左看就可以了。主要的原因是【c的標準和編譯器】的實現不同吧。c89,99,11都有很多變化。而且不同的編譯器對一些處理是不同的。

比如一個函式的多個引數含有表示式的話,是從左往左呢還是從右往左計算都有差異的。

如:int fun1(int a,int b,int c)

呼叫的時候:fun1(i++,++i,i++) 不同的編譯器有不同處理。

再說大一點:不同的語言對同一功能也是不同的。

就說求模函式。 c,java,javascript ,vb,c#,c++,php,go等在負數求餘的時候選擇的處理是不一樣的。-7.

2%-3.8 -7.8%-3.

2,-7.8%-3.8,-7.

2%-3.2 樓主可以好好測試和琢磨下。

總結:這種題目總的來說就考試無厘頭的試題了。實際專案和開發中我們也會老老實實在分成多條語句來寫。考試的時候樓主就不要糾結了。

選a吧。不能將常量3賦值給一個表示式(非變數),b=4已經是個表示式了,既然是表示式就只有真假(即true和false)

樓主還記得這樣的考題嗎:

int a=3, b=2, c=1;

if(b=3)

else

所以本題,考試就選a!

樓主好運!

16樓:滄海雄風

a錯了,不能將3賦值給表示式,b=4已經是個表示式了,既然是表示式就只有真假(即0和1),

而 (a=3*5)=4*3 中的a=3*5 是賦值

17樓:匿名使用者

我在vc++6.0中貼上你的**,編譯執行都通過#include

int main()

結果2 4 4

18樓:匿名使用者

賦值語句的物件只能是變數,而不是表示式 b=4已經是個表示式。若換成a=b=3,就對了。

對於b,最後的值:a=2,b=2,c=1

對於c,整個語句是個賦值語句,裡面又巢狀了個b=4的賦值語句,所以,最後的結果是a=5,b=4,c=1

對於d,解法同c,a=5,b=4,c=4.

所以a 是錯誤滴。

C語言程式設計中陣列的定義,c語言陣列的定義

這種題目一般不希望設計記憶體管理。所以一般都是進可能給一個比較大的陣列。例如a 10 表示位數不會超過十,你輸入的時候需要個索引記錄a陣列有效的位數。使用的時候,只使用有效位數。肯定會有一段記憶體不用的。或多或少。這就是陣列儲存動態資料特點。如果記憶體管理的話,你設計個增量比如5.一旦索引告訴你10...

c語言問題中int和,c語言問題中int和float

int型是整數,作為結果輸出也只能是整數 如果是個小數,它會自動把小數位拋棄的。float就可以是小數了。不是精度的問題,是這一句的原因 s s a b int 型的 a b 得到的是整型 float 型的 a b 得到的浮點型 比如說,a 3,b 2 int 型得到的是1,float得到的是1.5...

c語言陣列不懂,C語言,定義了個數的陣列元素個數問題,不懂得不要來亂答。

main 主函式 main 程式入口 main 1.mian 是c程式的入口一般標準寫法int main void void main 在c中如果省略括號裡的內容會是有程式決定是什麼內容 2.int i,a 10 定義了一個int型別變數叫i並未其分配了sizeof int 的記憶體,還有一個名字為...