好文档 - 专业文书写作范文服务资料分享网站

2013年全国计算机等级考试二级C语言复习资料 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

聪智学校

main() {int c=0,k; for(k=1;k<3;k++) switch(k) {default:c+=k; case 2:c++;break; case 4:c+=2;break; }

printf(“%d\\n”,c);

}程序运行后的输出结果是(A)

A)3 B)5 C)7 D)9

【解析】当k=1时,没有匹配的case,执行default语句,c=c+k=0+1=1。继续往下执行case 2后边的语句,c++,c变为2,遇到break语句,于是退出内层switch结构。当k=2时,找到匹配的case 2,执行c++; c变为3,遇到break语句,于是退出内层switch结构。执行外层循环for结构的k++,k变为3,k<3不成立,跳出for语句。最后输出结果为3。 ?

{ int s; scanf(\ while(s>0) { switch(s) { case1:printf(\ case2:printf(\ case3:printf(\ default:printf(\ } scanf(\ }

} 运行时,若输入1 2 3 4 5 0<回车>,则输出结果是(A)

A)6566456 B)66656 C)66666 D)6666656

【解析】while循环s<=0时退出循环,输入1 2 3 4 5 0,只有当输入0时退出循环,switch中当s=1时,执行case 1,case 2,由于case 1后面没有break,会继续执行case 2,遇到break,退出switch;当s=2时,执行case 2,退出switch;当s=3时,执行case 3,default,由于case 3后面没有break,会继续执行default,遇到break,退出switch;当s=4和5时,执行default,退出switch。所以输入1时,输出65;输入2时,输出6;输入3时,输出64;输入4时,输出5;输入5时,输出6。故选择A。

5.知识点:while,do-while,for三种循环结构 例1:(2011-09-20)有以下程序:

退出的位置。解决这一问题的方法是:首先划分结构,确定循环的语句体包括#include 哪些语句。然后,在继续划分循环体内的语句,如果循环体内的语句只有一条main() switch语句,其内部出现了break,遇到break,要结束当前switch语句的执行,{ int a=7;

while(a--);

继续执行下一次循环。

printf(“%d\\n”,a);

例1:(2011-03-26)有以下程序

}程序运行后的输出结果是 (B)

main()

A.- 1 B.0 C.1 D.7

当switch语句和循环语句(for、while)时,要注意switch里面的break语句

第 16 页 共 61 页

聪智学校

【解析】此类题一定要注意标点符号的位置,while(a--);该行末尾的分号即

为一条空语句,来作为while的循环体。

例1:(2010-09-20)有以下程序 #include main() {int a=1,b=2;

while(a<6) {b+=a;a+=2;b%=10;} printf(“%d,%d\\n”,a,b); }程序运行后的输出结果是(B)

A)5,11 B)7,1 C)7,11 D)6,1 例2:(2011-03)有以下程序段 main() { ?

while( getchar()!='\\n'); ?

}以下叙述中正确的是(C)

A)此while语句将无限循环

B) getchar()不可以出现在while语句的条件表达式中

C)当执行此while语句时,只有按回车键程序才能继续执行 D)当执行此while语句时,按任意键程序就能继续执行

【解析】while条件表达式getchar()!='\\n'只要输入的字符不是回车,就一直执行循环,而循环内是一个空语句,所以按回车键程序才能继续执行,选择C。 ?

循环体部分可以只有一条空语句,不做任何操作。

main() {int y=10; while(y--); printf(“y=%d\\n”,y);

}程序执行后的输出结果是(B)

A)y=0 B)y=-1 C)y=1 D)while构成无限循环

【解析】while(y--)后面的分号是一个空语句,当y--不等于0时执行空语句,当y—等于0时,执行printf函数输出y值,当y—等于0时退出循环,此时y值变成-1。 ?

如果第一次判断表达式的值为0,则循环一次也不执行。即while循环体最少执行0次。

例4:(2011-03)当执行下列程序时,输入1234567890,则其中while循环体将执行 0 次。 #include main() {char ch;

while((ch=getchar()==?0?)) printf(?#?); }

【解析】ch=getchar(),ch第一次读入的值为?1?,故while((ch=getchar()==?0?))不成立,循环一次也不执行。 ? while循环与switch结构 例5、(2011-03)有以下程序 main() { int s;

例3:(2010-09-21)有以下程序 #include

第 17 页 共 61 页

聪智学校

} scanf(\while(s>0) { switch(s) { case1:printf(\ case2:printf(\ case3:printf(\ default:printf(\ } scanf(\}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是(A)

printf(“%d\\n”,a);} ?

do-while循环体最少执行1次。

例2:(2007-09)若变量已正确定义,有以下程序段 i=0;

do printf(“%d,”,i); while(i++);

printf(“%d\\n”,i); 其输出结果是 (B)

A)0,0 B)0,1 C)1,1 D)程序进入无限循环

【解析】执行do-while循环,输出i的值为0,接着判断循环条件i++,i++的值为0,i的值为1,故答案是B。

A)6566456 B)66656 C)66666 D)6666656

【解析】:while循环s<=0时退出循环,输入1 2 3 4 5 0,只有当输入0时退出循环,switch中当s=1时,执行case 1,case 2,由于case 1后面没有break,会继续执行case 2,遇到break,退出switch;当s=2时,执行case 2,退出switch;当s=3时,执行case 3,default,由于case 3后面没有break,会继续执行default,遇到break,退出switch;当s=4和5时,执行default,退出switch。所以输入1时,输出65;输入2时,输出6;输入3时,输出64;输入4时,输出5;输入5时,输出6。故选择A。

7.知识点:for语句

例1:(2011-03)有以下程序

main()

{ char b,c; int i; b='a'; c='A'; for(i=0;i<6;i++) { if(i%2) putchar(i+b); else putchar(i+c); }

printf(\

} 程序运行后的输出结果是(B)

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef 【解析】:for循环执行6次,每次判断i能否被2整除,如果不能,则输出i+b,如果可以则输出i+c,注意if(i%2)是求表达式i%2是否为true,即其结果是不是非0。所以i为0时,输出0+A=A,i为1时,输出1+a=b,i为2时,输出2+A=C,i为3时,输出3+a=d,i为4时,输出4+A=E,i为5时,输出5+a=f。故选B。 ?

表达式1、表达式2、表达式3可以缺省,但两个分号不能省略。

6.知识点:do-while语句

例1:(2009-09-09)以下程序运行后的输出结果是 5 。 #include main() {int a=1,b=7; do{ b=b/2; a+=b; }while(b>1);

第 18 页 共 61 页

聪智学校

表达式1省略的情况如下: 例2:(2010-03-21)有以下程序 #include main() {int a=1,b=2;

for(;a<8;a++) {b+=a;a+=2;} printf(“%d,%d\\n”,a,b); }程序运行后的输出结果是(D)

A)9,18 B)8,11 C)7,11 D)10,14 ?

表达式1和表达式3也可以是逗号表达式。

例3:(2009-04-20)以下程序段中的变量已正确定义 for(i=0;i<4;i++,i++)

for(k=1;k<3;k++) printf(“*”);程序段的输出结果是 (B) A)******** B)**** C)** D)* 【解析】外层for循环,表达式3是逗号表达式,即i自加2。. ?

for循环与switch结构

例4:(2009-09-29)有以下程序 #include main()

{int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2)

第 19 页{case 0:switch(a[i]%2) {case 0:a[i]++;break; case 1:a[i]--; }break; case 1:a[i]=0; }

for(i=0;i<4;i++) printf(“%d”,a[i]); printf(”\\n”); }程序运行后的输出结果是( C)

A)3 3 4 4 B) 2 0 5 0 C)3 0 40 C)0 3 0 4 例5、(2011-03)有以下程序段

int i,n;

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

{ n=rand()%5; switch (n) { case 1: case 3:printf(\ case 2: case 4:printf(\ case 0:exit(0); }

printf(\

} 以下关于程序段执行情况的叙述,正确的是(D)A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环操作 C)当产生的随机数n为1和2时不做任何操作 D)当产生的随机数n为0时结束程序运行

共 61 页

聪智学校

【解析】:rand()是随机产生一个整数,rand()%5即随机得到0-4这五个数字,for{int i,j,m=1; 循环控制随机产生8次,当得到1,3时执行printf(\并退出switch,当得

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

到2,4时执行printf(\并继续循环,当得到0时,exit(0)正常结束程序。所

{ for(j=3;j>0;j--) 以循环不一定执行8次,故选择D。 ?

for循环与数组

{if(i*j>3) break; m*=i*j;

} }

printf(“m=%d\\n”,m);

}程序运行后的输出结果是 (A)

A)m=6 B)m=2 C)m=4 D)m=5 例2:(2011-03)有以下程序

例6:(2010-09-09)有以下程序 #include main()

{int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++)

{n[i]=n[i-1]*3+1; printf(“%d ”,n[i]);} }程序运行后的输出结果是 1 4 13 40 。

main() ? 注意区 赋值语句和判断语句

例 7:(2011-03)若i和k都是int类型变量,有以下for语句 { int x=1,y=0; for(i=0,k=-1;k=1;k++) printf(\

if(!x) y++;

下面关于语句执行情况的叙述中正确的是 (D)

else if(x==0) A)循环体执行两次 B)循环体执行一次

if (x) y+=2; C)循环体一次也不执行 D)构成无限循环

【解析】:for循环的表达式1和表达式3可以是一个简单的表达式也可以是逗号表else y+=3; 达式,本题表达式1是一个逗号表达式,i赋值为0,同时k赋值为-1。所以判断

printf(\

表达式2:k=1是k赋值为1,故无限循环,选择D。

}程序运行后的输出结果是 (D)

8.知识点:循环嵌套

#include main()

例1:(2010-03-20)有以下程序

A)3 B)2 C)1 D) 0

【解析】:if-else的嵌套,注意else总是与前面最近的且未配对的if语句配对组合。if(!x)中x为1,!x为0为false,即if(!x) 后的语句不执行,else if(x==0),x为1

第 20 页 共 61 页

2013年全国计算机等级考试二级C语言复习资料 - 图文

聪智学校main(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf(“%d\\n”,c);}程序运行后的输出结果是(A)A)3B
推荐度:
点击下载文档文档为doc格式
9a6vy17nnd0wekt4q39j
领取福利

微信扫码领取福利

微信扫码分享