简单C语言问题

Python022

简单C语言问题,第1张

m为行,n为列

一、二维数组的定义

二维数组的定义格式为:

类型说明符 数组名[常量表达式1][常量表达式2];

其中常量表达式1表示第一维下标的长度,说明数组的行数,常量表达式2 表示第二维下标的长度,说明数组的列数。

例如:

int a[3][4]

该声明定义了一个3行4列的二维数组,数组名为a,该数组的下标变量共有3×4=12个,如图5-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]

图5-4 二维数组

二维数组在概念上是二维的,其下标在两个方向上变化,即行和列。从图中可以看出,二维数组的第一维决定行数,第二维决定列数。在内存中是逐行存放,即放完一行之后顺次放入第二行,如图所示。

a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1] … a[2][3]

二维数组的存储

数组a的定义声明为int类型,该类型占两个字节的内存空间,所以数组共占空间:12*2=24个字节。

二、二维数组的初始化

同一维数组相同,二维数组也可以进行初始化操作,即在数组定义的同时给各下标变量赋以初值。下面是几种不同的初始化方式:

1、对所有数组元素初始化:

int a[3][4]={{80,75,92,77},{61,65,86,71},{59,63,70,90}}

赋值情况如图5-6所示。

80759277

61658671

59637090

图5-6 二维数组的赋值

等价于:

int a[3][4]={80,75,92,77,61,65,86,71,59,63,70,90}

当为所有元素初始化时会自动按行赋值,因此可以省略区分行的{}。

以上两种形式还可以进行简化,当所有元素有初值时可以省略第一维,即行号:

int a[ ][4]={80,75,92,77,61,65,86,71,59,63,70,90}

默认值为3,取所有可能数据的最小数。

2、只对部分元素赋初值,未赋初值的元素自动取0值。

例如:

int a[3][4]={{10},{20},{30}}

是对每一行的第一列元素赋值,未赋值的元素取0值。 赋值后各元素的值为:

10 0 0 0

20 0 0 0

30 0 0 0

而若有 int a[3][4]={{10}{0,20},{0,0,30}}

赋值后的元素值为:

10 0 0 0

0 20 0 0

0 0 30 0

以上两种形式的行数已经确定,这种情况下也可以省略第一维:

int a[][4]={{10},{20},{30}}

int a[][4]={{10}{0,20},{0,0,30}}

#define f(a,b) a+b

main()

{

/*主函数自己写吧!!!*/

…………

}

fun(int n)

{

int i,sum=0

for(i=1i<=ni++)

sum=f(sum,i)

return sum

}