独家首发 名师解析2008二级C之选择题(1)

技术与开发

上半年的全国计算机二级C语言考试结束后,大家想第一时间知道正确的考试答案吗?想计算出自己的得分吗?想知道这次考试有哪些知识点还需要深入学习吗?不用等待,我们特意邀请了资深名师孙顾天为大家解惑(选择题1~25题的全部答案请到http://www.cpcw.com/bzsoft下载)。

第14题:设变量已正确定义并赋值,以下正确的表达式是

A)x=y*5=x+z B)int(15.8%5)

C)x=y+z+5,y++ D)x=25%5.0

本题难度:中等

涉及知识:数值运算及表达式

名师解析:本试题涉及:(1)赋值符号的左侧必须是变量;(2)类型强制转换运算中,类型必须加“( )”;(3)取模运算(%)只能用于整型。所以,得出A、B、D项均为错误;C项为逗号表达式(即将x=y+z+5赋值表达式与y++表达式连接起来)。

第19题:若变量已正确定义,有以下程序段

int a=3,b=5, c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

printf("%d,%d,%d\n",a,b,c);

其输出结果是

A)程序段有语法错 B) 3,5,3

C)3,5,5 D) 3,5,7

本题难度:中等

涉及知识:条件判断与分支结构控制语句

名师解析:此题主要考核:条件表达式的判定;条件控制语句的执行,即若要执行多条语句时,必须添加“{}”。题中if(a>b) a=b;c=a;很多考生会认为是一整条控制语句,其实不难看出c=a;是独立语句,不受条件的影响。

第20题:有以下程序

#include

main()

{int x=1,y=0,a=0,b=0;

switch(x)

{case 1:

switch(y)

{case 0:a++;break;

case 1:b++;break;

}

case 2:a++;b++;break;

case 3:a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

程序的运行结果是

A)a=1,b=0 B) a=2,b=2

C) a=1,b=1 D) a=2,b=1

本题难度:较难

涉及知识:多分支结构控制语句及其嵌套

名师解析:此题为本次考试中唯一考核分支结构嵌套的题目,switch为查找入口的控制语句,找与表达式值相符的case子句,若找到以此case子句为入口,执行该case子句及其下方的case子句中的语句段,直至执行至switch控制语句结束或break语句跳出当前控制语句。题中,内层switch(y)执行结束后,继续外层switch(x)中的case子句执行(case 2执行),当遇到break时跳出。

第21题:有以下程序

#include

main()

{int x=8;

for( ;x>0;x--)

{ if(x%3) {printf("%d,",x--);continue;}

printf("%d,",--x);

}

}

程序的运行结果是

A)7,4,2, B)8,7,5,2,

C) 9,7,6,4, D) 8,5,4,2,

本题难度:较难

涉及知识:循环控制语句与自减运算

名师解析:此题考核for控制语句的执行,在题中for语句用“{}”表示控制多条语句(即if(x%3) {printf("%d,",x--);continue;} printf("%d,",--x);),但还要注意内层的if语句也用到了“{}”,表示当条件满足时执行printf输出x--表达式的值(即输出x变量的原值,同时x=x-1),并且执行continue控制语句实现本次循环的结束(考题易出错难点:continue结束本次循环,在for语句中自动转向执行x--,进行下一次循环条件的判断)。若if条件不满足时,则执行printf("%d,",--x);(即输出x变量的减后值,x=x-1)。由此我们可以看出:(1)循环变量区间为8至0,循环变量每次递减2;(2)不能被3整除的数--输出;(3)能被3整除的数--输出其值-1。

第25题:设有如下程序段

char s[20]="Beijing",*p;

p=s;

则执行p=s;语句后,以下叙述正确的是

A)可以用*p表示s[0] B) s数组中元素的个数和p所指字符串长度相等

C) s和p都是指针变量 D)数组s中的内容和指针变量p中的内容相同

本题难度:中等

涉及知识:字符串指针概念

名师解析:题中s为字符型数组,初始化时赋予一个字符串“Beijing”。p为指向字符串的指针变量(p=s;)。在这里有几个概念比较重要:(1)数组名为指针常量,表示数组首地址;(2)数组元素的个数(表示定义时所指定的数组长度)与字符串的长度(表示存储在数组中字符串的字符个数,也就是第一个'\0'元素前有几个字符)二者概念不同。故B项与C项错误。数组s中的内容为字符串,而指针变量p的内容只是一个数组地址,所以D项错误。p=s表示指针变量p中存储着s数组的首地址(即s[0]元素的地址),*p等同于s[0]。

第14题答案:C

第19题答案:B

第20题答案:D

第21题答案:D

第25题答案:A