聪智学校
也不等于0,也不成立,故else if内的语句也不执行,而if (x) y+=2;else y+=3;均为达式k>10,值为0,故跳出do-while循环,执行printf(“s=%d\\n”,s);则输出结果为else if内的语句。所以直接输出y为0,故选D。
s=0。 9.知识点:break语句
? 功能:跳出整个switch语句;跳出循环体,防止死循环。
?
break语句只能出现在switch、while、do-while、for循环中,不能出现在其他地方。
? 作用范围:所在循环体从属的最内层循环,而不是外层的某个循环。
6.知识点:continue语句
? 功能:结束本次循环,接着判断是否继续下一次循环。 ? continue语句只能出现在while、do-while、for循环中。
?
作用范围:所在循环体从属的最内层循环,而不是外层的某个循环。
例1:(2009-04-09)以下程序运行后的输出结果是 s=0 #include
if((k%2)!=0) continue;
s+=k; k++; }while(k>10); printf(“s=%d\\n”,s); }
【解析】k=1,if((k%2)!=0)条件成立,执行continue语句,结束本次循环,判断表第 21 页 共 61 页
聪智学校
第三课 数组
第 22 页 共 61 页
聪智学校
第 23 页 共 61 页
聪智学校
本课重要知识点: 1.知识点:一维数组的定义
例1:(2010-03-25)下列选项中,能正确定义数组的语句是(D)
有越界,故D项正确。
例2:(2011-03)以下程序运行后的输出结果是 13715
main()
{ int i,n[5]={0};
A)int num[0…2008]; B)int num[];
for(i=1;i<=4;i++)
C)int N=2008; D)#define N 2008 { n[i]==n[i-1]*2+1; printf(\
printf(\int num[N]; int num[N];
} 【解析】数组的长度必须是一个整型常量、整型常量表达式,故A项错误。定义
【解析】:n[1]=1,n[2]=1*2+1=3,n[3]=3*2+1=7,n[4]=7*2+1=15
数组时,不能省略数组长度,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项错误。
3.知识点:一维数组的初始化
? ?
顺序列出数组元素的全部初值,例如int a[5]={1,2,3,4,5};
只给数组的前面一部分元素设定初值,未赋初值的元素自动取0值。例如,int a[5]={1,2};
? 对全部数组元素赋初值时,可以不指定数组元素的个数。例如,int a[]={1,2,3,4,5};
4.知识点:二维数组的初始化
? ? ? ?
按行分段给二维数组赋初值 按行连续赋值
对部分元素赋初值,未赋初值的元素自动取0值 若对全部元素赋初值,则第一维的长度可以不指定
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,没
例1:(2006-04-16)以下数组定义中错误的是(B) A) int x[][3]={0};
B) int x[2][3]={{1,2},{3,4},{5,6}}; C) int x[][3]={{1,2,3},{4,5,6}};
第 24 页 共 61 页
聪智学校
D) int x[2][3]={1,2,3,4,5,6}; A)char s[];s=”BOOK!”; B)char *s;s={“BOOK!”};
【解析】若对全部元素赋初值,则第一维的长度可以不指定,C项正确。二维数组C)char s[10];s=”BOOK!”; D)char *s;s=”BOOK!”;
的初始化可以按行连续赋值,D项正确。C项二维数组的初始化超过第一维度长度,【解析】字符数组名是地址常量,不能赋值给数组名,故A、C项错误,D项指针故错误。
5.知识点:二维数组和for语句
例1:(2010-03-09)有以下程序 #include
{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.知识点:字符串
定义:由“”引起来的,由若干个字符所组成的序列。 字符串的结束标志:?\\0?
如字符串“china”,在内存中存储形式是
c h i n a \\0 该字符串的长度为5字节,所占的存储空间为6字节。
7.知识点:字符数组的定义及初始化
?
字符数组名是地址常量,不能赋值给数组名。 例1:(2009-04-32)以下选项中正确的语句组是(D)
第 25 页s是个变量,将字符串常量赋值给s,是正确的。B项中给s赋值时不能用花括号将字符串括起来。
例2:(2009-09-31)下面是有关C语言字符数组的描述,其中错误的是(D) A)不可以用赋值语句给字符数组名赋字符串 B)可以用输入语句把字符串整体输入给字符数组 C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串
8.知识点:字符数组的输入与输出
例1:(2009-09-13)有以下程序 #include
{char a[20]=”How are you?”,b[20]; scanf(“%s”,b);printf(“%s %s\\n”,a,b);
}程序运行时从键盘输入:How are you?<回车>
则输出结果为How are you? How
【解析】scanf函数输入,以空格作为字符串输入结束的标志,故字符数组b只接收到字符串”How”。 例2:(2011-03)有以下程序 main()
共 61 页