



已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试二级C语言真题题库2 2016年3月(总分100,做题时间120分钟)一、选择题(每小题1分,共40分)1. 设有以下程序段:struct book float price;char language;char title20; rec,*ptr;ptr = &rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是( )。A seanf(”s”Ptrtitle);B scanf(”s”,rectitle);C scanf(s”,(*pu)title);D scanf(”s”,ptr-title);答案:A符号“_”是指针特用的,符号“”用于指定元素的成员。ptr是指针,只能用符号“一”,因此选项A错误。+P是指定元素(Fee)可以使用“”运算,因此选项D正确。选项B,Feetitle代表数组title,同理选项C正确。答案为A选项。2. 有以下程序:执行时输入:aBeDefG#,则输出结果是( )。A AbCdEFgB ABCDEFGC BCDEFGHD bedefgh答案:C循环的作用是将输入的字符串转化为大写,9etchar()每次读入一个字符,putchar()每次输出一个字符,当遇到#字符结束。putchar(+C),表示将字符变量C加1后输出。因此,输入aBcDefG#,得到的结果是BCDEFGH。故答案为c选项。3. 以下与存储类别有关的四组说明符中,全部属于静态类的一组是( )。A extem和staticB auto和staticC register和staticD register和excerl答案:Aauto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字通常会被省,因为所有的变量默认就是aut0的。register定义的变量告诉编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当static用来修饰全局变量时,它就改变了全局变量的作用域。extern限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extem外部声明,该变量在其他地方有被定义过。因此,答案为A选项。4. 设有定义:int x,Y,z;,且各变量已赋正整数值,则以下能正确表示代数式的C语言表达式是( )。A 10x。y,zB 1x * Y * zC 1(x * Y * z)D 1xy(double)z答案:A代数表达式1(XYz)是小数,转为cf语言的表达式必须是小数。A选项由于l0为浮点数,计算结1果自动转换为浮点数,故A选项正确。选项B,C,D的表达式均为0。答案为A选项。5. 若有定义:double x;,则表达式IX=0,x+10,x+十的值是( )。A 110B 100C 00D 10答案:Cc语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运笑结束后才进行右边的子表达式的运算。也麓是辽,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k+表示先运算,后自:曹置自增运算:+k表示先自加,后运算。因此,表达式l;O,I+10。x+的计算过程为首先赋值x=0,然后将x加l0,包是并不对x进行赋值,最后计算x+,并,根据后置自增运算的计算结果,即为x=00。故答案为C选项。6. 有以下程序:执行时输入:0后,则输出结果是( )。A 5,B 0,0,0,0,0,C 0,1,2,3,4,D 0,1,答案:C”anf(”c”,c),输入的字符,题目中输入了0,字符0,对应于ASCIl码为48,因此for循环中,i的范围从05,均小于48,if条件不成立,直接执行下一条语句,执行语句prinff,因此得到的结果是0,1,2,3,4。故答案为C选项。7. 以下程序拟实现计算sum=1+12+13+150。程序运行后,不能得到正确结果,出现问题的语句是( )。A sum+=1i;B while(i50);C sum=10;D i+;答案:A选项A中,8111111+=1i;i为整型,因此li是整型类型,当1i有小数时,小数部分会被截断。因此li结果始终为0,导致结果出错,应改为8111m+=10i。因此答案为A选项。8. 下列处理中与队列有关的是( )。A 操作系统中的作业调度B 执行程序中的过程调用C 执行程序中的循环控制D -X树的遍历答案:A队列是指允许在一端进行插入,而在另一端进行删除的线性表。由于最先进入队列的元素将最先出队,所以队列具有“先进先出”的特性,体现了“先来先服务”的原则。作业调度是指根据一定信息,按照一定的算法,从外存的后备队列中选取某些作业调入内存分配资源并将新创建的进程插入就绪队列的过程。执行程序中的过程调用一般指函数调用,需要调用时候转入被调用函数地址执行程序,与队列无关。执行程序中的循环控制是指算法的基本控制结构,包括对循环条件的判定与执行循环体,与队列无关。二叉树是一个有限的结点集合,二叉树的遍历是指不重复地访问二叉树中的所有结点,与队列无关。故本题选择A选项。9. 非空循环链表所表示的数据结构( )。A 有根结点也有叶子结点B 没有根结点但有叶子结点C 有根结点但没有叶子结点D 没有根结点也没有叶子结点答案:A在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由NULL改为指向表头结点,这样的链表称为循环链表。循环链表是线性结构,有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。循环链表表头结点为根结点,链表的最后一个结点为叶子节点,虽然它含有一个指向表头结点的指针,但是表头结点并不是它的一个后件。故选择A选项。10. 将c语言的整数设为整数类1,则下面属于类I实例的是( )。A -103B 10E3C 103D “0103”答案:A整数类实例包括:十进制常量用09表示,不能以0开头;k进制常量用0-7表示,必须用0开头;十六进制常量用09和AF(af)表示,必须以0x或OX开头。本题中B选项是科学计数法表示的浮点数实例,c选项是浮点数实例,D选项是字符串实例。故选A选项。11. 有以下程序:程序运行后的输出结果是( )。A 7B 0C 3D 8答案:C题意统计字符s中阿拉伯数字的个数。char s=012xy08s34f4w2;元素是字符型。0=48;而0=0;因此可以计算出、0之前阿拉伯数字的个数,由字符串s可知,有3个阿拉伯数字。答案为C选项。12. 有以下程序:程序运行后的输出结果是( )。A 6.5.4.3.3,2,1,B 1,2,3,4,5,6,C 1,1,1,1,1,1D 6,6,6,6,6,6,答案:Afopen(”datachit“,”w+”);W+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件存在则建立该文件。rewind(fp);使文件fp的I位置指针指向文件开始。fprintf(fp,”dn”,a5一i);将8i输出到fp指向的文件中。fseanf(fp,”d”,&k);将fp读I入到变量k中,第一个for循环将数组中元素倒着输入到fp指l向的文件中,rewind()则指向文件开始,因此打印是数组a的I倒叙。故打印为6,5,4,3,2,1。答案为A选项。13. 软件开发中需求分析的主要任务是( )。A 定义和描述目标系统“做什么”B 获取需求C 给出软件解决方案D 需求评审答案:A需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求分析的任务是发现需求、求精、建模和定义需求的过程,是描述“做什么”的软件开发阶段。故选A选项。14. 若有定义:char c;double d;程序运行时输入:1 2,能把字符1输入给变量c、数值2输入给变量d的输入语句是( )。A scanf(%d%lf,&c,&d);B scanf(%c%lf,&c,&d);C scanf(%c%f,&c,&d);D scanf(%d%f,&c,&d);答案:Blf是针对double类型,如果仅用f,输入的数据可能没有被完全接收,数据的精度可能不足,选项C,D错误。f主要针对float类型的变量的输入。d主要针对整型数据的输入,c主要针对字符类型的数据的输入,选项A错误。故答案为B选项。15. 有以下程序:程序运行后的输出结果是( )。A Beijing!B toBeijingC WelcomeyoutoBeijingID youtoBeijingI答案:Afor循环的作用是每次遇到空格,将空格后面的移动到数组的最前面。因此数组最后的状态是“Bei-jing!、Og!0ng!、neijing!、O”,但是pfinff(“s”)打印遇到、0自动结束。因此,打印Beijing!。故答案为A选项。16. 有以下程序:程序运行后的结果是( )。A 有运行错误B 输出1110C 输出1210D 输出2110答案:Acalloe(n,sizeof(type)在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。s在函数fun()申请了内存空间,但是在调用fun()函数后会释放掉,因此,最后q指向NULL,因此运行是打印出错。答案为A选项。17. 有以下程序程序运行后的输出结果是( )。A 15B 12C 16D 20答案:B#define命令是C语言的宏定义命令,标识符一般使用大写,为了区分其他标识符,将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后置自增运算:k+表示先运算,后自加。意思是遇到k+了,先把当前的k的值拿来参加运算,后面再去管它的自加。SUB(a+,b+)一(a+)t(b+)d4。故答案为B选项。18. 若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是( )。A fget(f0,ch);B foutc(ch,fo);C fprinff(fp,”c”,ch);D fwrite(&ch,sizeof(ch),1,fp);答案:A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。19. 函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。A freadB fscanfC fgetsD getc答案:Dfgets读取一个长度为(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;则以下函数调用语句错误的是( )。A k=f(a,B.;B k=add(a,B.;C k=(*f)(a,B.;D k=f(a,B.;答案:Ds与()的优先级,()的优先级高于*,因为(+f)()定义函数指针f。f指向函数的指针。f=add,将函数8dd()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用t取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。答案为D选项。21. 某循环队列的存储空间为Q(4:m),初始状态为front=lea=m。现经过一系列的人队操作和退队操作后,front=m,r6ar=m一1,则该循环队列中的元素个数为( )。A m-1B mC 1D 0答案:A循环队列长度为rl3,由初始状态为锄t=re“=m,可知此时循环队列为空。入队运算时,首先队尾指针进1(即rear+1),然后在re”指针指向的位置插入新元素。特别的,当队尾指针瑚r=nl+1时,置rear=1。退队运算时,徘头指针进1(即front+1),然后删除font指针指向的位置上的元素,当排头指针front=ITI+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。如果l_eflrfront0,则队列中的元素个数为rearfront个;如果re一front0,则队列中的元素个数为rearfront+m。该题中m一1ITl,即earfront60”,故完整表达式为叮rs#(orc#=2AG一60(SC)。本题选A选项。26. 以下程序段中的变量已正确定义。for(i=0;i4;i+,i+)for(k=1;k3;k+);prinff(”*”);该程序段的输出结果是( )。A *B *C *D *答案:Ac语言约定分号为一条语句的结束。因此for(i=0;i4;i+,i+)for(k=1;kY指向82,但现在P-Y=s,因此s2=sO,此时8=10,20,10,而P在s1位置,因此P_x为2,P=P_Y,P指向s2,因此P_x=1,故打印结果为2,1。答案为B选项。29. 以下定义数组的语句中错误的是( )。A int num3=1,2,3,4,5,6;B int nUITI24=1,2,3,4,5,6;C int num=1,2,3,4,5,6;D int num4=1,2,3,4,5,6;答案:B选项B中,int Irlllm24=1,2,3,4,5,6;定义数组是2行4列,但是初始化的结构是3行2列,因此初始化错误。故答案为B选项。30. 设有定义:doublex=516894;,则语句prinff(”Ifn”,(int)(x$1000+05)1000);的输出结果是( )。A 516900B 516800C 000000D 输出格式说明符与输出项不匹配,产生错误信息答案:A(x1000+05)表示x移动3位小数,细05,也就是小数第4位加5,若这位大于等于5,则进1到个整。因为“5168941000 516894+05 7516944”所以(int)(x$1000+05)强制转换为整型结果为5169。(516910000)5169,由于10000结果自动转换为浮点数所以prinff(“lfn”,5169)结果是516900。故答案为A选项。31. 下列叙述中正确的是( )。A 数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能B 数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件C 数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少D 数据库系统独立性较差,而文件系统独立性较好答案:A数据管理技术的发展经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。三者各自的特点如下表所示。数据库系统可以解决数据冗余和数据独立性问题,面文件系统不能。数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少。数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。故本瑟答案为A选项。32. 有以下程序:程序运行后的输出结果是( )。A -2,3,B -1,-2,C -2,-3,D -2,1答案:Afun()函数使用了静态变量,静态变量只在声明时初始化一次。首先实参的数值是-12,if判断后输出负号,并将n=12,计算k+=n10一k+=22,因此输出2,后将数值除以10,结果为1,递归调用fun()函数,第二次调用fun(),此时n=1,k=2,计算k+=n10-k+=1-*3,因此打印3。故最后打印结果为一2,3,。故答案为A选项。33. 有以下程序:程序运行后的输出结果是( )。A -263B 2C 0D -26答案:Disspaee(c)检查参数c是否为空格字符。若参数e为空格字符,则返回TRUE,否则返回NULL(0)。Isdi#t(c)函数检查参数c是否为阿拉伯数字0到9。返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(O)。fLm()函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。遇到了非数字的字符跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回-26,因此打印的结果是一26。故答案为D选项。34. 以下是正确C语言实型常量的是( )。A e-1B e-1C -1eD 1e-1答案:D所谓常量是指在程序运行过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。实型常量有两种表示形式:十进制小数形式、指数形式。指数形式中e后面的指数必须是整数,阶码标志e之前需要有数字,由此可知选项A,B,C错误。答案为D选项35. 若想定义int型变量a,b,c,d并都赋值为1,以下写法中错误的是( )。A int a=b=c=d=1;B int a=1,b=1,c=1,d=1;C int a,b,c,d;a=b=c=d=1;D int a,b,c,d=1;a=b=c=d;答案:AC语言赋值运算符的结合方向是从右向左,使用的变量必须已经定义了,int a=b=c=d=1;本条语句首先执行赋值运算d=1,由于b并未定义,故编译不通过,提示没有定义标识符bc、d,故A选项错误。答案为A选项。36. 有以下程序:程序运行后的输出结果是( )。A 10B 16C 6D 12答案:D第一个for循环作用是对数组8赋初值,从09,第二个缸循环是计算数组前4项的ai+i的和。0+0,1+1,2+2,3+3,经计算的结果为l2,因此答案为D选项。37. 有以下程序:程序运行后的输出结果是( )。A B,C,D,E,B A,B,C,D,C C,D,E,F,D B,D,F,H,答案:A函数ehmlge()的作用将从数组尾部将数组内的元素值加1。数组的初始值为ABCD,因此经change()后,得到的值为BCDE。故答案为A选项。38. 有以下程序:程序运行后的输出结果是( )。A Qian,f,350,Sun,f,350B Qiamf,350,Qian,f,350C Qian,f,350,Sun,m,370D Zha0,m,290,Sun,m,370答案:Ac语言函数参数传递大致分为:1、值传递过程中。被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中nanle是数组,做实参传递,会退化为指针,因此调用f(),bnanle发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。39. 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )A 学生成绩管理系统B ERP系统C 办公自动化系统D UNIX系统答案:D系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。选项D属于系统软件。选项A、B、C属于应用软件。故选D选项。40. 某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m一1,real=m,则该循环队列中的元素个数为( )。A m-1B 1C mD 0答案:B循环队列长度为m,由初始状态为front=real=ITl可知此时循环队列为空。入队运算时,首先队尾指针(rear)进1(即rear+I),然后在lear指针指向的位置插入新元素。特别的,当队尾指针lear=m+1时,置lear=1。退队运算时,排头指针(front)进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,则该循环队列中的元素个数为m一(m一1)=1。故选择B选项。二、程序填空题(共18分)1. 函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。其中函数isleap用来判别某一年是否为闰年。例如,若输入:200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水龙头漏水修理课件
- 建筑工程项目临时设施建设方案
- 小升初语文-文言文专项复习训练一(含答案)
- 消防应急疏散通道设计方案
- 泡菜工厂废气排放控制与治理方案
- 水稻直播机械化培训课件
- 热力管网检测与修复方案
- 水痘患者护理
- 医用化学溶液组成标度95课件
- 作业5音响扩音器案例03课件
- 消防车辆安全行驶课件
- 偏瘫患者穿衣健康宣教
- 酒店预算培训课件
- 2025-2030中国汽车工程服务外包(ESO)行业现状调查与前景趋势研究报告
- 儿科血小板减少的护理查房
- 林下生态养鸡技术课件
- 高中语文课程标准测试题答案
- 孕期健康方式课件
- 膏药生产现场管理制度
- 智人迁徙路径重构-洞察及研究
- 关于医院“十五五”发展规划(2026-2030)
评论
0/150
提交评论