版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷34(共9套)(共285题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是()。A、二分查找法只适用于顺序存储的有序线性表B、二分查找法适用于任何存储结构的有序线性表C、二分查找法适用于有序循环链表D、二分查找法适用于有序双向链表标准答案:A知识点解析:二分查找法(又称对分查找法)只适用于顺序存储的有序表。在此所说的有序表是指线性表的中元素按值非递减排列(即从小到大,但允许相邻元素值相等)。2、下列叙述中正确的是()。A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、以上说法都不对标准答案:A知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数随队头指针和队尾指针的变化而变化。A选项正确。3、关于C语言的变量,以下叙述中错误的是A、所谓变量是指在程序运行过程中其值可以被改变的量B、变量所占的存储单元地址可以随时改变C、程序中用到的所有变量都必须先定义后才能使用D、由三条下划线构成的符号名是合法的变量名标准答案:B知识点解析:变量是指存程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单冗。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。4、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:根据数据之间的联系方式,可以把数据库分为层次型、网状型和关系型数据库,它们是根据数据之间的联系方式来划分的。5、下列描述中正确的是A、软件测试的主要目的是发现程序中的错误B、软件测试的主要目的是确定程序中错误的位置C、为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D、软件测试是证明软件没有错误标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。为了达到好的测试效果,应该由独立的第三方来构造测试,程序员应尽量避免检查自己的程序。6、合法的C语言常量是()。A、432E0.2B、1.7eC、03249D、OXab标准答案:D知识点解析:本题考查C语言中的常量表达式。选项A字母E后面必须是整型数,浮点数错误;选项B字母e后面没有整型数;选项C以0开始表示八进制数,八进制数没有9;选项D是一个正确的十六进制常数。7、若变量x,y已正确定义并赋值,以下符合C语言语法的表达式是()。A、x+1=yB、++x,y=x--C、x=x+10=x+yD、double(x)/10标准答案:B知识点解析:不能将变量赋给表达式,故A、C选项错误,D选项中强制类型转换表达式应写成(double)x/10。8、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A、必须是逻辑值B、必须是整数值C、必须是正数D、可以是任意合法的数值标准答案:D知识点解析:if语句中的表达式可以是任意合法的数值,如常量、变量表达式,所以D选项正确。9、下列叙述中正确的是A、软件的使用存在老化问题B、软件是物理实体,不具有抽象性C、软件是逻辑实体,具有抽象性D、软件的运行对计算机系统不一定具有依赖性标准答案:C知识点解析:软件是一种逻辑实体,而不是物理实体,具有抽象性。软件的使用不存在老化问题。10、)以下程序的输出结果是()。#includemain(){inta=4,b=3,c=2,d=1;printf("%d",aA、1B、3C、2D、4标准答案:A知识点解析:条件表达式的格式为:"a?b:c”,它的功能是:当a为真时,表达式的值等于b的值;当a为假时,表达式的值等于c的值。因为条件运算符的结合方向为“自右向左”。因此,当表达式中嵌套使用条件表达式时,应先计算右边的条件表达式,再计算左边的条件表达式。题中应先计算“d11、有以下程序:#include<stdio.h>main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p:p=q:q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序的运行结果是()。A、2,1,1,2B、1,2,1,2C、2,1,2,1D、1,2,2,1标准答案:D知识点解析:intm=1,n=2,*p=&m,*q=&n,*r;即指针变量p指向m,指针变量q指向n,r=p;p=q;q=r;即通过指针变量r,将指针p和指针q的指向交换,因此最后输出1,2,2,1。12、有以下程序#includemain(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是A、12B、14C、1234D、123456标准答案:D知识点解析:fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上执行两次fprintf后文件中有123456,所以D选项正确。13、有以下程序#include#includetypedefstruct{charname[9];charsex;intscore[2];)STU;STUf(STUa){STUb={"Zhao",’m’,85,90};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"Qian",’f’,95,92),d;d=f(c);printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);printf("%s,%c,%d,%d,",c.name,c.sex,c.score[0],c.score[1]);}A、Zhao,m,85,90,Zhao,m,85,90B、Qian,f,95,92,Qian,f,95,92C、Zhao,m,85,90,Qian,f,95,92D、Qian,t,95,92,Zhao,m,85,90标准答案:C知识点解析:在C语言中,函数实参与形参之间数据的传递是传值,也就是说在用实参训用形参时,是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原米的值。所以对十本题来说,在主函数中调f(e)后,实参c的值并不会变化,仍是原值。在函数f中把局部变量b的值依次返回给变量d。14、有以下程序#includemain(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是()。A、1*1=11*2=21*3=32*2=42*3=63*3=9B、1*1=11*2=21*3=32*1=22*2=43*1=3C、1*1=11*2=22*2=41*3=32*3=63*3=9D、1*1=12*1=22*2=43*1=33*2=63*3=9标准答案:A知识点解析:该程序中,i的取值从1到3,j从i到3,内层每次循环均输出对应的i、j以及i*j的值,每次外层循环后输出回车,易知:1)i代表行数,一共输出三行,i值相同的在同一行;2)每行的公式个数为3-i+1;3)输出的j值要比i值大。由此答案选A。15、有以下程序#include<stdio.h>typedefstruct{intb,p;)A;voidf(Ac)/*注意:C是结构变量名*/{intj;c.b+=l;c.p+=2;}main(){i;Aa={l,2};f(a);printf(”%d,%d\n”,a.b,a.p);)程序运行后的输出结果是A、274B、1,2C、1,4D、2,3标准答案:B知识点解析:在C语言中,数据只能从文参单向传递给形参,称为”按值”传递。也就是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。所以本题中在main()函数f(a)语句中结构体实参a作为值,传递给函数f(AC中的形参c;这种值传递的方式不会对实参a产生任何影响,所以结构体实参a的值不会发生变化。16、若程序中有宏定义行:#defineN100则以下叙述中正确的是A、宏定义行中定义了标识符N的值为整数100B、在编译程序对C源程序进行预处理时用100替换标识符NC、上述宏定义行实现将100赋给标示符ND、在运行时用100替换标识符N标准答案:B知识点解析:本题考查预编译相关知识,宏定义在编译程序时做了一个简单的替换,所以选项B正确。17、以下不能用于描述算法的是()。A、E-R图B、程序语句C、伪代码和流程图D、文字叙述标准答案:A知识点解析:E-R图即"实体-联系图"将现实世界中的要求转化成实体、联系、属性等基本概念,描述的是实体之间的联系,而不能对算法进行描述,相对而言,程序语句、伪代码和流程图以及文字都能描述算法的基本思想,所以答案选A。18、有以下程序#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f(double)i);Drintf("%5.0fkn",a);}doublef(doublex){returnx*x+1;}程序运行后的输出结果是A、401B、500C、503D、1404标准答案:C知识点解析:由于函数f的作用是对形参x求平方再加1,所以在主函数中,循环第一次执行后变量a的值等于1,第二次执行后,变量a的值等于102,第三次执行后,变量a的值等于503。19、构成计算机软件的是A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。20、有以下函数intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!=’\0’){x++;y++;n++;}returnn;}函数的功能是()。A、统计x和y所指字符串中最前面连续相同的字符个数B、查找x和y所指字符串中是否有’\0’C、将y所指字符串赋给x所指存储空间D、统计x和y所指字符串中相同的字符个数标准答案:A知识点解析:循环判定条件"(*x==*y)&&*x!=?\0?"是如果字符指针x与y指向的字符相等并且字符指针x没有到达字符串尾部,则让指针x、y后移一位并让n自加1,所以n统计的是x和y所指字符串中最前面连续相同的字符个数,答案选A。21、有以下程序#include<stdio.h>structSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"zhao",’m’,85,90};a[1]=b;}main(){structSTUc[2]={{"Qian",’f’,95,92},{"Sun",’m’,98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n,",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序运行后输出结果是A、Qian,f,95,92,Sun,m,98,99B、Zhao,m,85,90,Sun,m,98,99C、Qian,f,95,92,Zhao,m,85,90D、Zhao,m,85,90,Qian,f,95,92标准答案:C知识点解析:在主函数中,定义了结构体STU数组c[2],并对其赋初始值。执行f(c)时,在函数f()中,把结构体变量b的值赋给了c[1]。22、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是A、必须是逻辑值B、必须是整数值C、必须是正数D、可以是任意合法的数值标准答案:D知识点解析:if语句中的表达式可以是任意合法的数值,如常量,变量表达式。所以D选项正确。23、假定已建立以下链表结构,且指针p和q已指向如图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是A、p->next=q->next;free(q);B、p=q->next;free(q);C、p=q;free(q);D、(*p).next=(*q).next;free(p);标准答案:A知识点解析:本题考查删除链表中的节点操作,其方法是将要删除节点的上个节点的下个节点指向要删除节点的下个节点,然后释放该要删除节点,所以选项A正确。24、以下叙述中正确的是A、由printf输出的数据都隐含左对齐B、scanf和printf是C语言提供的输入和输出语句C、赋值语句是一种执行语句,必须放在函数的可执行部分D、由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的标准答案:C知识点解析:scanf和printf是C语言提供的输入输出函数,所以B错误。由printf输出的数据都隐含右对齐,所以A错误。Printf输出数据所占的宽度由系统决定,所以D错误。25、有以下程序:#includemain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%d\n",m);}程序运行后的输出结果是()。A、m=4B、m=2C、m=6D、m=5标准答案:C知识点解析:第一次外循环i的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j即m的值为3;第二次j的值为2,不满足条件执行m*=i*j,即m的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。2、以下叙述中正确的是A、C程序中的每一行只能写一条语句B、简单C语句必须以分号结束C、C语言程序中的注释必须与语句写在同一行D、C语句必须在一行内写完标准答案:B知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。3、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是A、一条C语句可能会被转换成多条机器指令B、一条C语句对应转换成一条机器指令C、一条C语句可能会被转换成零条机器指令D、某种类型和格式的C语句被转换成机器指令的条数是固定的标准答案:B知识点解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语苦的语句条数和机器指令的条数不是一对一的关系。4、若变量已正确定义并赋值,则错误的赋值语句是()。A、a+a+1:B、a=sizeof(double);C、a=d‖c;D、a+1=a:标准答案:D知识点解析:赋值号“=”的左边必须是一个变量名。5、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:只有B)选项369可以用无符号整数来表示和存储。A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。选项D)是一个整数集合得用数组来存储。6、数据库系统中完成查询操作使用的语言是()。A、数据操纵语言B、数据定义语言C、数据控制语言D、数据并发语言标准答案:A知识点解析:数据库管理系统提供了相应的数据语言:数据定义语言(DDL):该语言负责数据的模式定义与数据的物理存取构建。数据操纵语言(DML):该语言负责数据的操纵,包括查询与增、删、改等操作。数据控制语言(DCL):该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。7、设二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为A、HGFEDCBAB、ABCDEFGHC、ABCDHGFED、DCBAHGFE标准答案:A知识点解析:前序遍历(DLR)是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根芹右;中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游,可记做左根右;后序遍历(LRD)是二叉树遍历的一种,也叫做后根遍历、后序周游,可记做左右根。根据题中前序和中序序列均为ABCDEFGH,可画出二义树,该二叉树是一个子结点全部在右侧二义树,然后根据后序遍历方法,可得出后序遍历为HGFEDCBA。8、关于C语言标识符,以下叙述中错误的是()。A、标识符可全部由数字组成B、标识符可全部由下画线组成C、标识符可全部由小写字母组成D、标识符可全部由大写字母组成标准答案:A知识点解析:c语言标识符只能由字母、数字、下画线构成,且只能以字母、下画线开头,故选项A不正确。9、有如下程序段:int*p,x,y=1;p=&x;*p=10;x=*p+y;执行该程序段后,x的值是()。A、10B、11C、12D、编译出错标准答案:B知识点解析:因为p指向x,*p=x,当*p=10时x=*p+y=10+1=11。10、设有某函数的说明为:int*func(inta[10],intn);则下列叙述中,正确的是()。A、形参a对应的实参只能是数组名B、说明中的a[10]写成a[]或*a效果完全一样C、func的函数体中不能对a进行移动指针(如a++)的操作D、只有指向10个整数内存单元的指针,才能作为实参传给a标准答案:B知识点解析:考查数组名作为函数参数。传递给形参的实参可以是数组名,还可以是指向该数组的指针变量,选项A错误;a[10]、a[]、*a做形参都是接受实参数组首地址,效果一样,选项B正确;数组名可以看作一个指针常量,对其进行自加自减运算相当于指针变量的自加自减,选项C错误;数组名作为函数参数时,只传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的长度,形参数组和实参数组长度也可以不同,选项D错误。故答案选B。11、以下选项中,能用作用户标识符的是()。A、_0_B、8_8C、voidD、unsigned标准答案:A知识点解析:C语言中的标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字void与unsigned,所以错误。12、某体统结构图如下图所示该系统结构图的深度是()。A、1B、2C、3D、4标准答案:C知识点解析:在系统结构图中,深度表示控制的层数,由图中可以看出,答案选C。13、下面程序运行后的输出结果是()。#include<stdio.h>main(){inta[5]={1,0,4,2,0},b[5]={1,2,3,4,5},i,s=0;for(i=0;i<5;i++)s=s+b[a[i]];printf(’’%d\n’’,s);}A、12B、15C、11D、8标准答案:A知识点解析:这道题目是计算一维数组b中某些元素的和。这些元素的下标值是一维数组a中元素值。s=0+b[1]+b[0]+b[4]+b[2]+b[0]=2+1+5+3+1=12。14、若变量已正确定义,则语句s=32;s^=32;printf("%d",s);的输出结果是()。A、-1B、0C、1D、32标准答案:B知识点解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果为1,否则结果为0,题目中两个值相同,所以结果为0。15、设有定义:inta;floatb;,执行seanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0<回车>,则a和b的值分别是()。A、87和6.0B、876和543.0C、87和543.0D、76和543.0标准答案:A知识点解析:在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将87赋给变量a,把6.0赋给float型变量b。16、表达式:(int)((double)9/2)一9%2的值是()。A、5B、4C、3D、2标准答案:C知识点解析:C语言的计算过程与常规相似,这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。17、设intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。A、*p=*q;B、p=*q;C、*p=n1;D、p=q;标准答案:A知识点解析:本题考查指针的使用。指针p和q分别指向变量n2和n1,所以可以用*p代替n2,*q代替n1。18、C语言中最基本的数据类型包括()。A、整型、实型、逻辑型B、整型、字符型、数组C、整型、实型、字符型D、整型、实型、结构体标准答案:C知识点解析:C语言中最基本的数据类型包括整型、实型、字符型。19、若有以下程序#includechar*a=’’you’’;charb[]=’’WelcomeyoutoChina!’’;main(){inti,j:0;char*p;for(i=0;b[i]!=’\0’;i++){if(*a=b[i]){p=a;for(j=i;*p!=’\0’;j++){if(*P!=b[j])break;p++;}if(*p=’\0’)break;}}printf(’’%s’’,&b[i]);}则程序的输出结果是A、youtoChina!B、toChina!C、meyoutoChina!D、China!标准答案:A知识点解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有予串a,如果含有则退出,此时i为子串a在字符串b中第一次出现的位置。因此最后的输出函数则从第i个字符开始一直输出到字符串的末尾。20、以下关于宏的叙述中错误的是()。A、宏名必须用大写字母构成B、宏替换不具有计算功能C、宏替换不具有计算功能D、宏替换不占用运行时间标准答案:A知识点解析:宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,故选A。21、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:由关系T中的数据可以看出,其数据由属于关系R但是不属于关系S的数据组成。所以关系T是由关系R和S通过差运算得到的。22、执行程序时,给变量x输入10,则以下程序的输出结果是()。intfun(intn)main(){if(n==1)return1;{intx;elsescanf(’’%dt’’,&x);x=fun(x);return(n+fun(n—1));prinff(’’%d\n’’,x);}}A、45B、50C、60D、55标准答案:D知识点解析:本题在函数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+6+5+4+3+2+1=55。23、有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序的运行结果是()。A、33B、197C、143D、28标准答案:C知识点解析:本题考查带参数的宏定义,s为带参数的宏定义,运行s(k+j)为4*(k+j)*k+j+1=143,C选项正确。24、若有以下语句typedefstructS{intg;charh;}T;以下叙述中正确的是A、可用S定义结构体变量B、可用T定义结构体变量C、S是struct类型的变量D、T是structS类型的变量标准答案:B知识点解析:本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。25、下列叙述中错误的是()。A、C程序对预处理命令行的处理是在程序执行过程中进行的B、预处理命令行的最后不能以分号表示结束C、#defineMAX是合法的宏定义命令行D、在程序中,凡是以“#”开始的语句行都是预处理命令行标准答案:A知识点解析:本题考查预处理命令行。预处理是在程序编译之前进行的,所以A选项错误。26、假定已建立以下链表结构,且指针p和q已指向如图所示的节点。则下列选项中可将q所指节点从链表中删除并释放该节点的语句组是()。A、p->next=q->next;free(q);B、p=q->next;free(q);C、p=q;free(q);D、(*p).next=(*q).next;free(p);标准答案:A知识点解析:本题考查删除链表中的节点操作。其方法是将要删除节点的上个节点的下个节点指向要删除节点的下个节点,然后释放该要删除的节点,所以选项A正确。27、以下能正确定义且赋初值的语句是A、intn1=n2=10:B、charc=32;C、floatf+1.1:D、doublex=12.3E2.5;标准答案:B知识点解析:本题主要考查变量的定义和赋值,C语言中变量的定义形式为:类型说明符变量名=初始值:选项A)中。n1和n2只能单独赋初值;选项B)正确,定义了一个字符变量c,初值为32;选项C错误,初值设置自身不能参与运算;选项D)中字母E后面的指数必须是整数。28、以下选项中可用作C程序合法实数的是A、3.0e0.2B、E9C、.1e0D、9.12E标准答案:C知识点解析:C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数。29、若有定义语句:chara=’\82’;则变量aA、包含1个字符B、说明不合法C、包含2个字符D、包含3个字符标准答案:B知识点解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用’\ddd’3位八进制数代表的一个ASCII字符,也可以’\xhh’2位十六进制数代表的一个ASCII字符。选项A)中的八进制表示出现字符8,非法。30、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf("%d\n",y);}程序运行后的输出结果是A、2B、0C、1D、3标准答案:B知识点解析:x=1,if和elseif的条件都不满足,故y值不改变输出。31、以下关于结构化程序设计的叙述中正确的是()。A、在C语言中,程序的模块化是利用函数实现的B、结构化程序使用goto语句会很便捷C、一个结构化程序必须同时由顺序、分支、循环三种结构组成D、由三种基本结构构成的程序只能解决小规模的问题标准答案:A知识点解析:goto语句会导致程序结构混乱,所以结构化程序中限制使用goto语句,选项B)错;一个结构化的程序可以依据该程序要实现的功能选用顺序、分支、循环这三种基本结构中的某几种或者全部使用,不是必须都用上,选项C)错;已经证明,由这三种基本结构组成的算法可以解决任何复杂的问题,选项D)错;程序的模块化是指把程序要解决的总目标分解为若干目标,再进一步分解为具体的小目标,每个小目标即为一个模块,而函数是C语言的基本模块,实现某一模块的具体功能。答案选A)。32、有以下程序#incltadeintfun(chars[])main(){intn=0;{chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};while(*s<=’n’9&&*s>=’n’0)printf("%d\n",fun(s));{n=10*n+*s-’0’;s++;}}return(n);}程序的运行结果是A、61490B、61C、9D、5标准答案:B知识点解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。所以在主函数中调用fun(s)时,将把字符数组s中的数字组成一个数输出。因为当指针s指向数组的第3位时,即字符’*’,循环条件不成立,循环结束,返回n的值。所以输出n的值为61。33、有以下程序#includemain(){char*s="120119110";intn0,n1,n2,nn,i;n0=n1=n2=nn=i=0;do{switch(s[i++]){default:nn++;case’0’:n0++;case’1’:n1++;case’2’:n2++;}}while(s[i]);printf("n0=%d,n1=%d,n2=%d,nn=%d\n",n0,n1,n2,nn);}程序的运行结果是()。A、n0=3,n1=8,n2=9,nn=1B、n0=2,n1=5,n2=1,nn=1C、n0=2,n1=7,n2=10,nn=1D、n0=4,n1=8,n2=9,nn=1标准答案:A知识点解析:switch语句执行过程中,default语句块最后执行,case或者default只是作为一个入口,如果执行完某一个case或者default语句块之后没有遇到break,则继续往下执行。该程序中的循环是遍历数组s中的元素:为0时,n0、n1、n2均自增1;为1时,n1、n2自增1;为2时,只有n2自增1;其他情况,nn、n0、n1、n2均自增1;数组s中有2个?0?,5个?1?,1个?2?和1个?9?,循环终止的条件是字符串末尾的?\0?,对应的整数为0,所以答案选"n0=3,n1=8,n2=9,nn=1"。34、有以下程序#include<stdio.h>intfun(){staticintx=1;main(){inti,s=l;x+=1;for(i=1;i<=5;i++)s+=fun();returnx;}printf("%d\n",s);}程序运行后的输出结果是A、11B、21C、6D、120标准答案:B知识点解析:这道试题主要考查了局部静态变量的应用。在函数fun()中定义了局部静态变量整型x,其初值等于1,在主函数中循环执行5次,第一次变量s的值等于3,变量x的值等于2,第二次变量s的值等于6,变量x的值等于3,第三次变量s的值等于10,变量x的值等于4,第四次变量s的值等于15,变量x的值等于5,第五次变量s的值等于21,变量x的值等于6。35、有以下程序(注:字符a的ASCII码值为97)main(){char*s={"abc"};do{printf("%d",*s%10);++s;}while(*s);}程序运行后的输出结果是A、abcB、7890C、979899D、789标准答案:D知识点解析:因为小写字符a,b,c的ASCII的值分别为97,98,99,而在dowhile循环语句中,每次对字符的ASCII的值取余数并输出。第一次循环输出7,第二次循环输出8,第三次循环输出9。36、以下语句中存在语法错误的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?"};D、charss[6][20];ss[1]="right?";标准答案:A知识点解析:选项A中定义了二维数组ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C和A不同,选项C为指针数组,对于指针变量可以保存常量字符串的地址。37、下列语句组中,正确的是A、char*s;s="Olympic";B、chars[7];s="Olympic";C、char*s;s={"Olympic"};D、chars[7];s={"Olympic"};标准答案:A知识点解析:选项A中定义了指针变量s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。38、若有定义:inta,b;通过语句scanf("%d;%d",&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是A、35B、3,5C、3;5D、35标准答案:C知识点解析:输入数据的格式必须与scanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入";"。39、有以下程序#includeintfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是A、2B、3C、7D、0标准答案:A知识点解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过3次递归调用,其过程可以描述为"fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2",所以最后输出结果为2。因此A选项正确。40、当变量c的值不为2、4、6时,值为"真"的表达式是A、(c>=2&&c<=6)&&(c%2!=1)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)||(c!=3)||(c!=5)标准答案:D知识点解析:逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真。所以只有选项D满足要求。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、设一棵完全二叉树共有700个结点,则此二叉树中的叶子结点数为A、85B、120C、250D、350标准答案:D知识点解析:①具有n个结点的完全二叉树的深度为[long2n]+1,计算出该完全二叉树的深度为10。②设度为0的结点(即叶子结点)为n0,度为1的结点为n1,度为2的结点为n2,总结点数为n。深度为k。n=n1+n2+n0,由于n0=n2+1则n2=n0-1,故n=n1+n0-1+n0=n1+2n0-1。由于完全二叉树中度为1的结点数只有两种可能:0或1。⑨假设度为1的结点数为0即满二叉树,根据满二叉树的定义,其2m-1个结点,根据以上计算所得的深度10来计算,应有210-1=1024-1=1023个结点,显然与题目中700个结点不符。因此,度为1的结点数必然为1。故n=n1+2n0-1=1+2n0-1=2n0,则n0=n/2=700/2=350。2、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为A、16B、10C、6D、4标准答案:A知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为1的结点个数=总结点数-叶子节点数-度为2的节点数=25-54=16。3、要求定义一个具有6个元素的int型一维数组,以下选项中错误的是()。A、intN=6,a[N];B、inta[2*3]={0};C、#defineN3inta[N+N];D、inta[]={1,2,3,4,5,6};标准答案:A知识点解析:数组定义中长度不能为变量。4、有以下程序:#include<stdio.h>main(){intc[6]={10,20,30,40,50,60},*p,*s:p=c;s=&c[5];printf(″%d\n″,s—p);}程序运行后的输出结果是()。A、5B、50C、6D、60标准答案:A知识点解析:本题主要考查数组和指针。首先初始化一维数组c[6],语句p=c;表示将c[0]元素的地址赋给指针变量p;语句s=&c[5];表示将c[5]元素的地址赋给指针变量s。程序最后输出s—p,即结果为5。故A选项正确。5、数据流图中带有箭头的线段表示的是A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中带箭头的线段表示数据流。沿箭头方向传递数据的通道,一般在旁边标注数据流名。6、下面不属于软件测试实施步骤的是()。A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试的过程一般按照四个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试,所以答案选择B。7、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。A、x+1=yB、++x,y=x一一C、x=x+10=x+yD、double(x)/10标准答案:B知识点解析:A选项中不能将变量y赋给表达式,C选项的错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。8、软件工程的三要素是()。A、方法、工具和过程B、建模、方法和工具C、建模、方法和过程D、定义、方法和过程标准答案:A知识点解析:软件工程的三要素是方法、工具和过程,答案选A。9、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,所以A选项正确。10、某系统结构图如下图所示该系统结构图的宽度是()。A、2B、3C、4D、n标准答案:D知识点解析:系统结构图的宽度指的是整体控制跨度(最大模块数的层)的表示,上图中系统结构图的宽度为n,答案选D。11、有两个关系R和S如下:由关系R通过运算得到关系S,则所使用的运算为A、选择B、投影C、插入D、连接标准答案:B知识点解析:一个关系R通过投影运算后仍为一个关系R’,R’是由R中投影运算所指出的那些域的列所组成的关系。所以题目中关系s是由关系R经过投影运算所得(选择运算主要是对关系R中选择由满足逻辑条件的元组所组成的一个新关系)。12、下列叙述中正确的是A、软件过程是把输入转化为输出的一组彼此相关的资源和活动B、软件过程是软件开发过程C、软件过程是软件维护过程D、软件过程是软件开发过程和软件维护过程标准答案:A知识点解析:软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。一个软件过程定义了软件开发中采用的方法,但软件过程还包含该过程中应用的技术一一技术方法和自动化工具。过程定义一个框架,为有效交付软件工程技术,这个框架必须创建。软件过程构成了软件项目管理控制的基础,并且创建了一个环境以便于技术方法的采用、工作产品(模型、文档、报告、表格等)的产生、里程碑的创建、质量的保证、正常变更的正确管理。13、某系统总体结构如下图所示该系统结构图是A、层次结构B、网状结构C、分支结构D、循环结构标准答案:A知识点解析:层次结构(hierarchy)是一种操作系统的组织结构,其提供了一种隔离操作系统各层功能的模型。其包括归属层次结构dissonance-attributionhierarchy维度层次结构diInensionhierarchy层次结构数据库hierarchicaldatabase等。网状结构这一名词来自早期解剖学家用光学显微镜对脑干中央区网络状外观的描述,在光镜下这部分组织学的特点是神经细胞分散,形态各异,大小不等,神经纤维交错穿行其间,形成一种灰白质交织的结构,称之为网状结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。14、在数据库系统中,用户所见的数据模式为A、概念模式B、外模式C、内模式D、物理模式标准答案:B知识点解析:用户所见到的数据模式是外模式也称用户模式。它是用户的数据视图,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它有关的外模式,这样不仅可以屏蔽大量无关信息,而且有利于数据维护。15、若有定义“inta[5],*p=a;”则正确引用数组元素的是()。A、母&a[5]B、*a+2C、*(p+5)D、*(a+2)标准答案:D知识点解析:本题考查通过指针引用数组元素。用指针引用数组有以下3种形式:①“(p+n)与(a+n)”表示数组元素a[n]的地址;②“*(p+n)与木(a+n)”表示数组元素a[n];③“p[n]=*(p+n)”,都表示数组元素a[n]。选项A、B没有这种引用形式:选项C,“*(p+5)”是引用数组的第6个元素,而数组一共有5个元素,出现越界;选项D,“*(a+2)”引用数组的第3个元素。16、有以下函数定义:intfun(doublea,doubleb){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。A、if(fun(x,y)){……}B、z=fun(fun(x,y),fun(x,y));C、z=fun(fun(x,y)x,y);D、fun(x,y);标准答案:C知识点解析:本题考查函数调用时的参数传递。选项C中第一个参数的表达式不正确,因此不能得到正确的结果。17、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。A、auto和staticB、exterrl和registerC、auto和registerD、static和register标准答案:C知识点解析:auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形参可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。18、能够减少相同数据重复存储的是A、数据库B、字段C、文件D、记录标准答案:A知识点解析:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库主要特点:实现数据共享、减少数据的冗余度、数据的独立性、数据实现集中控制、数据一致性和可维护性,以确保数据的安全性和可靠性和故障恢复。19、以下叙述中正确的是A、整型常量和实型常量都是数值型常量B、常量的类型不能从字面形式上区分,需要根据类型名来决定C、预定义的标识符是C语言关键字的一种,不能另作它用D、只能在函数体内定义变量,其他地方不允许定义变量标准答案:A知识点解析:整型常量和文型常量都是数值型常量,选项A)正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B)错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的变量,选项D)错误。20、设有定义语句:char*aa[2]={"abcd","ABCD"};则以下叙述正确的是A、aa数组的两个元素只能存放含有4个字符的一维数组的首地址B、aa数组的值分别是字符串"abcd"和"ABCD"C、aa是指针变量,它指向含有两个元素的字符型数组D、aa[0]存放了字符串"abcd"的首地址标准答案:D知识点解析:题目中char*aa[2],定义了指针数组aa。有两个元素,aa[0]存放"abcd"地址,而aa[1]存放”ABCD”地址。21、以下叙述中正确的是A、a表示一个字符常量B、’\0’表示字符0C、表达式:’a’>’b’的结果是“假”D、’\"’是非法的标准答案:C知识点解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较,’a’>’b’不成立,值为假。而’\0’表示NULL,ASCII码值为0。22、以下数组定义中错误的是A、intx[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};标准答案:B知识点解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第二维的定义。在选项B中赋值号左边定义了一个3行2列的二维数组,而右边用2行3列的数字进行赋初值。所以出现了边界的越界溢出而出错。23、有以下程序#includevoidmain(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf("%d\n",c);}A、9B、7C、5D、3标准答案:D知识点解析:在这段程序中,整型变量c的初始值赋为0,在第一次执行for循环语句时,因为此时变量k的值等于1,所以在switch语句中首先执行default语句,给变量c的值加1,因为在default语句后面没有break语句,所以就会接着执行case2这条语句,再给变量c的值加1,其值变为2,这时退出switch语句块,进入第二次for循环,此时k的值等于2,就会执行switch语句块中的case2这条语句,再给变量c的值加1,这时变量c的值就是3,此时退出switch语句块,循环变量k的值加1,成为3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量c的值在屏幕上输出。24、下面选项中合法的字符常量是A、XB、’abc’C、’X’D、’\’标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字符“\”要用两个“\\”表示一个反斜杠。25、以下叙述中正确的是A、使用typedef说明新类型名时,其格式是:typedef新类型名原类型名;B、使用typedef说明新类型名时,后面不能加分号C、在程序中,允许用typedef来说明一种新的类型名D、在使用typedef改变原类型的名称后,只能使用新的类型名标准答案:C知识点解析:C语言允许用typedef说明一种新类型名。定义形式如下:typedef类型名标识符:其中,“类型名”必须是在此语句之前已定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名;typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。26、设有如下函数定义intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是A、2B、4C、3D、5标准答案:C知识点解析:这道题目考查了函数的递归调用,当执行调用语句n=fun(3)时,返回n=fun(2)+1,再执行fun(2),返回n:fun(1)+1+1,而fun(1)等于1,所以最后n的值等于3。而函数fun总共被调用了3次。即fun(3),fun(2),fun(1)。27、有以下程序#includemain(){chara=4;printf("%d\n",a=a<<1);}A、8B、16C、40D、4标准答案:A知识点解析:本题主要考查按位右移运算。a=4的二进制为00000100,a<28、由关系R1和R2得到关系R3的操作是A、交B、并C、笛卡尔积D、等值连接标准答案:D知识点解析:等值连接是关系运算-连接运算的一种常用的连接方式。是条件连接(或称θ连接)在连接运算符为“=”号时,即θ=0时的一个特例。29、以下叙述中正确的是A、continue语句的作用是:使程序的执行流程跳出包含它的所有循环B、break语句只能用在循环体内和switch语句体内C、在循环体内使用break语句和continue语句的作用相同D、break语句只能用于switch语句体中标准答案:B知识点解析:只能在循环体内和switch语句体内使用break语句。continue语句的作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。而break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体。30、以下选项中不合法的标识符是A、FORB、&aC、printD、_00标准答案:B知识点解析:合法的标识符要满足组成字符为a~z以及A~Z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误的。31、以下叙述中正确的是A、break语句不能用于提前结束for语句的本层循环B、continue语句使得整个循环终止C、使用break语句可以使流程跳出switch语句体D、在for语句中,continue与break的效果是一样的,可以互换标准答案:C知识点解析:用break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体,从而提前结束循环,而continue语句的作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。32、有以下结构体说明、变量定义和赋值语句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句有错误的是A、scanf("%d",&s[0].age);B、scanf("%c",&(ps->sex));C、scanf("%s",s[0].name);D、scanf("%d"ps->age);标准答案:D知识点解析:程序段定义了结构体变量数组s[5]和指针变量ps,然后ps指向数组s[5]中的第一个元素,因而ps->age引用s[0].age。因为在输入scanf()函数中,第2个参数应该表示为地址变量,而选项A)表示的值,而不是一个地址值。33、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。34、以下选项中,没有编译错误的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstr1[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";标准答案:A知识点解析:选项A是定义了字符数组str3[].并对其赋初值。选项B中语句str2=str1非法,字符数组小能直接赋值。选项C,D)和选项B一致。35、有以下程序,执行后的输出结果是main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}A、2B、3C、1D、4标准答案:B知识点解析:程序使整型指针p1、p2、p3指向a、b、c值所存放的地址空间。然后再将指针变量*p1、*p2中的值的乘积赋给指针变量*p,即赋给变量c,输出c的值3。36、有下列程序:voidf(intb[]){intI;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(a);for(i=0;i<10,i++)printf("%d,",a[i]);}程序运行后的输出结果是A、1,2,3,4,5,6,7,8,9,10,B、1,2,3,4,10,12,14,16,9,10,C、1,2,6,8,10,12,7,8,9,10,D、1,2,6,8,10,12,14,16,9,10,标准答案:C知识点解析:函数voidf(intb[])的功能是对数组b[]中第2个到第5个元素的值逐个扩大2倍。所以在main()函数中,f(a)语句的作用是对数组a[10]中从a[2]到a[5]的各个数字乘以2,因而数组a[10]的元素就变成了{1,2,6,8,10,12,7,8,9,10}。37、以下叙述中错误的是A、用typedef可以说明一种新的类型名B、typedef的作用是用一个新的标识符来代表已存在的类型名C、可以用typedef说明的新类型名来定义变量D、typedef说明的新类型名必须使用大写字母,否则会出编译错误标准答案:D知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,新类型可以使用小写,所以D选项错误。38、有以下程序#inelude<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<;i++)fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=O;i<6;i++)fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++)printf("%d",a[i]);}A、1,2,3,4,5,6B、6,5,4,3,2,1,C、4,5,6,1,2,3,D、1,2,3,3,2,1,标准答案:B知识点解析:在程序中定义了一个整型数组a[6],并对它赋初值,并以写入的方式打开了文件d2.dat。然后利用一个for循环把数组a中的元素数据写入文件d2.dat中,调用函数rewind把将文件内部的位置指针重新指向一个文件的开头,再利用for循环语句把文件中的数据依次写入到倒序排列的数组a中,最后输出数组a中的数组元素。39、有以下程序#includemain(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++)printf("%d,",a[i]);}程序运行后输出结果是A、1,2,3,4,5,6,B、6,5,4,3,2,1,C、4,5,6,1,2,3,D、1,2,3,3,2,1,标准答案:B知识点解析:本题考查文件操作函数,fprintf和rewind函数,rewind函数将文件内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组a的六个数写入d2文件中,然后又将a数组从后往前覆盖到d2中的内容,所以结果为6,5,4,3,2,1,选项B正确。40、设有定义:intx=0,*p;紧接着的赋值语句正确的是A、*p=NULL;B、p=NULL;C、p=x;D、*p=x;标准答案:B知识点解析:题目中定义指针变量p,指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。不允许把一个数赋予指针变量,被赋值的指针变量前不能再加"*"说明符,因此B选项正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的:数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。2、磁盘处于写保护状态时其中的数据A、不能读出,不能删改B、可以读出,不能删改C、不能读出,可以删改D、可以读出,可以删改标准答案:B知识点解析:磁盘处于写保护状态时其中的数据可以读出来,但是不能修改和删除。3、以下叙述中正确的是()。A、函数调用时,不必区分函数名称的大小写B、调用函数时,函数名必须与被调用的函数名完全一致C、函数名允许用数字开头D、在函数体中只能出现一次return语句标准答案:B知识点解析:调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参数列表一致才能保证调用的正确性,选项B正确。C语言对大小写敏感,选项A错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下画线组成并且第一个字符不能为数字,选项C错。一个函数每次只能使用一个return语句,但是该函数体中可以有多个返回点,也就是有多条return语句,每次只从其中一点返回,选项D错。答案选B。4、关系表中的每一行记录称为一个()。A、字段B、元组C、属性D、关键码标准答案:B知识点解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。5、以下选项中,合法的一组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的表示形式是错误的。6、对如下二叉树进行后序遍历的结果为A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA标准答案:D知识点解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,先后序遍历左子树.然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D)为正确答案。7、下列选项中不符合良好程序设计风格的是A、源程序要文档化B、数据说明的次序要规范化C、避免滥用goto语句D、模块设计要保证高耦合、高内聚标准答案:D知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一、效率第二”的论点已成为当今主导的程序设计风格。良好的程序设计风格主要应注重和考虑下列几个因素:①源程序文档化,包括下列三个方面:A)符号的命名应具有一定的含义;B)正确的注释能够帮助读者理解程序;C)视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。②数据说明的方法,包括下列三个方面:A)数据说明的次序规范化:B)说明语句中变量安排有序化;C)使用注释来说明复杂数据的结构。③语句的结构应该简单直接,不应该为提高效率而把语句复杂化。④输入和输出方式和风格应尽可能方便用户的使用。8、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项A)和选项C),选项D)是整数集合,所以也排除。9、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行"错误定位"是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。10、数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是main(){chara=’1’,b=’2’;printf("%c,",b++);printf("%d\n",b-a);}A、3,2B、50,2C、2,2D、2,50标准答案:C知识点解析:本题主要考查ASCII码和自加运算。第一个printf语句中,是以字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级心理健康教育活动课教案【心舟版】
- 心理健康教育教师工作总结
- 华文版五年级上册书法教案
- 内蒙古行政职业能力模拟3
- 浙江申论2022年真题(县乡)
- 2013年7月18日上午山西朔州面试真题
- 福建行政职业能力测验真题2016年
- 2024年山林转让合同800字模板
- 新解读《GBT 41036-2021宇航用超高低温圆形电连接器通 用规范》
- 两人合伙协议书范本2024年
- 架空绝缘配电线路设计技术规程DLT6011996
- 注塑模具基本介绍PPT课件
- 课题结题成果鉴定书.doc
- 医院输血科技术人员绩效考核指标
- 大江公司高浓度磷复肥工程可行性研究报告(优秀可研报告)
- 带轴间差速器地分动器特性分析报告材料
- 急诊科护理质量控制措施
- 国家职业技能标准 (2020年版) 保健按摩师
- [复习考试资料大全]事业单位考试题库:乡村振兴试题及答案
- 如何做好群团工作
- 保险代理业务及台帐管理制度
评论
0/150
提交评论