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 的記憶體,還有一個名字為...