求編寫程式,給二維陣列所有元素賦值並輸出,要求使用指標陣列

2021-04-02 12:48:09 字數 5911 閱讀 2775

1樓:匿名使用者

一維陣列只有一個下標,稱為一維陣列,其陣列元素也稱為單下標變數。在實際問題中有很多量是二維的或多維的,因此c語言允許構造多維陣列。多維陣列元素有多個下標,以標識它在陣列中的位置,所以也稱為多下標變數。

本節只介紹二維陣列,多維陣列可由二維陣列類推而得到。

二維陣列的定義

二維陣列定義的一般形式是:

型別說明符 陣列名[常量表示式1][常量表示式2]

其中常量表示式1表示第一維下標的長度,常量表示式2 表示第二維下標的長度。例如:

int a[3][4];

說明了一個三行四列的陣列,陣列名為a,其下標變數的型別為整型。該陣列的下標變數共有3×4個,即:

a[0][0], a[0][1], a[0][2], a[0][3]

a[1][0], a[1][1], a[1][2], a[1][3]

a[2][0], a[2][1], a[2][2], a[2][3]

二維陣列在概念上是二維的,即是說其下標在兩個方向上變化,下標變數在陣列中的位置也處於一個平面之中,而不是象一維陣列只是一個向量。但是,實際的硬體儲存器卻是連續編址的,也就是說儲存器單元是按一維線性排列的。如何在一維儲存器中存放二維陣列,可有兩種方式:

一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。

在c語言中,二維陣列是按行排列的。即,先存放a[0]行,再存放a[1]行,最後存放a[2]行。每行中有四個元素也是依次存放。

由於陣列a說明為int型別,該型別佔兩個位元組的記憶體空間,所以每個元素均佔有兩個位元組。

二維陣列元素的引用

二維陣列的元素也稱為雙下標變數,其表示的形式為:

陣列名[下標][下標]

其中下標應為整型常量或整型表示式。例如:

a[3][4]

表示a陣列三行四列的元素。

下標變數和陣列說明在形式中有些相似,但這兩者具有完全不同的含義。陣列說明的方括號中給出的是某一維的長度,即可取下標的最大值;而陣列元素中的下標是該元素在陣列中的位置標識。前者只能是常量,後者可以是常量,變數或表示式。

2樓:匿名使用者

給你寫關鍵**,其他的不寫哦!

.....

for(*point=array,*point。

3樓:匿名使用者

參考**如下:

#include

int a[3][3];

int main()

return 0;}

4樓:岔路程式緣

先試一下能不能發出,勿怪

c語言中怎樣實現對二維陣列元素進行賦值並輸出。

5樓:落魄偶咯

可以按照下面步驟進行定義二維陣列並輸出:

1 定義二維指標。

2 確定內陣列維數,即行數容和列數。

3 申請行數個一維指標大小空間,並賦值給二維指標。

4 對於每個一維指,申請列數個元素的空間,並賦值給對應的一維指標。

5 輸入或賦值資料。

6 使用雙重迴圈,逐個範圍儲存單元並輸出。

7 逐個釋放一維指標上的記憶體。

8 釋放二維指標上的記憶體。

以整型二維陣列為例:

下面的**,實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。

6樓:匿名使用者

用一個兩重迴圈就可以了:

#include

void main()

, row, col;

printf("請輸入陣列元素的值(3行4列): \n");

for (row=0; row<3; row++)for (col=0; col<

printf("您輸入的陣列為:\n");

for (row=0; row<3; row++)}

7樓:薔祀

1 定義二維指標。

2 確定陣列維數,即行數和列數。

3 申請行數個一維指標大小空間,並專賦值給二維指標。

4 對於每屬個一維指,申請列數個元素的空間,並賦值給對應的一維指標。

5 輸入或賦值資料。

6 使用雙重迴圈,逐個範圍儲存單元並輸出。

7 逐個釋放一維指標上的記憶體。

8 釋放二維指標上的記憶體即可實現對二維陣列元素進行賦值並輸出。

擴充套件資料

c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

參考資料

8樓:匿名使用者

二維陣列的賦值分bai兩種情況:du

1、定義時初始zhi化賦值

int a[2][4]=,

};2、定義後,

dao進行陣列元素專賦值

int a[2][4];

int i,j;

for( i=0;i<2;i++ ) //行}//以上賦值完成後,與初始化賦值得到的內容是相同的。

二維陣列的輸出,只能逐行遍歷二維陣列,逐個輸出每一個元素。如:

//接前面**

for( i=0;i<2;i++ ) //行printf("\n");//輸出一行後,換行顯示}

9樓:匿名使用者

這個說出來的話應該是沒什麼大問題,但是你也可以考慮考慮,想好了再。

10樓:匿名使用者

二維字復符陣列的每一行可制以用來存放一個bai字串,因此可以將du二維字元陣列看成是一個一zhi維陣列,陣列中的元dao素為字串,即被看作是字串陣列。如: char ss[3][10];陣列ss可以被看作是用來存放3個字串的字串陣列,每個字串的長度不超過9。

這時,對陣列中字串的引用,只使用第一個下標。即:ss[0]:

表示第一個字串的首地址;ss[1]:表示第二個字串的首地址;ss[2]:表示第三個字串的首地址; 在scanf()和printf()函式中輸入輸出字串時,不能使用ss[i][j],因為ss[i][j]表示是字元元素而不是表示字串,再就是,對字串陣列輸出時,ss[i]不能在前面再加「&」。

11樓:匿名使用者

用一個兩重迴圈bai就可以了du:

#include

void main()

, row, col;

printf("請輸入陣列元zhi素的值(3行4列): \n");

for (row=0; row<3; row++)for (col=0; col<

printf("您輸入的數dao組為:\n");

for (row=0; row<3; row++)}//測試結答果:

12樓:匿名使用者

1、二bai維陣列是形為a[n][n]的陣列類du型,第一個n為行數,zhi第二個daon為列數,也就是下標,比如說我要定義回一個三

答行三列的整型二維陣列可以這樣定義:int a[3][3]=;

2、為了方便學習,我們將該陣列抽象成以下形式1 2 3

4 5 6

7 8 9

也就是三行三列的資料,1的地址為a[0][0](注意,陣列下標從0開始),2的地址為a[0][1],第二行的為a[1][x](0 <= x <= 2),以此類推。

3、所以取每一個值只要給相應的下標即可取出值,比如我要取出第二行第二列的資料我可以這樣取int b = a[1][1];賦值也是同樣的,如果需要對每一個元素迴圈賦值則需要兩層for迴圈,比如

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

13樓:life星隨影戀

巢狀迴圈,用兩層迴圈就可以

14樓:匿名使用者

#includeint main()

printf("\n");

}printf("\n");

return 0;}

c語言 怎麼用指標輸出一個二維陣列的全部值

15樓:匿名使用者

c語言的陣列(不管多少維)在記憶體中都是線性儲存的。所以用一級指標加偏移就可以訪問所有元素。

舉個例子,有一個10*10的二維陣列a,這樣就可以輸出:

int a[10][10];

int *p = (int *)a;

int i;

for (i = 0; i < 10 * 10; i++)printf("%d", *(p + i));

跪求c語言中怎樣把很多字串存入二維陣列中,並用指標輸出,急用~謝謝

16樓:匿名使用者

給你舉個例子,這裡str就是一個二維陣列,我手動輸入10個字串存入該陣列,然後用該二維陣列的行指標輸出

#include

#include

void main()

17樓:手機使用者

#include

#include

void main()

for(i=0;i<10;i++) //行索引值puts(**p=str[i]);}

18樓:匿名使用者

#include

int main()

}printf("%s %s\n",*(array),*(array+1));}

c語言問題,用指標為一個二維陣列賦值

19樓:fzy範忠雲

ptr=arr;

其實你這樣賦值也是可以的,是沒有問題的。

因為arr是二維陣列的陣列名,它636f707962616964757a686964616f31333264626539(arr)本身就代表這個二維陣列的第0行的地址。

問題關鍵不是出現在這裡,而是在你程式的while迴圈語句中

你這樣寫是不對的,首先ptr指向的是一個地址,所以ptr+i也是一個地址,所以這裡就不能用變址運算子"&"了。第二個問題是,i 從0自加到6,這裡面其實有了7個數,明顯超過了arr陣列的長度,這樣是不對的。這個迴圈還有一個問題就是,這本身就是一個不正常的迴圈(自己想想為什麼)

下面是我幫你改改的**,希望對你會有幫助。

#include

void main()

20樓:傻帽天才

順著你的想法 我給來你改了一下自 對於樓上bai寫的**我說一du下 他那裡的ptr = array[0] ;我說這個zhi希望能增加你對指dao針的理解。

double arr[2][3];

double( *ptr)[3];

int i=0;

ptr=arr;

printf("plese enter 2*3 numbers: \n");

21樓:匿名使用者

這個我不太明白,我也是新手,我也遇到過這種情況,我是這樣做內的:

#include

void main()

希望對你有點容幫助

輸入33的陣列,編寫程式實現,使用二維陣列程式設計實現,鍵盤輸入九9個整數,按33的矩陣輸出,並分別求出

分數有點高,不做都不行。include stdio.h void main void printf 對角線元素權和 d n sum1 printf 對角線上行 列下標均為偶數的各元素的積 d n sum2 printf 對角線上其值最大的元素值 d 行 d,列 d n max,k,k 輸入3 3的陣...

matlab中怎樣將三維陣列的維賦給二維如A1)賦給二維的B

1,直接賦值 b a 1 試了一下可以。2.先用次sum求每行元素和,因為要求 每個元素都除以每列之和 所以得用1次for迴圈 1 三維陣列中的各個為也是二維陣列,所以賦值可以直接賦即可!假設a是三維陣列,b是二維陣列 b a 1 b a 2 b a 3 分別把a的三維中的 一 二 三維賦給b。2 ...

二維陣列元素個數怎麼算啊vb語言的,求

陣列 arr x to y,n to m 每一維的個數公式 上界 下界 1 第一維 ubound arr,1 lbound arr,1 1 第二維 ubound arr,2 lbound arr,2 1 總個數 n ubound arr,1 lbound arr,1 1 ubound arr,2 l...