数组及指针 知识点总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章数组

第1课

知识点一

定义一维数组

格式: 类型名数组名[元素个数]

例1 定义一个包含4个整数的数组a

int a[4];

例2 定义一个包含3个双精度数的数组b

double b[3];

注意: C语言中数组的下界从0开始计数。

例如: a[4]的4个元素分别为a[0]、a[1]、a[2]、a[3]

知识点二

一维数组的初始化

用一对大括号将数组的初值括起来。

例1 int a[3]={1, 2, 3};

此例中a[0]值为1、a[1]值为2、a[2]值为3

例2 int a[5]={0};

此例中数组a的全部元素值均为0

例3 int a[3]={1, 2, 3, 4};

此例中由于初值个数多于数组元素个数,所以非法。例4 int a[ ]={0, 0, 0, 0};

此例中省略数组元素个数,初值为4个0

等价于int a[4]={0};

注意: 数组名是一个常量值,不能对它赋值。

例如: int a[3];

a=5; 此语句非法,应改为a[0]=5;

知识点三

一维数组应用

例1 从键盘上输入10个整数,输出最大数和最小数。

#include

main()

{

int a[10],i,max,min;

printf("请输入10个整数:\n");

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

scanf("%d",&a[i]);

max=a[0];

min=a[0];

for(i=1;i<=9;i++)

{

if(a[i]>max) max=a[i];

if(a[i]

}

printf("最大数是%d\n",max);

printf("最小数是%d\n",min);

}

例2 斐波数列的定义如下:

1、1、

2、

3、5、8、13、……

编程输出斐波数列的第40项值。

#include

main()

{

long a[40];

int i;

a[0]=1;

a[1]=1;

for(i=2;i<=39;i++)

a[i]=a[i-1]+a[i-2];

printf("%ld",a[39]);

}

练习题

1 从键盘上输入10个整数,输出其中完全平方数之和。

2 从键盘上输入10个整数,输出和平均数最接近的数。

第2课

知识点一

定义二维数组

格式: 类型名数组名[一维上界][二维上界]

例1 定义一个2行2列的整型数组a

int a[2][2];

此例中数组a共有4个元素,分别是a[0][0]、a[0][1]、

a[1][0]、a[1][1]。

例2 定义一个4行4列的整型矩阵a

int a[4][4];

二维数组看成一维数组

例如: a[3][4]看成由a[0]、a[1]、a[2]组成的一维数组,每个元素又是由4个元素组成的一维数组。

注意: a[0]、a[1]、a[2]不是元素,而是数组每行首地址。

知识点二

二维数组的初始化

用嵌套的大括号将数组初值括起来。

例1 int a[4][3]={ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} }; 例2 int a[4][3]={ {1,2}, {4,5}, {7}, {10} };

此例中系统自动给空缺的地方补0

例3 int a[4][3]={ {1,2}, {4,5} };

系统自动给后面的行补初值0

例4 int a[4][3]={1, 2, 4, 5};

此例中数组a的第一行中元素和第二行的第一个

元素依次为1,2,4,5其余全部为0

知识点三

定义二维数组大小

例1 int a[ ][3]={ { 1,2,3}, {4,5}, {6}, {8} };

有4个行花括号,因此说明是4行3列。

例2 int a[ ][3]={1, 2, 3, 4, 5};

这种方式计算规则:

1)第二维数值能被初值个数整除

第一维数=商数

2)第二维数值不能被初值个数整除

第一维数=商数+1

因此上例中表示一个2行3列数组。

知识点四

二维数组应用

例1 从键盘上输入5个学生3门课程的成绩,分别计算每个学生的平均分和每门课程的平均分。

#include

#define M 5

#define N 3

main()

{

int a[M][N],i,j,sum;

printf("请输入15个分数(0-100):\n");

for(i=0;i<=M-1;i++)

for(j=0;j<=N-1;j++)

scanf("%d",&a[i][j]);

printf("每个学生的平均分\n");

for(i=0;i<=M-1;i++)

{

sum=0;

for(j=0;j<=N-1;j++)

sum=sum+a[i][j];

相关文档
最新文档