数组及指针 知识点总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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];