冲刺必看!名师讲解二级C真题之选择题(2)

技术与开发

看了上期的选择题,大家是不是觉得很简单?那只是试卷开头部分,接下来我们要讲的选择题就有难度了,这些试题你都能解吗?

第22题:有以下程序

#include<stdio.h>

main()

{int y=9;

for( ; y>0;y--)

if(y%3==0) printf("%d",--y);

}

程序的运行结果是

A)741            B)963

C)852            D)875421

本题难度:较难

涉及知识:--i和i--的区别

专家解析:考生失分题,考生务必明白自增/自减运算中运算符在变量前与后的区别。自增运算作表达式使用时,++/--在后,表达式的值为原值。++/--在前,表达式的值为加/减后值。for语句有三个表达式,当表达式1省略时,即y=9。(for (y=9;y>0;y--))循环体中:if(y%3==0) printf("%d",--y)输出y的减后值,并且y值-1。当y的值为9、6、3时才满足,结果则为852

第24题:有以下程序

#include<stdio.h>

main()

{int i,j,m=55;

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

for(j=3;j<=i;j++) m=m%j;

printf("%d\n",m);

}

程序的运行结果是

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

本题难度:难

涉及知识:循环嵌套 取模运算

专家解析:此题考查双重循环和取模运算,很容易出错,需要考生仔细再仔细。循环嵌套类题,主要考内外层循环条件的判断。题中,内层条件“j<=i”,而j的初值为3,当i的值为1和2时,内层循环都不执行。只有当i与j都等于3时,才会执行一次。m=55%3,结果为1。

第29题:设有定义:char p[]={' 1',' 2 ',' 3' },*q=p,以下不能计算出一个char型数据所占字节数的表达式是

A)sizeof(p)         B)sizeof(char)

C) sizeof(*q)        D)sizeof(p[0])

本题难度:较难

涉及知识:指针常量的概念

专家解析:sizeof()函数求数据占内存的字节数,其参数必须为数据类型或者变量。p为字符类型数组,q为指向字符类型数据的指针变量。*q表示p[0]。答案A中p为数组名,是指针常量,表示数组的首地址,无法求字节数。

第30题:有以下函数

int aaa(char *s)

{char *t=s;

while(*t++);

t--;

return(t-s);

}

以下关于aaa函数的功能叙述正确的是

A)求字符串s的长度

B)比较两个串的大小

C)将串s复制到串t

D)求字符串s所占字节数

本题难度:难

涉及知识:知识点的融合

专家解析:while(*t++)等同于while(*t++ != 0),亦同于while(*t++ !='\0')。因为,条件表达式中++在t变量的后面,所以每次判断的值都是原值,故循环的结果,t指针指向字符串尾的'\0'元素的后一个元素t--,使t指向字符串尾。

第32题:有以下程序

#include<stdio.h>

void fun(char **p)

{++p; printf("%s\n",*p);}

main()

{char *a[]={"Morning","Afternoon","Evening","Night"};

fun(a);

}

程序的运行结果是

A)Afternoon        B)fternoon

C)Morning         D)orning

本题难度:难

涉及知识:指针

专家解析:指向指针的指针变量,知识点复合。本题中,a为指针数组,p为指向指针的指针变量。当调用fun函数时,形参p就指向a数组中的第一个指针元素,p++则指向第二个指针元素,所以*p输出a[1]所指向的字符串。指针变量指向字符串时,可以直接引用,例如char *a="China"。

第33题:若有定义语句:int a[2][3],*p[3],则以下语句中正确的是

A)p=a               B)p[0]=a

C)p[0]=&a[1][2]          D)p[1]=&a

本题难度:较难

涉及知识:指针

专家解析:本题中,p为指针数组,p的每个元素都是指向整型数据的指针。C语言中,指向数组的指针变量有三种。例如char*p1,char*p2[3],char(*p3)[3],其中p1为指向字符型变量的指针变量,也可以指向字符型数组的元素;p2为指向字符型数据的指针数组,长度为3;p3是指向包含3个元素一维数组的指针变量,专用于二维数组中行的操作。

第22题答案:C

第24题答案:B

第29题答案:A

第30题答案:A

第32题答案:A

第33题答案:C