- 相关推荐
2015年全国计算机二级考试《C语言》冲刺模拟题(一)答案
1.A。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都由一个或者多个函数组成。

2.D。【解析】程序不光,是编写完就结束了,为了测试和维护程序,往往还需其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一、效率第二”。
3.D。【解析】类(class)描述的是具有相似属性与操作的一组对象,具体对象是类的实例。
4.D。【解析】所谓二叉树的前序遍历是指先访问根结点,再访问左子树,最后访问右子树,可知选项D正确。本题中序为DYBEAFCZX,后序为YDEBFZXCA。
5.A。【解析】线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。
6.D。【解析】算法分析是指对一个算法的运行时间和占用空间做定量的分析,计算相应的数量级,并用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。
7.C。【解析】数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无须移动元素,很方便,当查找元素时就需要逐个元素查找,因此查找的时间相对更长。
8.C。【解析】本题考查逻辑与(&&)和逻辑或(||)运算符的使用。x值在[1,10]之间,C语言中可以写成“(x>=1)&&(x<=10)”;x值在[100,110]之间,C语言表达式应写成“(x>=100)&&(x<=110)”;[1,10]和[100,110]满足任意条件就可以,所以是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符连接起来即可,所以最后的表达式:(x>=1)&&(x<=10)|| (x>=l00)&&(x<=110)。
9.B。【解析】C语言中用户标识符不能与C编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名。选项A,define,void为关键字;选项C,for,case为关键字;选项D,D0为关键字。
10.D。【解析】因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。
11.C。【解析】选项A是先将a的值赋给变量b,再将变量b的值赋给变量C,不合题意;B选项中由于c的值不为0,在将c的值赋给变量a后,表达式a=c的值为1,不再对表达式b=c计算;对于C选项,表达式a=c的值为1,再求表达式b=C的值为1,然后进行逻辑与运算;D选项将b的值赋给c后再赋给a,故选择C选项。
12.D。【解析】本题可以写成:a+a+(a-(a*a)),因为*的优先级最高,其次是-=的,+的优先级最低,所以先求a-=a*a=9,表达式变为a+a+-=9,即a=a-9=-6,再次变为a+(-6)=-12,故选择D选项。
13.B。【解析】数组下标从0开始,A选项中所赋值的个数超过了数组的长度;C选项中定义a为字符型变量,而不是数组,赋值错误;D选项中,整型数组不能赋字符串。
14.A。【解析】本题主要考查按位求反运算和C语言正负数的表示。“0”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为ll000,第一个1代表负数,值为8。
15.B。【解析】在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项B 中表达式E>0||E<0是一个逻辑表达式。
1 6.C。【解析】在m数组中赋值的是字符串,其长度为7,末尾有结束符ˊ\0ˊ,故字节数为8,而n数组中赋的是字符,其长度为7,故C选项正确。
17.B。【解析】本题考查if…else语句。if条件为真则执行后面的表达武,如果if为假则执行else语句。
18.D。【解析】{int k=-3;if(k<=0)printf(″****\n″)else wind(″&&&&\n″);)中printf(″****\n″)缺少分号,因此会报编译错误。
19.C。【解析】当执行fun函数时,因为参数传递时是地址传递,因此形参值的改变会影响实参中的数,在执行fun函数时先输出1 2,接着把*x赋3,*y赋4,此时带回主函数中,输出的值为3 4。
20.D。【解析】因为字符数组s[];中的数组名S表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。21.B。【解析】水平制表符中,'\t'表示的是横向跳若干格;选项B中,ˊ\039 ˊ错误,ˊ\039ˊ是八进制形式表的字符,最大数为7,但其中出现ˊ9 ˊ,ˊ,ˊ是字符逗号;选项D中,ˊ\n ˊ表示的是换行。
22.B。【解析】第一个for循环的作用是让P指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。
23.D。【解析】当k=1时,循环成立,输出w[1]的数组即EFGH,接着执行k++后k为2;当k=2时,循环成立,输出w[2]的数组即IJKL,接着执行k++后,k为3;当k=3时,循环不成立,退出。
24.C。【解析】因为a=2,b=-1,f(a)
25.B。【解析】在定义*p=&r时,是表示r的地址赋给了P所指的存储单元,因此选项B正确。
26.B。【解析】(x&1)&&(z<ˊ2 ˊ)=(0.5&1)&&(ˊaˊ<ˊzˊ)=1 &&1=1,故选择B选项。
27.D。【解析】要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可。D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=60+5=65,此时i 4跳出,循环结束。
28.B。【解析】二维数组的元素可以看成是按矩阵形式存放的,数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它静面还有j列,有j
个元素,所以共有i*m+j个元素。
29.B。【解析】首先分两块,逗号前面的是第一块,先执行,逗号后面的是第二块,后执行;两个块中,括号里的先执行,a-=a-5;//执行前’a=0,执行后,a-=-5,a=5;c=a;//c=5;a=b;//a=b=0;b+3;//执行,但是不修改任何数字。所以,最后结果是:0,0,5。B选项符合结果。
30.A。【解析】本题主要考查结构体数组的使用。x[i].num为结构体xl-i]中的hum成员,x[i].num[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:第1次循环,i=1,输出x[i].num,x[1].name[2]的值;第2次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N;第3次循环,i=3,输出x[3].num,x[3].name[2]的值,即4A;第4次循环,i=4,输出x[4].num,x[4].name[2]的值,即5U。
31.A。【解析】p=a,相当于重新把a中的内容赋给a本身,所以a[2]=6。
32.A。【解析】函数fun的作用是将指针a指向指针b的内容,然后将该内容加1。执行语句“fun(p1,p2);”后,pl和p2指向的地址并未改变,只是将p2指向的存储单元的值增加1。所以,答案是A。
33.A。【解析】函数int fun(int n)的功能是求1+2+…+n的值并返回。所以执行程序时,给变量x输入10后,执行语句“x=fun(x);”,x的值将变为1到10中10个整数的累加和,即55。
34.D。【解析】因为首先k-2,然后你进行一次循环后,k自增两次,变成4,所以这时候s又成l了。然后当k-4的时候,s=1,j=4,然后执行内层循环,s=1+4,然后j自增等于5,s=5+5,然后j再自增为6,跳出内层循环。k自增两次后等于6,不成立,跳出外层循环。然后输出s的值,即为10。因此正确选项为D。
35.B。【解析】本题考查switch,case语句,当k-0时,循环体成立,执行switch后表达式的值为ˊ1 ˊ,执行caseˊ1ˊ,i的值为0,因为没有break语句,继续执行其后的语句,到最后一个语句时i的值为3,此时v[i]++,v[3]=1,接着执行k++后,k的值为1,当k=1时,循环成立。执行switch后的表达式的值为ˊ2ˊ,执行caseˊ2ˊ,i的值为1,因为没有break语句,继续执行其后的语句,到最后一个语句时,i的值为3,此时v[i]++,v[3]=2,接着执行k++后,k的值为2,依次下去,case ˊ4 ˊ也会执行,最后i的值一定为3,到v[3]=8时循环结束,而v[o]~v[2]的值一直没有变化,故选择B选项。
36.C。【解析】x的值为十进制数102,而y的值为八进制数012,根据题意将y用十进制表示为10%md,in为指定输出数据的宽度,若位数小于m则左端补以空格,若位数大于in则按实际输出,所以答案是C。
37.B。【解析】while语句执行如下:
当z=3,x=0时,表达式z-->0&&++x<5为真,z的值变为2,x的值变为1,执行语句“y=y-1;”,y的值变为4;
当z=2,x=l时,表达式z-->0 &&++x<5为真,z的值变为1,x的值变为2,执行语句“y=y-1;”y的值变为3;当z=1,x=2时,表达式z-->0&&++x<5为真,z的值变为0。x的值变为3,执行语句“y=y-1;”,y的值变为2;
当z=0,x=3时,表达式z-->0为假,表达式(z-->0&&++x<5)为假,z的值为-1,不进行++x<5的判断,不执行语句y=y-1;;
所以x的值为3,y的值为2,z的值为-1。答案为B。
38.C。【解析】y的初始值为~1,当x不等于0时,给y赋值为1,也就是这时x>0和x>0都为1,然后如果x>0时y的值又赋值为1,注意后面的else语句是跟if(x>0)y=1相匹配,就是说除了x>0 y=1之外,其他的情况y都为0。
39.B。【解析】通过观察可知图形共4行,主函数中通过一个for循环四次,输出4行。第一行输出3个空格和1个“*”,第2行输出2个空格和3个“*”,第3行输出3个空格和5个“*”,第四行输出7个“*”,主函数中通过第二个循环控制每行的输出空格数,第三个for循环控制输出的“*”的个数,总结规律:每行输出的“*”的个数,总比前一行的多2个,且第一行的个数为1,可以断定每行输出的“*”的个数组成了一个公差为2的等差数列,所以每行输出“*”的个数即该等差数列的通项,故该空格处应该填写2*i-1。
40.A。【解析】位置指针当前值函数ftell()的基本调用格式为ftell(fp)。
ftell函数的功能:得到fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。
【全国计算机二级考试《C语言》冲刺模拟题一答案】相关文章:
2015年全国计算机二级考试《C语言》冲刺模拟题(二)答案09-26
2015年全国计算机二级考试《C语言》冲刺模拟题(三)答案07-22
2015年全国计算机二级考试《C语言》冲刺模拟题(一)07-18
2015年全国计算机二级考试《C语言》冲刺模拟题(三)08-01
2015年全国计算机二级考试《C语言》冲刺模拟题(五)06-21
2015年全国计算机二级考试《C语言》冲刺模拟题(七)08-15
2015年全国计算机二级考试《C语言》冲刺模拟题(八)09-25