版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷31(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、C语言源程序名的后缀是A、.exeB、.objC、.cD、.cp标准答案:C知识点解析:南C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过c编译程序编译乍成后缀为“.obj,的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件.0bj语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。2、下列叙述中正确的是()。A、二分查找法只适用于顺序存储的有序线性表B、二分查找法适用于任何存储结构的有序线性表C、二分查找法适用于有序循环链表D、二分查找法适用于有序双向链表标准答案:A知识点解析:二分查找法(又称对分查找法)只适用于顺序存储的有序表。在此所说的有序表是指线性表的中元素按值非递减排列(即从小到大,但允许相邻元素值相等)。3、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。4、下列对于线性链表的描述中正确的是A、存储空间不一定连续,且各元素的存储顺序是任意的B、存储空间不一定连续,且前件元素一定存储在后件元素的前面C、存储空间必须连续,且前件元素一定存储在后件元素的前面D、存储空间必须连续,且各元素的存储顺序是任意的标准答案:A知识点解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。5、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()。A、63B、64C、6D、7标准答案:B知识点解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一个元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功)。若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功,但如果要查找的元素是线性表中的最后一个元素或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。6、设有语句:if(a==1)b=2;c=3;,以下语句中与之等价的是()。A、if(a==1){b=2;c=3;}B、if(a!=1){;}else{b=2;c=3;}C、if(a==1)c=3;b=2;D、(a==1)?b=2:a=a;c=3;标准答案:D知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项A、B、C均与题中所给不同,而选项D相同。7、设有一个栈与一个队列的初始状态均为空。现有一个序列A,B,C,D,E,F,G,H。先分别将序列中的前4个元素依次入栈,后4个元素依次入队;然后分别将栈中的元素依次退栈,再将队列中的元素依次退队。最后得到的序列为A、D,C,B,A,E,F,G,HB、D,C,B,A,H,G,F,EC、A,B,C,D,E,F,G,HD、A,B,C,D,H,G,F,E标准答案:A知识点解析:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。因此栈的出栈顺序是先入后出,所以顺序是D,C,B,A。队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。因此,队的出队顺序是,先入先出,所以顺序是E,F,G,H。最后的顺序是:D,C,B,A,E,F,G,H。8、若有定义语句:intx=10;则表达式x-=x+x的值为A、-20B、0C、-10D、10标准答案:C知识点解析:表达式x-=x+x等价于x=x-(x+x),整型变量x的初始值等于10,计算题目所求表达式的值时,首先计算x与x的和等丁20,然后再用10减去20等于-10,得到该表达式的值。9、结构化程序设计中,下面对GOTO语句使用描述正确的是()。A、禁止使用GOTO语句B、使用GOTO语句程序效率高C、应避免滥用GOTO语句D、GOTO语句确实一无是处标准答案:C知识点解析:滥用GOTO语句确实有害,应尽量避免;完全避免使用GOTO语句并非是明智的方法,有些地方使用GOTO语句会使程序流程更清楚、效率更高;争论的焦点不应该放在是否取消GOTO语句,而应该放在用在什么程序结构上。10、某二叉树的前序遍历序列与中序遍历序列相同,均为ABCDEF,则按层次输出(同一层从左到右)的序列为A、ABCDEFB、BCDEFAC、FEDCBAD、DEFABC标准答案:A知识点解析:前序遍历次序:根左右;中序遍历次序:左根右。由定义可以知道:①前序遍历中第一个就是树根结点,即A结点;②在中序遍历中,根结点左边的是左子树集,右边的是右子树集,即BCDEF是根结点A的右子树集合。问题就会转化为:求前序遍历是BCDEF,中序遍历是BCDEF的子树,方法同上。详细推理过程:步骤1:由ABCDEF得出根结点为A,由中序遍历可知:左子树为空,A{BCDEF};步骤2:由BCDEF得出右子树集合的根节点为B,由中序可知:左子树为空,B{CDEF};步骤3:同理,二叉树更新后如下。所以按层次输出(同一层从左到右)的序列为ABCDEF,选项A正确。11、有以下程序:#includeintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=1,b=2,c=3;printf("%d\n",fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A、2B、3C、4D、5标准答案:A知识点解析:fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即fun(2,2),2==2,所以返回2。12、设有定义:intx=2;,以下表达式中,值不为6的是()。A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1标准答案:A知识点解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A选项。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,再执行第二个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x*(1+x)=2*(1+2)=6。D选项中的表达式可以表示为x=x*(x+1)=2*3=6。13、程序流程图中带有箭头的线段表示的是A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用柜形表示加工步骤,用菱形表示逻辑条件。14、下列结构中属于非线性结构的是A、二叉链表B、二维数组C、循环队列D、双向链表标准答案:A知识点解析:线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串;常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。循环队列、双向链表和二叉链表都是线性结构,而二维数组是非线性结构。15、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是()。A、while(ch=getchar()=’N’)printf("%c",ch);B、while((ch=getchar())!=’N’)printf("%c",ch);C、while(ch=getchar()==’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);标准答案:B知识点解析:在C语言中,等于号用“==”表示,一个“=”表示赋值,当读入字母N时,选项A中,while后的条件值为“N”,是非零数,条件成立,循环继续执行,所以A选项错误。C、D选项的含义都是如果输入的字符为“N”,则打印输出,所以正好和题意相反。16、以下数组定义中错误的是()。A、intx[2][3]={1,2,3,4,5,6};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={{1,2},{3,4},{5,6}};标准答案:D知识点解析:二维数组的第一维数据表示行数,第二维数据表示列数,所以x[2][3]中的数据应为两行三列,和定义内容不符,选项D错误,答案选D。17、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A、必须是逻辑值B、必须是整数值C、必须是正数D、可以是任意合法的数值标准答案:D知识点解析:if语句中的表达式可以是任意合法的数值,如常量、变量表达式,所以D选项正确。18、数据库系统的核心是A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:B知识点解析:数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。所以,数据库管理系统是数据系统的核心。19、以下程序的输出结果是()。#include<stdio.h>main(){inta=4,b=3,c=2,d=1;printf(’’%d’’,a<b?a:d<c?d:b);}A、1B、3C、2D、4标准答案:A知识点解析:条件表达式的格式为:’’a?b:c’’,它的功能是:当a为真时,表达式的值等于b的值;当a为假时,表达式的值等于c的值。因为条件运算符的结合方向为“自右向左”。因此,当表达式中嵌套使用条件表达式时,应先计算右边的条件表达式,再计算左边的条件表达式。题中应先计算“d<c?d:b”的“d<c”关系表达式的值,因为“d=1<c=2”为真,所以取第一个表达式的值,即d的值作为整个表达式的值。接着计算“a<b?a:d”,“a=4<b=3”为假,取第二个表达式的值,即d的值作为整个表达式的值。20、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在SC中学号和课号的组合可以对元组进行唯一的标识。21、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是A、并B、交C、投影D、笛卡儿乘积标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S。形式定义如下:R∩S≡{t∈R∧t∈S}=R-(R-S)。所以不改变关系表中的属性个数,但能减少元组个数的是关系表之间的交操作。22、若有以下程序intf(inta[],intn){if(n>1){intt;t=f(a,n-1);returnt>a[n-1]?t:a[n-1];}elsereturna[0];}main(){inta[]={8,2,9,1,3,6,4,7,5};printf("%dEn",f(a,9));}则程序的输出结果是A、9B、1C、8D、5标准答案:A知识点解析:主函数中调用f(a,9),递归函数的调用过程如下:f(a,9)→f[a,8)→f(a,7)→f(a,6)→f(a,5)→f(a,4)→f(a,3)→f(a,2)→f(a,1),f(a,1)得到返回值为a[0],值为8,递归过程开始回归,回归过程描述如下:8>a[1],返回8→8>a[2]不成立,返回a[2]的值为9……因此函数f的主要功能为汁算数组中的最大值。主函数中输出最大值为9。23、有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序的运行结果是()。A、55B、50C、45D、60标准答案:D知识点解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60,因此D选项正确。24、以下叙述中正确的是A、语句inta[]={0};是不合法的,遗漏了数组的大小B、语句chara[2]={"A","B"};是合法的,定义了一个包含两个字符的数组C、语句inta[8]={0};是合法的D、语句chara[3];a="AB":是合法的,因为数组有三个字符空间的容量,可以保存两个字符标准答案:C知识点解析:当系统为所定义的数组在内存中开辟一串连续的存储单元时.这些存储单元中并没有确定的值,可以在定义语句中为所定义数组的各个元素赋初值。数组初始化赋值是指在数组定义时给数组元素赋予初值。初始化赋值的一般形式为:类型说明符数组名[常量表达式]={值,值,…,};。需要注意的是当所赋初值多于所定义数组的元素个数时,在编译时将给出出错信息,在指定初值时,第一个初值必定赋给下标为0的元素,然后按这些数值的排列顺序赋初值,只能给元素逐个赋值,不能给数组整体赋值。如果给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。25、在16位编译系统上,若有定义“inta[]={10,20,30},*p=a;”,当执行“p++;”后,下列说法错误的是A、p向高地址移了一个字节B、p向高地址移了一个存储单元C、p向高地址移了两个字节D、p与a+1等价标准答案:B知识点解析:本题考查数组和数组指针。a是一个整型数组,p指针指向a数组,即p指向a数组的首元素的地址,因此p++之后,p往高地址移动,指向首元素后面一个元素的地址。26、有以下程序#includeintfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的输出结果是A、14B、10C、15D、9标准答案:C知识点解析:函数fun为递归定义的函数,当调用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fun(2)→5+4+3+2+fun(1),因此最后的结果为15。27、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是A、8,11B、10,14C、7,11D、9,18标准答案:B知识点解析:在这段程序中变量a的初值等于1,变量b的初值等于2。第1次执行for循环语句后,变量a的值等于3,变量b的值等于3。第2次执行for循环后,变量a等于6,变量b的值等于7。第3次执行for循环后,变量a等于9,变量b的值等于14。第4次执行for循环后,变量a等于10,这时退出for循环,此时变量b的值等于14。因而程序输出变量a,b的值分别为10,14。28、下结构体说明和变量定义中,正确的是A、typedefstructabc{intn;doublem;}abc;abcx,y;B、structabc{intn;doublem);structabcx,y;C、structabc{intn;doublem;}structabcx,y;D、structabc{intn;doublem;};abcx,y;标准答案:A知识点解析:选项B中结构体定义中每个成员后面的分号都不能省略,doublem后没分号,因此错误。选项C结构体类型定义完毕后,}外没加分号。选项D中定义变量要加上关键字struct。29、以下选项中合法的标识符是A、1__B、1-1C、1_1D、_11标准答案:D知识点解析:C语言中的标识符由下划线、字母和数字组成,且必须以下划线或字母开始,所以只有D选项正确。30、有以下程序intfun(intn)main(){if(n==1)return1;{intx;Elsescanf("%d",&x);x=fun(x);return(n+fun(n—1));printf("%d\n",x);}}执行程序时,给变量x输入10,程序的输出结果是A、54B、65C、45D、55标准答案:D知识点解析:在C语言中函数可以递归调用,即直接或间接地自己调用自己。本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为:fun(10)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+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+1=5531、设有以下语句typedefstructTT{charc;inta[4];}CIN;则下面叙述中正确的是A、TT是struct类型的变量B、可以用TT定义结构体变量C、CIN是structTT类型的变量D、可以用CIN定义结构体变量标准答案:D知识点解析:C语言允许用typedef说明一种新的类型名,说明新类型名的语句为一般形式为:typedef类型名标识符在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。在本题中用typedef定义CIN为TT的一种新的类型名,因而可以用它定义一个结构体变量。32、有以下程序#includevoidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是A、2050B、3344C、3040D、0304.标准答案:C知识点解析:在主函数的for循环语句中,当循环变量i的值等于0,2时,执行switch中的case0语句,分别对数组元素a[0]和a[2]加1和减1,所以a[0]的值等于3,a[2]等于4。当循环变量i的值等于1,3时,执行switch中的case1语句,把数组元素a[1]和a[3]的值赋为0。所以输出数组a的元素,其结果为3040。33、有以下程序voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是A、abe,123B、123,abcC、321,cbaD、1bc,a23标准答案:D知识点解析:函数voidswap(char*x,char*y)的功能是交换两个字符*x和*y中的内容。在主函数中字符指针s1指向字符串’abe’,s2指向字符串’123’。所以函数swap(s1,s2)的执行结果就是字符’a’和’1’相互交换。34、以下叙述中正确的是A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组B、charca[3][5]={"A","BB","CCC"};是不合语法的C、charca[][5]={"A","BB","CCC"};是不合语法的D、char*ca[3]={"A","BB","CCC"};是不合语法的标准答案:A知识点解析:本题考查字符串数组的相关知识,选项B、C、D都是合语法的。35、有以下程序,程序的输出结果是#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A、0B、1C、9D、10标准答案:B知识点解析:SQR(k+m)宏展开以后为k+m*k+m,值为5,表达式a/=SQR(k+m)/SQR(k+m)为a=a/(5+5),表达式值为1。36、在一个C源程序文件中所定义的全局变量,其作用域为A、由具体定义位置和extern说明来决定范围B、所在程序的全部范围C、所在函数的全部范围D、所在文件的全部范围标准答案:A知识点解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用extern说明符扩展全局变量的作用域(当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从extern说明处起,延伸到该函数末尾)。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用extern对这些变量进行说明。37、若有定义typedefint*T;Ta[10];则a的定义与下面哪个语句等价A、int*a[10];B、int(*a)[10];C、int*a;D、inta[10];标准答案:A知识点解析:typedef的主要功能是为存在的类型命名,后面的代码中可以利用该新定义的类型名定义变量,题目中定义了整型指针类型T,而后利用T定义了整型指针数组a,含有10个元素,选项A中定义了整型指针数组a,选项B定义了一个指向一维数组的指针a,选项C定义指针变量,,而选项D为定义整型数组最常用的形式,数组a中可以存放10个数据元素。38、若有以下程序typedefstructstu{char*name,gender;intscore;}STU;voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");}main(){STUa={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;f(b.name);b.gender=’f’;b.score=350;printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);}则程序的输出结果是A、Zhao,m,290,Qian,f,350B、Qian,f,350,Qian,f,350C、Qian,m,290,Qian,f,350D、Zhao,m,290,Zhao,f,350标准答案:D知识点解析:函数f(char*p)的主要功能申请字符串的存储空间,然后存入字符串"Qian",但当程序调用结束以后,形参指针变量p撤销,存储的字符串地址丢失,而不能更改实参指针的值。主函数中结卡勾体变量定义同时赋初值,初始情况其name指针成员存储空,而后语句为其分配存储空间,存入字符串“Zhao”。执行“b=a;”语句后,b的数据和a的数据相同,调用函数f以后,b的name成员的值没变。39、有以下程序#includemain(){chars[10]="verygood",*ps=s;ps+=4;ps="nice";puts(s);}程序的运行结果是()。A、verygoodB、veryniceC、nicegoodD、nice标准答案:A知识点解析:数组名s为一个指针常量,始终指向该数组的首地址,语句"ps="nice";"将字符指针ps指向了另一个字符串的首地址,并不能对字符数组s中的数据造成影响,所以输出结果为"verygood",答案选A。40、有以下程序#includemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);fclose(fp);}程序运行后的输出结果是A、abcB、28cC、abc28D、因类型不一致而出错标准答案:C知识点解析:本题考查文件操作函数fprintf()函数,fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上执行两次fprintf后文件中有abc28,所以C选项正确。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、计算机软件的构成是()。A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。答案选D。2、下列叙述中正确的是A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、以上都不正确标准答案:B知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。3、以下选项中,合法的一组C语言数值常量是A、12.0Xa234.5e0B、028.5e.3-0xfC、.1774e1.50abcD、0x8A10.0003.e5标准答案:A知识点解析:八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B)中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C)中4e1.5是错误的。在选项D)中,整型数据10,000的表示形式是错误的。4、有以下程序main(){charc1=’A’,c2=’Y’;printf(’’%d,%d\n’’,C1,c2);}程序的输出结果是A、输出格式不合法,输出出错信息B、65.90C、65,89D、A.Y标准答案:C知识点解析:C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。5、某二叉树的后序遍历序列与中序遍历序列相同,均为ABCDEF,则按层次输出(同一层从左到右)的序列为A、FEDCBAB、CBAFEDC、DEFCBAD、ABCDEF标准答案:A知识点解析:后序遍历次序:左右根;中序遍历次序:左根右。由定义可知:①后序遍历中最后一个是树的根结点,即F结点;②在中序遍历中,根结点左边的是左子树集,右边的是右子树集,即ABCDE是根结点F的左子树集合。问题就会转化为:求后序遍历是ABCDE,中序遍历是ABCDE的子树。方法同上,因为中序遍历中,E结点右边没有结点了,所以E结点不包含右子树,否则就会被分为2个子问题。以下是这道题的详细推理过程:步骤1:由ABCDEF得出根结点为F,由中序遍历可知:{ABCDE}F,右子树为空;步骤2:由ABCDE得出左子树集合的根节点为E,由中序可知:{ABCD}E,右子树为空;步骤3:同理,二叉树更新后如下。所以按层次输出(同一层从左到右)的序列为FEDCBA。6、有以下程序:#include<stdio.h>main(){inty=10;while(Y一);printf(’’y=%d\n’’,y);}程序执行后的输出结果是()。A、y=0B、y=-1C、y=1D、while构成无限循环标准答案:B知识点解析:执行y-直到值为0,由于y-是先用再减,所以退出循环时,y的值为-1。7、若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。A、sqrt(1abs(pow(n,x)+exp(x)))B、sqrt(1abs(pow(N,x)+pow(x,e)))C、sgrt(abs(n^x+e^x))D、sqrt(1abs(pow(x,n)+exp(X)))标准答案:A知识点解析:B选项中函数pow(x,e)错误,应该直接使用exp(x)函数。C选项中函数abs(n^x+e^x)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参数顺序错误。8、有以下程序:#includeintfun(char*s){char*P=S:while(*P++!=’\0’);return(P—s);}main(){char*r=“01234”;printf(“%d\n”,fun(r));}程序的运行结果是()。A、6B、5C、4D、3标准答案:A知识点解析:程序执行过程为:定义字符串指针r,并为其初始化为“01234”,调用函数fun(r),将指针传入函数while循环找到字符串的结束符地址,然后使这个指针指向结束符下一个单元,结束循环。返回字符串首地址与结束符下一个地址之差,也即是字符串长度加1。输出地址差为6。9、己知函数的调用形式“fread(buffer,size,count,fp);”其中buffer代表的是()。A、一个整型变量,代表要读入的数据项总数B、一个文件指针,指向要读的文件C、一个指针,是指向的输入数据放在内存中的起始位置D、一个存储区,存放要读的数据项标准答案:C知识点解析:数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。10、若有定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是A、m[--i]B、m[2*2]C、m[m[0]]D、m[m[i]]标准答案:C知识点解析:本题考查数组的使用。m是一个一维数组,长度为5,因此下标范围是0-4。选项A中一是先自减,然后使用i,因此访问的是元素m[3]:选项B访问的是元素m[4]:选项C中内部的m[0]值是5,因此实际访问是的m[5],下标超出范围:选项D中m[i]的值是1,访问元素m[1]。11、软件测试的目的是A、发现程序中的错误B、修改程序中的错误C、避免程序中的错误D、发现和修改程序中的错误标准答案:A知识点解析:软件测试的目的是:发现一些可以通过测试避免的开发风险;实施测试来降低所发现的风险;确定测试何时可以结束;在开发项目的过程中将测试看作是一个标准项目。12、有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");)A、4332B、2344C、1234D、1123标准答案:A知识点解析:本题考查for语句的循环控制,首先定义了两个数组并赋予了初始值,第一个for循环语句循环12次遍历s数组的各个元素,将s[]中的原素值作为c[]数组中的下标,使相应的值自加。例如当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…11后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项A为正确的运行结果。13、以下叙述中正确的是A、整型常量和实型常量都是数值型常量B、常量的类型不能从字面形式上区分,需要根据类型名来决定C、预定义的标识符是C语言关键字的一种,不能另作它用D、只能在函数体内定义变量,其他地方不允许定义变量标准答案:A知识点解析:整型常量和实型常量都是数值型常量,选项A)正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B)错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的变量,选项D)错误。14、有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);pfintf("%c,%c\n",b,a);}程序运行后的输出结果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:本题中fun函数的参数传递方式,形参c是传地址,形参d是传值,所以在主函数中,执行fun时,把变量b的地址传给了c,把a的值传递给了d,经过运算,输出的值为b,B。在主函数的输出浯句中,输出变量b的值为b,变量a的值为A。15、有以下程序structs{inta,b;)data[2]={10,100,20,200);main(){structsp=data[1];printf("%d\n",++(p.a));}程序运行后的输出结果是A、11B、20C、21D、10标准答案:C知识点解析:存题目中定义了结构体s类型的数组变量data,并对其赋初值。在程序中定义了指向结构体S类型的变量p,并把数组data的第二个元素data[1]的值赋给它,所以此时成员变量p.a的值等于20,存输出时分别加1,所以输入结果为选项A)。16、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2‖c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序运行后的输出结果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1标准答案:C知识点解析:a,b,c,d初始值分别为1,2,3,0。嵌套的if语句中,第一个if中,表达式a==1&&b++==2值为1,执行嵌套的if分支,此时“b=3,b!=2”成立,由于运算符是‖,不管后面一个表达式的值是不是1,其整个表达式的值总是1,“c--!=3”表达式不执行,最后打印出a,b,c的值是1,3,3。17、有下列程序:inta=4:intf(intn)main(){intt=0;staticinta=5;{ints=a,i=0;if(n%2){inta=6;t+=a++;}for(;i<2;i++)s+=f(i);else{inta=7;t+=a++;}printf("%d\n",s);returnt+a++;}}程序运行后的输出结果是A、28B、24C、32D、36标准答案:A知识点解析:程序中定义了全局整型变量a=4。在intf(intn)函数中定义了局部静态整型变量并进行了初始化即staticinta=5。在intf(intn)函数中对n是否是偶数进行判断,如果n是奇数,则函数的返回值为11,局部静态整型变量a=6;如果n是偶数,则函数的返回值为12,局部静态整型变量a=6。所以在main()函数中循环首先执行s+=f(0)语句,而f(0)返回值12,所以第一次循环结束s的值等于4+12=16;第二次开始执行f(1)时,在f(1)中执行“if(n%2){inta=6;t+=a++;}”和“retumt+a++;”这两条语句,这时t=6,a=6(静态局部变量第一次循环后其值加1值不释放,执行第二次循环量,其值仍有效),所以f(1)的返回值等于12。再在主函数中执行s+=f(1)语句,即16+12=28。18、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2){b;printf("%d\n",t);}A、11B、6C、21D、1标准答案:C知识点解析:本题考查位操作运算符。‘<<’是左移运算符,左移一位相当于乘2,‘|’是按位或运算符。5左移两位相当于乘4,得到20,20的二进制数是00010100,和00000001进行按位或操作得到00010101,即十进制的21。19、有以下程序#includeinta=2;intf(){staticintn=0;intm=0;n++;a++;m++;returnn+m+a;}main(){intk;for(k=0;k<3;k++)printf("%d,",f());printf("\n");}程序的运行结果是()。A、5,7,9,B、5,6,7,C、5,8,11,D、5,5,5,标准答案:A知识点解析:静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,而局部变量则是用时分配,用完释放。全局变量在当前文件内也是一直存在的。main()函数中调用三次f()函数,f(0)=1+1+3=5,n=1,m=1,a=3;f(1)=2+1+4=7,n=2,m=1,a=4;f(2)=3+1+5=9,n=3,m=1,a=5。所以答案选A。20、有以下程序main(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\nT",x);}程序的运行结果是A、1B、2C、3D、0标准答案:C知识点解析:1、2、3的二进制形式分别为00000001、00000010、00000011。首先计算1与2的或运算,即1^2=(00000001)^(00000010)=00000011,再将其与3进行“与”运算。结果为(00000011)&(00000011)=4)0000011,即十进制数3。21、有以下程序voidfun(int*p,int*q){intt;t=*p;*p=*q;*q=t;*q=*p;}main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);}程序的输出结果是A、00B、99C、90D、09标准答案:B知识点解析:函数fun的主要功能是交换p和q指向的地址空间的数据,然后更改p的指向的地址空间数据,使之和q指向的数据相同。主函数调用fun后,p指向a,q指向b,因此a和b的数据全部为9。22、若有以下程序typedefstructstu{charname[10],gender;intscore;}STU;voidf(STUa,STUb){b=a;printf("%s,%c,%d,",b.name,b.gender,b.score);}main(){STUa={"Zhao",’m’,290},b={"Qian",’f’,350};f(a,b);printf("%s,%c,%d\n",b.name,b.gender,b.score);}则程序的输出结果是A、Zhao,m,290,Zhao,m,290B、Zhao,m,290,Qian,f,350C、Qian,f,350,Qian,f,350D、Zhao,m,290,Zhao,f,350标准答案:B知识点解析:函数f(STUa,STUb)的主要功能是为把结构体变量a的值存放到b中,然后输出b中各个成员的值。主函数中调用函数f(a,b),输出赋值以后b的数据,实际为a{"Zhao",’m’,290}的数据,函数调用结束,形参a和b撤销,流程到主函数输出b{"Qian",’f’,350}的数据。23、有以下程序#include<stdio.h>typedefstruct{intb,p;}A;voidf(Ac)/*注意:c是结构变量名*/{intj;c.b+=1;c.p+=2;}main(){i;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序运行后的输出结果是A、2,4B、1,2C、1,4D、2,3标准答案:B知识点解析:在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。也就是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。所以本题中在main()函数f(a)语句中结构体实参a作为值,传递给函数f(Ac)中的形参c;这种值传递的方式不会对实参a产生任何影响,所以结构体实参a的值不会发生变化。24、以下程序依次把从终端输入的字符存放到f文件中,用#作为结束输入的标志,则在横线处应填入的选项是#include<stdio.h>main(){FILE*fp;charch;fp=fopen("fname","w");while((ch=getchar())!=’#’)fputc(__________);fclose(fp);}A、fp,chB、chC、ch,"fname"D、ch,fp标准答案:D知识点解析:fputc()是以字符(字节)为单位的读写函数。每次可从文件读出或向文件写入一个字符。使用格式为fputc(ch,fp);其中ch是待输出的某个字符,它可以是一个字符常量,也可以是一个字符变量;fp是文件指针。fputc(ch,fp)的功能是将字符ch写到文件指针fp所指的文件中。如果输出成功,fputc函数返回所输出的字符;如果输出失败,则返回一个EOF值。EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1。25、以下叙述中错误的是()。A、用typedef可以说明一种新的类型名B、typedef的作用是用一个新的标识符来代表已存在的类型名C、可以用typedef说明的新类型名来定义变量D、typedef说明的新类型名必须使用大写字母,否则会出编译错误标准答案:D知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,新类型可以使用小写,所以D选项错误。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。A、15B、16C、20D、0或35标准答案:D知识点解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数为0;第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素个数为35。2、下列叙述中正确的是()。A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)标准答案:A知识点解析:本题主要考查的知识点为查找技术。顺序查找的使用情况:①线性表为无序表;②表采用链式存储结构。二分法查找只适用于顺序存储的有序表,并不适用于线性链表。3、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。4、设二叉树的前序序列为ABDEGHCFIJ,中序序列为DBGEHACIFJ。则按层次输出(从上到下,同一层从左到右)的序列为A、ABCDEFGHIJB、DGHEBIJFCAC、JIHGFEDCBAD、GHIJDEFBCA标准答案:A知识点解析:前序遍历中,第一个字母是根结点,也就是A是根结点;在中序遍历中,根结点前面的是左子树、后面的是右子树。前序中,B在A的后面,中序中在左子树中,可知B为A的左结点。中序中D在B的前面,前序中在B的后面,可知D为B的左结点,GEH为B的右子树。前序中顺序为EGH,由此可知,E为B的右结点,G为E的左结点、H为E的右结点。右子树中,前序中C在最前,因为右子树根结点,也就是A的右结点,根据前序中的子树FIJ和中序中的IFJ子树可知F为C的右结点,I为F的左结点、J为F的右结点。由此可画出这个二叉树,然后根据二叉树,可知按层次输出(从上到下,同一层从左到右)的序列为:ABCDEFGHIJ。5、定义学生、教师和课程的关系模式S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含对非主属性部分依赖的关系是()。A、S(S#,Sn,Sd,Dc,Sa)B、C(C#,Cn,P#)C、SC(S#,C#,G)D、不存在标准答案:A知识点解析:关系S的主键是S#(学号),S#是主属性,但非主属性Sd(所在系)也可决定Dc(所在系的系主任),所以包含对非主属性部分依赖的关系是S。6、若有以下程序#includemain(){intb=10,a=-11;a%=b%=4;printf("%d%d\n",a,b);}则程序的输出结果是A、12B、-1-2C、-12D、1-2标准答案:C知识点解析:对于表达式a%=b%=4为复合的赋值运算,结合性自右至左,相当于先计算b=b%4,a=a%b;结果的符号和第一个操作数的符号相同,因此b为2,a的结果为-1.7、有如下程序段:intx=12:doubley=3.141593:printf(’’%d%8.6f’’,x,y);其输出结果是()。A、123.141593B、123.141593C、12,3.141593D、123.1415930标准答案:A知识点解析:printf函数中格式字符“%8.6”的含义是:变量y的输出宽度为8(包括小数点),小数点后面保留6位小数,且右对齐,当数值的实际宽度大于设定宽度时,按实际宽度输出,所以选择A选项。8、有以下程序:#include<stdio.h>inta=1,b=2;voidfun1(inta,intb){printf(″%d%d″,a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf(″%d%d\n″,a,b);}程序运行后的输出结果是()。A、5634B、3456C、1256D、5612标准答案:A知识点解析:在一个源文件中,如果外部变量和局部变量同名,则在该局部变量的作用域内,该外部变量会被“屏蔽”,所以函数fun1()输出的是局部变量a、b的值:56;fun2()改变的是全局变量a、b的值,输出结果为34,答案选A。9、软件系统总体结构图的作用是A、描述软件系统结构的图形工具B、描述软件系统的控制流C、描述软件系统的数据流D、描述软件系统的数据结构标准答案:A知识点解析:软件系统总体结构图的作用是描述软件系统结构的图形工具。10、有以下程序:#includeintfun(intx){intP;if(x==0‖x==1)return3;P=x—fun(x一2);return(P);}main(){printf(“%d\n”,fun(9));}程序运行后的输出结果是()。A、4B、5C、9D、7标准答案:D知识点解析:本题考查函数的递归调用。执行fun(9)后,fun(9)=9一(7一(5一(3一f(1))))=7,故D选项正确。11、sizeof(double)是A、一个双精度型表达式B、一个整型表达式C、一个不合法的表达式D、一种函数调用标准答案:B知识点解析:sizeof关键字为C语言的运算符,用于测试()内类型其变量所占内存,表达式结果返回十进制整数,因此为整型表达式,表明变量所占的内存字节数。12、若有以下程序#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}则程序的输出结果是A、3,5,5,3,5B、5,3,5,3,5C、5,3,3,5,5D、3,5,3,5,5标准答案:D知识点解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小于第二个参数,那么交换指针的指向,这对于实参指向的数据时没有影响的。最后返回比较大的元素的地址。主函数中p指向i,q指向i,调用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。13、以下叙述中正确的是A、循环发生嵌套时,最多只能两层B、三种循环for,while,do-while可以互相嵌套C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D、for语句的圆括号中的表达式不能都省略掉标准答案:B知识点解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语句中的表达式可以部分或全部省略,但两个“:”不可省略。14、若有以下程序#includeintk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}则程序的输出结果是A、7,5,7,3,3,3,B、7,5,7,3,5,7,C、7,5,5,3,3,3,D、7,7,5,3,3,3,标准答案:C知识点解析:本题考查二级指针作为函数的参数,可以通过函数调用来改变主函数中一级指针的指向。主函数中指针变量p指向i,r指向p,调用f函数,形参指针s指向p,流程转到f函数执行,指针变量t指向k,s指向t,此时更改了s的指向,s指向了t,更改了s指向的地址空间内容为m的地址,同时t也指向变量m,因此**s的值为m的值,*t为m的值,k为7。流程返回到主函数,没有对主函数空间的数据和指向作出更改,因此全部为3。15、以下叙述中正确的是A、循环发生嵌套时,最多只能两层B、三种循环for,while,do-while可以互相嵌套C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D、for语句的圆括号中的表达式不能都省略掉标准答案:B知识点解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语句中的表达式可以部分或全部省略,但两个“;”不可省略。16、有以下定义语句,编译时会出现编译错误的是A、chara=’\n’;B、chara="aa";C、chara=’a’;D、chara=’\x2d’;标准答案:B知识点解析:在选项B中,由两个字符aa组成一个字符串赋给一个字符变量a时会出错。17、结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。18、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C)。19、有以下程序#include#defineSUB(X,Y)(X+1)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}程序运行后的输出结果是A、25B、20C、12D、16标准答案:D知识点解析:本题考查宏定义,宏定义只是做个简单的替换,执行SUB(a++,b++)=(a+++1)*b++=16,选项D正确。20、以下叙述中正确的是A、用户自己定义的函数只能调用库函数B、实用的C语言源程序总是由一个或多个函数组成C、不同函数的形式参数不能使用相同名称的标识符D、在C语言的函数内部,可以定义局部嵌套函数标准答案:B知识点解析:A选项中,"用户自己定义的函数只能调用库函数"描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。因此B选项正确。21、以下选项中不属于C语言标识符的是A、常量B、用户标识符C、关键字D、预定义标识符标准答案:A知识点解析:常量是指在程序运行过程中其值不能被改变的量,如5、1.0、字符’a’等。C语言的标识符分为3类:关键字、预定义标识符和用户标识符,常量不属于标识符,所以选择A。22、若有定义typedefintT[10];Ta[20];则与上述定义完全等价的说明语句是()。A、inta[20][10];B、inta[20];C、inta[10];D、inta[10][20];标准答案:A知识点解析:typedef为类型定义符,作用是用"新类型名"代替"原类型名",即为现有类型定义容易记忆的类型名。typedef能够隐藏复合类型,比如指针和数组,定义语句"typedefintT[10];"表明类型T就代表了具有10个元素的整型数组,所以语句"Ta[20];"则表示定义了具有20个元素并且每个元素都为一个有10个元素的一维数组,所以答案选A。23、标准库函数fgets(s,n,f)的功能是()。A、从文件f中读取长度不超过n-1的字符串存入指针s所指的内存B、从文件f中读取长度为n的字符串存入指针s所指的内存C、从文件f中读取n个字符串存入指针s所指的内存D、从文件f中读取n-1个字符串存入指针s所指的内存标准答案:A知识点解析:函数fgets(s,n,f)的功能是从f指向的文件中读取一个长度为n-1的字符串,将其存入s指向的存储区中,答案选A。24、有以下程序#includemain(){inti=0;i=~i;printf("%d\n",i);}程序运行后的输出结果是A、8B、0C、1D、-1标准答案:D知识点解析:本题考查位运算中按位取反,0按位取反就是-1,所以选项D正确。25、有以下程序#includemain(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}程序运行后的输出结果是A、随机值B、0C、15D、16标准答案:A知识点解析:本题重点考察for语句,变量没有初始化的情况下,默认值与编译器有关系,不同的编译器有不同的值。因此A选项正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。A、7B、8C、9D、10标准答案:B知识点解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。2、C语言主要是借助以下哪种手段来实现程序模块化A、定义常量和外部变量B、使用丰富的数据类型C、使用三种基本结构语句D、定义函数标准答案:D知识点解析:C语言用函数实现软件的模块化设计。3、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。4、下列各组排序法中,最坏情况下比较次数相同的是()。A、简单选择排序与堆排序B、简单插入排序与希尔排序C、冒泡排序与快速排序D、希尔排序与堆排序标准答案:C知识点解析:对于长度为n的线性表,最坏情况下查找或排序的次数如下表:5、在深度为7的满二叉树中,叶子结点的个数为A、32B、31C、64D、63标准答案:C知识点解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。对于深度为7的满二叉树,叶子结点所在的是第7层,一共有27-1=64个叶子结点。全部结点共27-1=127个。6、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为A、log2nB、n/2C、nD、n+1标准答案:C知识点解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。7、设变量x为longint型,并已正确赋值,以下表达式中能将x的百位上的数字提取出的是()。A、x/10%100B、x%10/100C、x%100/10D、x/100%10标准答案:D知识点解析:x/100的个位数是x的百位数上的数字,所以再进行%10运算即可得到该数字。8、有以下程序main(){chara=’H’;a:(a>=’A’&&a<=’Z’)?(a+32);a;printf(’’%c\n’’,a);)程序运行后的输出结果是A、HB、AC、hD、a标准答案:C知识点解析:表达式a=(a>=’A’&&a<=’z’)?(a+32):a,为条件表达式,如果a是大写字符,则转换为小写字符存放到a中,否则不变。9、数据库管理系统是()。A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统标准答案:B知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制、保护和数据服务等。10、循环队列的存储空间为Q(1:40),初始状态为front=rear=40。经过一系列正常的入队与退队操作后,front=rear=15,此后又退出一个元素,则循环队列中的元素个数为A、39,或0且产生下溢错误B、14C、40D、15标准答案:A知识点解析:循环队列初始状态front=rear=40,经过一系列入队和出队操作后,结束状态还是front=rear=15,这说明入队元素个数和出队元素个数一样多。这样一来最后的元素个数就和原来的元素个数一样多,明显不是0就是40,即要么队列为空(0个元素),要么队列为满队列(40个元素)。这时进行出队操作,如果是队列满(40个元素)的情况,此时队列中的元素个数为39,如果是队列空(0个元素)的情况,此时就会产生下溢错误。因此选项A正确。11、有以下程序main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);)程序的输出结果是A、a=%2,b=%5B、a;%d,b=%dC、a=2,b=5D、a=%%d,b=%%d标准答案:B知识点解析:输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,而没有%表示格式符的开始,%%d不能表示格式符,因此仅输出:a=%d,b=%d。12、有以下程序段:#includeintj;floaty;charname[50];seanf(”%2d%f%s”,&j,&y,name);当执行上述程序段时,从键盘上输入555667777abc后,Y的值为()。A、566.0B、55566.0C、7777.0D、566777.0标准答案:A知识点解析:它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读人的最大字符数。所以j的值为55,y的值为566.0,字符数组name为7777abc。13、关于C语言程序的叙述中错误的是()。A、一个C函数可以单独作为一个C程序文件存在B、一个C语言程序只能实现一种算法C、C语言程序可以由一个或多个函数组成D、C语言程序可以由多个程序文件组成标准答案:B知识点解析:在一段C语言程序中可以包含多个算法.用来实现不同的任务,因为算法是指为解决某个特定问题而采取的确定且有限的步骤,它是通过函数来实现的。一个C语言源程序由许多函数组成,这些函数都是根据实际任务确定具体的算法,由用户自己编写。C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个C语言程序可以实现多种算法。14、以下不构成无限循环的浯句或语句组是()。A、n=0;do{++11;}while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);;n一一;}D、for(n=0,i=1;i++)n+=i;标准答案:A知识点解析:A选项中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所以没有判断条件,进入死循环。15、设有如下三个关系表下列操作中正确的是A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年校园门卫人员劳动合同编制指南3篇
- 2025年度残疾人劳动合同签订中的残疾人心理关爱与职业适应3篇
- 2024药店负责人任期药店品牌形象塑造聘用合同3篇
- 二零二五年度版权许可合同许可范围和许可费用6篇
- 年度新型铝基轴瓦材料市场分析及竞争策略分析报告
- 年度密封用填料及类似品竞争策略分析报告
- 二零二五年度精装修住宅租赁管理服务合同3篇
- 2024-2025学年高中历史第五单元近现代中国的先进思想第22课孙中山的民主追求课后作业含解析岳麓版必修3
- 2025年度智能交通系统建设合同6篇
- 二零二五年度餐馆员工餐饮服务规范合同3篇
- 100个超高难度绕口令大全
- 《郑伯克段于鄢》-完整版课件
- (日文文书模板范例)请求书-请求书
- 土壤肥料全套课件
- 毕业生延期毕业申请表
- 学校6S管理制度
- 肽的健康作用及应用课件
- T.C--M-ONE效果器使用手册
- 8小时等效A声级计算工具
- 人教版七年级下册数学计算题300道
- 社会实践登记表
评论
0/150
提交评论