2015年9月计算机二级《C语言》高分突破模拟卷
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
参考答案:D
参考解析:fun()函数的功能是对数组a[]的元素从大到小进行排序。
2以下程序的输出结果是( )。
A.1 2 3 4B.1 2 3C.1 2D.1
参考答案:B
参考解析:while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为”假”(值为零)时,退出循环,并转下一语句去执行。本题在输出num的值为3之后,再判断while的循环条件3<=2,不成立,所以不再输出num的值,故本题应该选B。
3如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是( )。
A.e3、e1、e4、e2B.e2、e4、e3、e1C.e3、e4、e2 D.任意顺序
参考答案:B
参考解析:栈的特点是先进后出,可知el肯定是最后出栈的,因此正确答案为选项B。
4与“y=(x>0? 1:x<0?一1;0)”;的功能相同的if语句是( )。
A.
B.
C.
D.
参考答案:B
参考解析:y=(x>O?1:xO?1:(x<0?-1:0)),故选B选项。
5下列选项中不会引起二义性的宏定义是( )。
A.#define S(x)x*x
B.#define S(x)(x)*(x)
C.#define S(x)(x)*x
D.#define S(x)(x*x )
参考答案:B
6结构化程序设计的3种结构是( )。
A.顺序结构、选择结构、转移结构
B.分支结构、等价结构、循环结构
C.多分支结构、赋值结构、等价结构
D.顺序结构、选择结构、循环结构
参考答案:D
参考解析:结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法;②任何程序都可由顺序、选择和循环3种基本控制结构构造。
7有以下程序:
程序运行后的输出结果是( )。
A.209B.99C.2011 D.1111
参考答案:C
参考解析:在主函数中,首先定义一个包含20个元素的字符数组p,执行语句“strcpy(p+str|en(q),r);”,数组p的内容变为{a,b,c,a,b,c,d,e,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0),执行语句“strcat(P,q);”,数组P的内容变为{a,6,c,a,6,c,d,e,a,6,c,\D,\0,\0,\0,\0,\0,\0,\0,\0},函数sizeof(p)是求数组p的大小,返回20,而函数strlen(p)是计算以p所指起始地址的字符串的长度,这一长度不包括串尾的结束标志0,所以函数返回11。
8有以下程序:
程序的输出结果是( )。
A.AB.aC.Z D.z
参考答案:B
参考解析:因为在ASCⅡ码中,它的大写比小写刚好小32,比如ˊA ˊ的ASCⅡ是65,那么ˊa ˊ的ASCⅡ就是97。x=(x>=ˊAˊ&&x<=ˊZˊ)?(x+32):x;这句用了?:表达式,A?B:C就是问号前A部分为真时,表达式的值是B,否则表达式的值是C。这里(x>=ˊAˊ&&x<=ˊZˊ)成立,所以表达式取(x+32),所以x=ˊA ˊ+32=ˊa ˊ。因此正确答案为B。
9有以下程序:
程序的输出结果是( )。
A.3B.4C.1D.2
参考答案:A
参考解析:*P=a;P指向首地址,*(P+2))往后移动两个元素,指向3,所以正确答案为A。
10已知函数fread的调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是( )。
A.存放读人数据项的存储区
B.一个指向所读文件的文件指针
C.一个指针,是指向读人数据存放在内存中的起始地址
D.一个整型变量,代表要读入的数据项总数
参考答案:C
参考解析:本题考查数据块读取函数调用形式:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,是读入数据的存放地址,对fwrite来说,是要输出数据的地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节数据项;“fp”是指文件型指针。
11有定义:“int a=2,b=3,c=4;”,则下列选项中值为0的表达式是( )。
A.
B.
C.
D.
参考答案:A
参考解析:本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1为0,又因为逻辑与运算符“&&.”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项B中,关系表达式a
12有以下程序:
程序运行后的输出结果是( )。
A.10B.11C.14 D.15
参考答案:C
参考解析:由题目的语句P=&a[l]可知,p指向a数组中下标为1的元素“4”,又因为p为指针变量,所以p[x]与*(p+x)等价,因而在for循环语句中,第一次循环p[1]指向a数组中下标为2的元素“6”,第二次循环p[2]指向a数组中下标为3的元素“8”,所以y=6+8=14,因而选项C为正确答案。
13若变量已正确定义,有以下程序段
其输出结果是( )。
A.0,0B.0,1C.1,1 D.程序进入无限循环
参考答案:B
参考解析:本题中,变量i的初始值等于0,执行循环体中的语句后,输出i的值为0。while后面括号中表达式i++的值为0,循环结束。此时变量i自加1,所以再次输出“1”。
14有下列程序:
执行后的输出结果是( )。
A.6B.7C.8D.9
参考答案:C
参考解析:函数fun(int x,int y)的功能是返回x+y的值。在主函数中,变量a、b、c的初始值分别为1、2、3。因此,逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。
下列程序执行后的输出结果是( )。
A.6B.7C.8D.9
参考答案:A
参考解析:本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,6[0]的值为6。
16下列关于栈的描述中错误的是( )。
A.栈是先进后出的线性表
B.栈只能顺序存储
C.栈具有记忆作用
D.对栈的插入删除操作中,不需要改变栈底指针
参考答案:B
参考解析:栈是线性表的一种,它的特点是先进后出,并且只能在表的一端进行插入和删除操作的线性表,入栈和出栈都在栈顶进行,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。
17设有以下语句:
int a=1,b=2,C;
c=a^(b<<2);
执行后,C的值为( )。
A.6B.7C.8 D.9
参考答案:D
参考解析:本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a^(b<<2)=a^(000010<<2)=a^001000=0000001^001000=9,故选择D。
以下叙述中错误的是( )。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.数组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D.可以通过赋初值的方式确定数组元素的个数
参考答案:C
参考解析:数组下标从0开始,当数组元素的下标超出了定义的范围时,系统不会出“下标越界”的信息,运行会出错,因此在编程时务必检查下标是否越界。
19有下列程序:
程序的运行结果是( )。
A.3B.2C.4 D.1
参考答案:B
参考解析:本题考查switch语句及break的用法。第一个switch语句,因为a=6,a%2=0,所以执行“CaSe 0,m++;”,将m加1,遇到break语句跳出switch语句,结束循环。不执行下面的switch。
20有以下程序:
程序的输出结果是( )。
A.0B.1C.2 D.3
参考答案:C
参考解析:
因为a=2,b=-1,f(a
21以下程序的输出结果是( )。
A.1,2,6,8B.8,6,2,1C.8,1,6,2 D.8,6,1,2
参考答案:C
参考解析:本题用了函数调用,fun中if语句成立则进行i,j的交换,用到主函数中则为把下标0、3,1、2互换,因此,当执行完后x的数组为8,1,6,2,故选择C选项。
22
不能计算出一个char型数据所占字节数的表达式是( )。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[o])
参考答案:A
参考解析:选项A计算的是p[]字符数组首地址所占的内存字节数。选项B、C和D都能计算出一个字符型数据所占的字节数。
23对两个数组a和b进行下列初始化:
则下列叙述正确的是( )。
A.数组m与数组n完全相同
B.数组m与数组n长度相同
C.数组m比数组n长1
D.数组m与数组n中都存放字符串
参考答案:C
参考解析:在m数组中赋值的是字符串,其长度为7,末尾有结束符ˊ\0ˊ,故字节数为8,而n数组中赋的是字符,其长度为7,故C选项正确。
24有以下程序:
A.9B.61490C.61D.5
参考答案:C
参考解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。
25有下列程序:
程序执行后的输出结果是( )。
A.x=4B.x=8C.x=6 D.x=12
参考答案:B
参考解析:在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量x的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量X的值为8。