试题

全国计算机二级考试《C语言》冲刺模拟题二答案

时间:2024-12-12 21:14:44 试题 我要投稿

2015年全国计算机二级考试《C语言》冲刺模拟题(二)答案

  1.D。【解析】算法的空间复杂度是指执行这个算法所需的存储空fq。算法所占用的存储空间包括算法程序所占用的空fq、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。

2015年全国计算机二级考试《C语言》冲刺模拟题(二)答案

  2.C。【解析】结构化程序设计的原则和方法之一是限制使用GOTO语句,但不是绝对不允许使用。其他三项为结构化程序设计的原则。

  3.A。【解析】%既然求余数,运算对象必须是整数。

  4.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。一种数据结构可以根据需要采用不同的存储结构,存储结构有顺序和链式两种。不同的存储结构,其处理的效率不同。

  5.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。因此,后序遍历二叉树的过程也是一个递归过程。

  6.C。【解析】面向对象的设计方法的基本原理是使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念但不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

  7.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

  8.D。【解析】选项A,可以用for循环代替;选项B,不满足条件时即条件的逻辑值为假(0)时退出,break也可以;选项C,while(条件),条件为真时进行循环,为假(0)时退出。

  9.A。【解析】软件危机的表现包括:①对软件开发的进度和费用估计不准确;②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。

  10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外本来就是不可见的、隐蔽的。

  11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二一一软件平台(软件)。其中DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选项C为正确答案。

  12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用作变量名和函数名。C选项do是C语言的一个关键字。D选项标识符不符合只能以字母或下划线开始的要求。

  13.D。【解析】||和&&的优先级高于+和-,||和&&的优先级相等,且是左结合的,就是从左边开始结合到右边。按照这个规则,正确选项为D。

  14.C。【解析】本题考查printf函数的格式。第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有2个%说明,第1个%后面的字符要原样输出。“%x”和“%o”分别表示以十六进制和八进制无符合型输出整型数据(不带前导0x或0)

  15.A。【解析】通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i][j]);⑤(&a[0][0]4-3*i+j)。故A正确。

  16.D。【解析】在x=2,y=x4-3/2中,3/2=1,2 4-1=3,因此表达式的值为3,因为x、y为double型变量,故选择D选项。

  17.C。【解析】选项A、B的空间不够;选项D中字符串存储要有结束符ˊ\0ˊ,且要占用一个空间,printf用来输出字符,不能输入字符串。

  18.D。【解析】本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使变量的值加1,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加1。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1:1与任何数都为进行或(1 I)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以j++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

  19.B。【解析】scanf(''%d,%d'',&a,&b);//a=3,b=4s=a;//s=3if(s=b)//此处先将b(b=4赋给s,则s=4 s=b返回值为4s*=s://s=s*s=16因此输出结果为16。正确答案为B。

  20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选项。21.C。【解析】即输出x[0][2]x[l][1]x[2][0]分别为3 5 7。

  22.A。【解析】在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

  23.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。

  24.A。【解析】当x为1时,执行case 1,a自加等于l,因为case l后没有break,接着执行CaSe 2,此时a的值为2,b自加为1,故选择A选项。

  25.B。【解析】SSEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。

  26.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。

  27.C。

  28.C。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+一*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素,所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。


  29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为

  fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)

  =10+9++8+7+fun(6)=10+9++8+7+6+fun(5)

  =10+9++8+7+6+5+fun(4)

  =l0+9++8+7+6+5+4+fun(3)

  =10+9++8+7+6+5+4+3+fun(2)

  =10+9++8+7+6+5+4+3+2+fun(1)

  =10+9++8+7+6+5+4+3+2+l+fun(0)

  =10+9++8+7+6+5+4+3+2+1=55

  30.C。【解析】在函数int fun(int x[],int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数intfun(int x[],int n)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

  31.D。【解析】执行第一次for循环时,用表达式p[i][j]!= ˊ\0ˊ来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(P[i][j]- ˊ\0ˊ)除2的余数不为0时,即字符串所有奇数执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

  32.B。【解析】从题目中可知,ˊ\O ˊ、ˊ\t ˊ、'ˊ\\ˊ分别为一个字符,而sizeof是求字节个数的函数,其中包括ˊ\0 ˊ占的字节,strlen函数是求数组长度的函数,其以ˊ\0ˊ结束,因此strlen的值为5,sizeof的值为20。

  33.C。【解析】数组的下标是从0开始的,选项A中越界,行下标和列下标都不能越界;选项B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的是其元素的值,并不是地址。

  34.D。【解析】由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next=r->next,因为r结点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

  35.D。【解析】

  36.B。【解析】指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中“P+6”指的是将指针向后移动了6个存储单元,即指向uE63,存放的是b[6]的地址。

  37.D。【解析】由n!的数字定义可知n!=n*(n-1)*(n 2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!=0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,…,所以选项C不正确。在选项D中,f的初值为1,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

  38.A。【解析】strcpy实现的功能是复制,该操作把are复制到a中,a[o][3]= ˊ&ˊ,且strcpy(a[1],″you″)把you复制到a[1]中,故输出a为“are&you”。

  39.A。【解析】本题主要考查按位与运算,x=011050的二进制形式为00010010000101000,01252的二进制形式为0000001010101010,两者相与得0000001000101000。

  40.D。【解析】(x*1000+0.5)--x移动3位小数,加0.5,也就是小数第4位加5,若这位大于等于5,则进1到个位。5.16894*1000-)5168.94+0.5->5169.44接下来:(int)(x*1000+0.5)取整变51 69,5169/(double)1000)-)5.169。所以printf(″%f\n″,5.169)结果是5.16900。因此正确答案为D。

【全国计算机二级考试《C语言》冲刺模拟题二答案】相关文章:

2015年全国计算机二级考试《C语言》冲刺模拟题(一)答案09-12

2015年全国计算机二级考试《C语言》冲刺模拟题(三)答案07-22

2015年全国计算机二级考试《C语言》冲刺模拟题(二)10-31

2015年全国计算机二级考试《C语言》冲刺模拟题(三)08-01

2015年全国计算机二级考试《C语言》冲刺模拟题(五)06-21

2015年全国计算机二级考试《C语言》冲刺模拟题(七)08-15

2015年全国计算机二级考试《C语言》冲刺模拟题(八)09-25

2015年全国计算机二级考试《C语言》冲刺模拟题(四)09-19

2015年全国计算机二级考试《C语言》冲刺模拟题(六)10-24