执行printf(\并退出switch,当得到2,4时执行达式也可以是逗号表达式,本题表达式1是一个逗号表达式,printf(\并继续循环,当得到0时,exit(0)正常结束程i赋值为0,同时k赋值为-1。所以判断表达式2:k=1是k赋序。所以循环不一定执行8次,故选择D。 值为1,故无限循环,选择D。
? for循环与数组 8.知识点:循环嵌套 例6:(2010-09-09)有以下程序 例1:(2010-03-20)有以下程序 #include
main()
{int i,n[]={0,0,0,0,0}; {int i,j,m=1; for(i=1;i<=4;i++)
for(i=1;i<3;i++) {n[i]=n[i-1]*3+1; printf(“%d ”,n[i]);}
{ for(j=3;j>0;j--) }程序运行后的输出结果是 1 4 13 40 。 {if(i*j>3) break; ? 注意区 赋值语句和判断语句
m*=i*j;
例 7:(2011-03)若i和k都是int类型变量,有以下for语句 } }
for(i=0,k=-1;k=1;k++) printf(\printf(“m=%d\\n”,m);
下面关于语句执行情况的叙述中正确的是 (D)
}程序运行后的输出结果是 (A)
A)m=6 B)m=2 C)m=4 A)循环体执行两次 B)循环体执行一次 例2:(2011-03)有以下程序
C)循环体一次也不执行 D)构成无限循环
main()
{ int x=1,y=0; 【解析】:for循环的表达式1和表达式3可以是一个简单的表
if(!x) y++; else if(x==0)
第 26 页 共 78 页
D)m=5
if (x) y+=2; main() else y+=3; {int k=1,s=0; printf(\do{ }程序运行后的输出结果是 (D) if((k%2)!=0) continue; A)3 B)2 C)1 D) 0 s+=k; k++; 【解析】:if-else的嵌套,注意else总是与前面最近的且未配}while(k>10); 对的if语句配对组合。if(!x)中x为1,!x为0为false,即if(!x) printf(“s=%d\\n”,s); 后的语句不执行,else if(x==0),x为1也不等于0,也不成立,} 故else if内的语句也不执行,而if (x) y+=2;else y+=3;均为else 【解析】k=1,if((k%2)!=0)条件成立,执行continue语句,结if内的语句。所以直接输出y为0,故选D。 束本次循环,判断表达式k>10,值为0,故跳出do-while循环,9.知识点:break语句 执行printf(“s=%d\\n”,s);则输出结果为s=0。 ? 功能:跳出整个switch语句;跳出循环体,防止死循环。 ? break语句只能出现在switch、while、do-while、for循环中, 不能出现在其他地方。 ? 作用范围:所在循环体从属的最内层循环,而不是外层的 某个循环。 6.知识点:continue语句 ? 功能:结束本次循环,接着判断是否继续下一次循环。 ? continue语句只能出现在while、do-while、for循环中。 ? 作用范围:所在循环体从属的最内层循环,而不是外层的 某个循环。 例1:(2009-04-09)以下程序运行后的输出结果是 s=0 #include
第 27 页 共 78 页
第三课 数组
第 28 页 共 78 页
本课重要知识点:
1.知识点:一维数组的定义
第 29 页 共 78 页
例1:(2010-03-25)下列选项中,能正确定义数组的语句是(D) 限,已经越界,故C项错误。m[4]=1,没有越界,故D项正A)int num[0…2008]; B)int num[]; 确。
C)int N=2008; D)#define N 2008 例2:(2011-03)以下程序运行后的输出结果是 13715 int num[N]; int num[N]; main() 【解析】数组的长度必须是一个整型常量、整型常量表达式,
{ int i,n[5]={0}; 故A项错误。定义数组时,不能省略数组长度,B项错误。数
组的长度不能是变量,C项错误。数组的长度可以是符号常量,for(i=1;i<=4;i++) D项正确。
{ n[i]==n[i-1]*2+1; printf(\例2:(2010-09-28)若要定义一个具有5个元素的整型数组,以
下错误的定义语句是(D)
printf(\
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项正确。【解析】:n[1]=1,n[2]=1*2+1=3,n[3]=3*2+1=7,n[4]=7*2+1=15
对全部数组元素赋初值时,可以不指定数组元素的个数,B项
正确。数组的长度可以是一个整型常量表达式,C项正确。数3.知识点:一维数组的初始化
? 顺序列出数组元素的全部初值,例如int a[5]={1,2,3,4,5}; 组的长度不能是变量,D项错误。
? 只给数组的前面一部分元素设定初值,未赋初值的元素自2.知识点:一维数组元素的引用
动取0值。例如,int a[5]={1,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]] 例如, int a[]={1,2,3,4,5};
4.知识点:二维数组的初始化 D)m[m[i]]
【解析】m数组元素的引用的下限为0,上限为4。i=4,--i? 按行分段给二维数组赋初值 的值为3,A项正确。B项没有越界,正确。m[0]=5,超过上? 按行连续赋值
第 30 页 共 78 页