全国二级C知识点总结3-数组
- 2019 年 11 月 21 日
- 筆記
本课重要知识点:
1.知识点:一维数组的定义
例1:(2010-03-25)下列选项中,能正确定义数组的语句是(D)
A)int num[0…2008]; B)int num[];
C)int N=2008; D)#define N 2008
int num[N]; int num[N];
【解析】数组的长度必须是一个整型常量、整型常量表达式,故A项错误。定义数组时,不能省略数组长度,B项错误。数组的长度不能是变量,C项错误。数组的长度可以是符号常量,D项正确。
例2:(2010-09-28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是(D)
A)int a[5]={0}; B)int b[]={0,0,0,0,0};
C)int c[2+3]; D)int i=5,d[i];
【解析】可以只给数组的前面一部分元素设定初值,A项正确。对全部数组元素赋初值时,可以不指定数组元素的个数,B项正确。数组的长度可以是一个整型常量表达式,C项正确。数组的长度不能是变量,D项错误。
2.知识点:一维数组元素的引用
例1:(2008-09-21)若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是 (C)
A)m[–i] B)m[2*2] C)m[m[0]] D)m[m[i]]
【解析】m数组元素的引用的下限为0,上限为4。i=4,–i的值为3,A项正确。B项没有越界,正确。m[0]=5,超过上限,已经越界,故C项错误。m[4]=1,没有越界,故D项正确。
例2:(2011-03)以下程序运行后的输出结果是 13715
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("n");
}
【解析】:n[1]=1,n[2]=1*2+1=3,n[3]=3*2+1=7,n[4]=7*2+1=15
3.知识点:一维数组的初始化
l 顺序列出数组元素的全部初值,例如inta[5]={1,2,3,4,5};
l 只给数组的前面一部分元素设定初值,未赋初值的元素自动取0值。例如,int a[5]={1,2};
l 对全部数组元素赋初值时,可以不指定数组元素的个数。例如,inta[]={1,2,3,4,5};
4.知识点:二维数组的初始化
l 按行分段给二维数组赋初值
l 按行连续赋值
l 对部分元素赋初值,未赋初值的元素自动取0值
l 若对全部元素赋初值,则第一维的长度可以不指定
例1:(2006-04-16)以下数组定义中错误的是(B)
A) int x[][3]={0};
B) intx[2][3]={{1,2},{3,4},{5,6}};
C) int x[][3]={{1,2,3},{4,5,6}};
D) int x[2][3]={1,2,3,4,5,6};
【解析】若对全部元素赋初值,则第一维的长度可以不指定,C项正确。二维数组的初始化可以按行连续赋值,D项正确。C项二维数组的初始化超过第一维度长度,故错误。
5.知识点:二维数组和for语句
例1:(2010-03-09)有以下程序
#include <stdio.h>
main()
{int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i;j<3;j++) printf(“%d”,a[i][j]);
printf(“n”);
}程序运行后的输出结果是 123569 。
6.知识点:字符串
定义:由“”引起来的,由若干个字符所组成的序列。
字符串的结束标志:’ ’
如字符串“china”,在内存中存储形式是
c |
h |
i |
n |
a |
|
---|