c語言中的二維數組
Ⅰ c語言二維數組怎麼表示
int
a[m][n];//就表示一個m行n列的整型二維數組
在c語言中數組的下標是從0開始的所以,數組a的元素個數可以表示為:a[0][0]-a[m-1][n-1]
例如:
#include<stdio.h>
int main()
{
int a[3][2],i,j;//定義一個3行2列的整型二維數組a
for(i=0;i<3;i++)//依次給二維數組賦值
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf("\n");
for(i=0;i<3;i++){//輸出二維數組
for(j=0;j<2;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
/*
運行結果:
1 2
3 4
4 5
1 2
3 4
4 5
*/
Ⅱ c語言中二維數組的定義
二維數組定義的一般形式是:
類型說明符 數組名[常量表達式1][常量表達式2]
其中常量表達式1表示第一維下標的長度,常量表達式2 表示第二維下標的長度
int a[3][4];
Ⅲ 在C語言中,二維數組元素在內存中的存放順序是____。(
在c語言里二維數組元素在內存中是按行存放的。
二維數組A[m][n],這是一個m行,n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t;
按「列優先順序」存儲時,地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t;
存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組。
(3)c語言中的二維數組擴展閱讀
C++動態二維數組:
以整形為例,row為行數,col為列數
int **data;//存儲二維數組的指針(指向指針的指針。date=x[0][0]的地址。這樣標會更好。因為sizeof(date)結果為4不可能存下二維數組)。
//以下實現如何申請內存
data = new int *[row];
for (int k = 0; k < row; k++)
{
data[k] = new int[col];
}
//賦值跟普通二維數組一樣 例如
data[0][0] = 5; //將二維數組1行1列(C++中稱為0行0列)賦值為5
//刪除內存
for (int i = 0 ; i < row; ++i)
{
delete [] data[i]; //此處的[]不可省略
}
delete [] data;
Ⅳ 二維數組(c語言)
#include<stdio.h>
intmain()
{
inta[4][3],i,j,imax,jmax,imin,jmin,max=0,min=10000;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
if(max<a[i][j])
{
max=a[i][j];
imax=i;
jmax=j;
}
if(min>a[i][j])
{
min=a[i][j];
imin=i;
jmin=j;
}
}
printf("max[%d][%d]=%d,min[%d][%d]=%d ",imax,jmax,max,imin,jmin,min);
return0;
}
Ⅳ C語言編程 二維數組
在C語言中,有時我們需要函數的返回值為一個二維數組。這樣外部函數接收到這個返回值之後,可以把接收到的二維數組當成矩陣操作(外部函數不可用普通的一級指針接收返回值,這樣的話,外部函數將不知道它具有二維性)。方法如下:
法1.沒有使用typedef類型定義
[cpp] view plain
#include <stdio.h>
int (*fun(int b[][2]))[2]
{
return b;
}
int main()
{
int i,j;
int a[2][2]={1,2,5,6};
int (*c)[2];
c = fun(a);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d ",c[i][j]);
return 0;
}
法2.使用typedef類型定義
[cpp] view plain
#include <stdio.h>
typedef int (*R)[2];
R fun(int b[][2])
{
return b;
}
int main()
{
int i,j;
int a[2][2] = {1,2,5,6};
R c;
c = fun(a);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d ",c[i][j]);
return 0;
}
使用typedef類型定義可以增加程序的可讀性
這兩種方法本質上是一樣的
Ⅵ c語言中的二維數組
C 語言中的多維數組(multidimensional array)其實就是元素為數組的數組。n 維數組的元素是 n-1 維數組。例如,二維數組的每個元素都是一維數組,一維數組的元素當然就不是數組了。
多維數組聲明時,每個維度用一對方括弧來表示:char screen[10][40][80]; // 一個三維數組
數組 screen 包含 10 個元素,從 screen[0] 到 screen[9]。每個元素又是一個二維數組,它有 40 個元素,這 40 個元素均是一維數組,然後每個一維數組內都有 80 個字元。整體來說,screen 數組有 32000(10×40×80)個 char 類型元素。
想要獲取該三維數組 screen 內的某個 char 元素,必須指定 3 個索引值。例如,下面的語句把字元Z寫入該數組的最後一個元素位置:screen[9][39][79] = 'Z';
Ⅶ c語言中 二維數組要怎麼輸入怎麼換行啊
scanf那行里的a[i][j]要寫成&a[i][j],輸入就正常的輸入就行了,其實scanf讀入數字的時候,數字可以用空格、回車或者TAB間隔,比如說一個2x2的數組,你輸入
10 11
12 13
或者輸入10 11 12 13都是可以的。
Ⅷ 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類型,該類型占兩個位元組的內存空間,所以每個元素均佔有兩個位元組。
Ⅸ C語言中如何定義動態二維數組並輸出
intmain()
{
int**p;//定義二維指針。
intm,n;//行數和列數。
inti,j;
scanf("%d%d",&m,&n);//輸入行數和列數。
if(m<=0||n<=0)return-1;//行數或列數非法。
p=(int**)malloc(sizeof(int*)*m);//申請一組一維指針空間。
for(i=0;i<m;i++)
p[i]=(int*)malloc(sizeof(int)*n);//對於每個一維指針,申請一行數據的空間。
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&p[i][j]);//輸入第i行第j列的數據。其中&p[i][j]也可以寫作p[i]+j或者是*(p+i)+j.功能相同。
printf("輸入的數組為%d行%d列: ",m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)//這個循環可以輸出一行元素。
printf("%d",p[i][j]);//輸出i行j列的元素。
printf(" ");//每行輸入結束加換行符。
}
//釋放內存
for(i=0;i<m;i++)
free(p[i]);
free(p);
return0;
}
(9)c語言中的二維數組擴展閱讀
c語言中通過函數傳遞二維數組
#include
void func(int n, int a[][size])
{
/* access array */
a[i][j];
}
void main()
{
int a[10][10];
func(10, a);
}