好文档 - 专业文书写作范文服务资料分享网站

全国计算机等级考试二级C语言真题题库2+2016年3月

天下 分享 时间: 加入收藏 我要投稿 点赞

全国计算机等级考试二级C语言真题题库2 2016年3月

(总分:100.00,做题时间:120分钟)

一、选择题(每小题1分,共40分)(总题数:40,分数:40.00)

1.设有以下程序段: struct book { float price; char language; char title[20]; } rec,*ptr; ptr = &rec; 要求输入字符串给结构体变量rec的title成员,错误的输入语句是( )。 (分数:1.00)

A.seanf(”%s”Ptrtitle); √ B.scanf(”%s”,rec.title); C.scanf(’’%s”,(*pu).title); D.scanf(”%s”,ptr->title);

解析:符号“_>”是指针特用的,符号“.”用于指定元素的成员。ptr是指针,只能用符号“一>”,因此选项A错误。+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。选项B,Fee.title代表数组title,同理选项C正确。答案为A选项。 2.有以下程序: (分数:1.00) A.AbCdEFg B.ABCDEFG C.BCDEFGH √ D.bedefgh

解析:循环的作用是将输入的字符串转化为大写,9etchar()每次读入一个字符,putchar()每次输出一个字符,当遇到#字符结束。putchar(++C),表示将字符变量C加1后输出。因此,输入aBcDefG##,得到的结果是BCDEFGH。故答案为c选项。

3.以下与存储类别有关的四组说明符中,全部属于静态类的一组是( )。 (分数:1.00)

A.extem和static √ B.auto和static C.register和static D.register和excerl

解析:auto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字通常会被省,因为所有的变量默认就是aut0的。 register定义的变量告诉编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当static用来修饰全局变量时,它就改变了全局变量的作用域。extern限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extem外部声明,该变量在其他地方有被定义过。因此,答案为A选项。

4.设有定义:int x,Y,z;,且各变量已赋正整数值,则以下能正确表示代数式( )。 (分数:1.00)

A.…1.…0/x。/y,/z √ B.1/x * Y * z C.1/(x * Y * z) D.1/x/y/(double)z

的C语言表达式是

执行时输入:aBeDefG##,则输出结果是( )。

解析:代数表达式1/(X·Y·z)是小数,转为cf语言的表达式必须是小数。A选项由于l.0为浮点数,计算结1果自动转换为浮点数,故A选项正确。选项B,C,D的表达式均为0。答案为A选项。 5.若有定义:double x;,则表达式IX=0,x+10,x+十的值是( )。 (分数:1.00) A.11.0 B.10.0 C.0.0 √ D.1.0

解析:c语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运笑结束后才进行右边的子表达式的运算。也麓是辽,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k++表示先运算,后自■:曹置自增运算:++k表示先自加,后运算。因此,表达式l;O,I+10。x++的计算过程为首先赋值x=0,然后将x加l0,包是并不对x进行赋值,最后计算x++,并,根据后置自增运算的计算结果,即为x=0.0。故答案为C选项。 6.有以下程序: (分数:1.00) A.5,

B.0,0,0,0,0, C.0,1,2,3,4, √ D.0,1,

解析:”anf(”%c”,&c),输入的字符,题目中输入了0,字符0,对应于ASCIl码为48,因此for循环中,i的范围从0~5,均小于48,if条件不成立,直接执行下一条语句,执行语句prinff,因此得到的结果是0,1,2,3,4。故答案为C选项。 7.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。 语句是( )。 (分数:1.00) A.sum+=1/i; √ B.while(i<50); C.sum.=1.0; D.i++;

解析:选项A中,8111111+=1/i;i为整型,因此l/i是整型类型,当1/i有小数时,小数部分会被截断。因此l/i结果始终为0,导致结果出错,应改为8111m+=1.0/i。因此答案为A选项。 8.下列处理中与队列有关的是( )。 (分数:1.00)

A.操作系统中的作业调度 √ B.执行程序中的过程调用 C.执行程序中的循环控制 D.---X树的遍历

解析:队列是指允许在一端进行插入,而在另一端进行删除的线性表。由于最先进入队列的元素将最先出队,所以队列具有“先进先出”的特性,体现了“先来先服务”的原则。作业调度是指根据一定信息,按照一定的算法,从外存的后备队列中选取某些作业调入内存分配资源并将新创建的进程插入就绪队列的过程。执行程序中的过程调用一般指函数调用,需要调用时候转入被调用函数地址执行程序,与队列无关。执行程序中的循环控制是指算法的基本控制结构,包括对循环条件的判定与执行循环体,与队列无关。二叉树是一个有限的结点集合,二叉树的遍历是指不重复地访问二叉树中的所有结点,与队列无关。故本题选择A选项。

9.非空循环链表所表示的数据结构( )。 (分数:1.00)

程序运行后,不能得到正确结果,出现问题的

执行时输入:0后,则输出结果是( )。

A.有根结点也有叶子结点 √ B.没有根结点但有叶子结点 C.有根结点但没有叶子结点 D.没有根结点也没有叶子结点

解析:在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由NULL改为指向表头结点,这样的链表称为循环链表。循环链表是线性结构,有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。循环链表表头结点为根结点,链表的最后一个结点为叶子节点,虽然它含有一个指向表头结点的指针,但是表头结点并不是它的一个后件。故选择A选项。 10.将c语言的整数设为整数类1,则下面属于类I实例的是( )。 (分数:1.00) A.-103 √ B.10E3 C.10.3 D.“0103”

解析:整数类实例包括:十进制常量用0—9表示,不能以0开头;/k进制常量用0-7表示,必须用0开头;十六进制常量用0—9和A—F(a—f)表示,必须以0x或OX开头。本题中B选项是科学计数法表示的浮点数实例,c选项是浮点数实例,D选项是字符串实例。故选A选项。 11.有以下程序: (分数:1.00) A.7 B.0 C.3 √ D.8

解析:题意统计字符s中阿拉伯数字的个数。char s[]=’012xy\08s34f4w2’;元素是字符型。~0=48;而’\0’=0;因此可以计算出’、0’之前阿拉伯数字的个数,由字符串s可知,有3个阿拉伯数字。答案为C选项。 12.有以下程序: (分数:1.00)

A.6.5.4.3.3,2,1, √ B.1,2,3,4,5,6, C.1,1,1,1,1,1 D.6,6,6,6,6,6,

解析:fopen(”data.chit“,”w+”);W+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件存在则建立该文件。rewind(fp);使文件fp的I位置指针指向文件开始。fprintf(fp,”%d\n”,a[5一i]);将8[i]输出到fp指向的文件中。fseanf(fp,”%d”,&k);将fp读I入到变量k中,第一个for循环将数组中元素倒着输入到fp指l向的文件中,rewind()则指向文件开始,因此打印是数组a的I倒叙。故打印为6,5,4,3,2,1。答案为A选项。 13.软件开发中需求分析的主要任务是( )。 (分数:1.00)

A.定义和描述目标系统“做什么” √ B.获取需求 C.给出软件解决方案 D.需求评审

解析:需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求分析的任务是发现需求、求精、建模和定义需求的过程,是描述“做什么”的软件开发阶段。故选A选项。

程序运行后的输出结果是( )。 程序运行后的输出结果是( )。

14.若有定义:char c;double d;程序运行时输入:1 2,能把字符1输入给变量c、数值2输入给变量d的输入语句是( )。 (分数:1.00)

A.scanf(\ B.scanf(\√ C.scanf(\ D.scanf(\

解析:%lf是针对double类型,如果仅用%f,输入的数据可能没有被完全接收,数据的精度可能不足,选项C,D错误。%f主要针对float类型的变量的输入。%d主要针对整型数据的输入,%c主要针对字符类型的数据的输入,选项A错误。故答案为B选项。 15.有以下程序: (分数:1.00) A.Beijing! √ B.toBeijing]

C.WelcomeyoutoBeijingI D.youtoBeijingI

解析:for循环的作用是每次遇到空格,将空格后面的移动到数组的最前面。因此数组最后的状态是“Bei-jing!、Og!\0ng!、neijing!、O”,但是pfinff(“%s”)打印遇到、0自动结束。因此,打印Beijing!。故答案为A选项。 16.有以下程序: (分数:1.00) A.有运行错误 √ B.输出11.10 C.输出12.10 D.输出21.10

解析:calloe(n,sizeof(type))在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。s在函数fun()申请了内存空间,但是在调用fun()函数后会释放掉,因此,最后q指向NULL,因此运行是打印出错。答案为A选项。 17.有以下程序 (分数:1.00) A.15 B.12 √ C.16 D.20

解析:#define命令是C语言的宏定义命令,标识符一般使用大写,为了区分其他标识符,将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后置自增运算:k++表示先运算,后自加。意思是遇到k++了,先把当前的k的值拿来参加运算,后面再去管它的自加。SUB(a++,b++)一(a++)t(b++)—d}4。故答案为B选项。

18.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是( )。 (分数:1.00)

A.fget(f0,ch); √ B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch); D.fwrite(&ch,sizeof(ch),1,fp);

解析:函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。

程序运行后的输出结果是( )。 程序运行后的结果是( )。 程序运行后的输出结果是( )。

19.函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。 (分数:1.00) A.fread B.fscanf C.fgets D.getc √

解析:fgets读取一个长度为(n-1)的字符串,fread按照指定的长度读取数据项,对应2进制的打开方式,fscanf按指定格式读,对应文本打开方式,getc从指定的文件读 入一个字符,即从fp所指向的文件中读入一个字符赋给ch。因此答案为D选项。

20.有以下程序: #include int add(int a,int b){return(a+b);} main() { int k,(*f)().a=5,b=10; f=add; … } 则以下函数调用语句错误的是( )。 (分数:1.00) A.k=f(a,B.; B.k=add(a,B.; C.k=(*f)(a,B.; D.k={f(a,B.; √

解析:s与()的优先级,()的优先级高于*,因为(+f)()定义函数指针f。f指向函数的指针。f=add,将函数8dd()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用t取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。答案为D选项。

21.某循环队列的存储空间为Q(4:m),初始状态为front=lea/\。现经过一系列的人队操作和退队操作后,front=m,r6ar=m一1,则该循环队列中的元素个数为( )。 (分数:1.00) A.m-1 √ B.m C.1 D.0

解析:循环队列长度为rl3,由初始状态为锄t=re“=m,可知此时循环队列为空。入队运算时,首先队尾指针进1(即rear+1),然后在re”指针指向的位置插入新元素。特别的,当队尾指针瑚r=nl+1时,置rear=1。退队运算时,徘头指针进1(即front+1),然后删除f∞ont指针指向的位置上的元素,当排头指针front=ITI+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。如果l_efl.r—front>0,则队列中的元素个数为rear—front个;如果reⅡ一front<0,则队列中的元素个数为rear—front+m。该题中m一1

解析:若有n个元素的序列,将元素接腰序组成一棵完全二叉树,当且仅当满足下列条件时称为堆。大根堆是指所有结点的值大于或等于左右子结点的值;小掇堆是指所有结点的值小于或等于左右子结点的值。在调整建堆的过程中,总是将根结点值与左、右子树的根结点进行比较,若不满足堆的条件,则将左、右子树根结点值中的大者与根结点值进行交换。堆排序最坏情况需要0(nl092n)次比较,所以时间复杂度是0(nl092n),B选项正确。

23.若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是( )。 (分数:1.00) A.前序序列 B.中序序列 √ C.后序序列

全国计算机等级考试二级C语言真题题库2+2016年3月

全国计算机等级考试二级C语言真题题库22016年3月(总分:100.00,做题时间:120分钟)一、选择题(每小题1分,共40分)(总题数:40,分数:40.00)1.设有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&re
推荐度:
点击下载文档文档为doc格式
5b0yv46thb7s7tu43p391qw0b8cvba00t7w
领取福利

微信扫码领取福利

微信扫码分享