国家二级C语言机试(选择题)模拟试卷41(共255题)_第1页
国家二级C语言机试(选择题)模拟试卷41(共255题)_第2页
国家二级C语言机试(选择题)模拟试卷41(共255题)_第3页
国家二级C语言机试(选择题)模拟试卷41(共255题)_第4页
国家二级C语言机试(选择题)模拟试卷41(共255题)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C语言机试(选择题)模拟试卷41(共9套)(共255题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、算法具有五个特性,以下选项中不属于算法特性的是A、有穷性B、简洁性C、可行性D、确定性标准答案:B知识点解析:算法的五个特性分别是:有穷性、可行性、确定性、输入和输出。2、若变量已正确定义并赋值,以下不能构成C语句的选项是A、A=a+b;B、B++;C、a=a+bD、A?a:b:标准答案:C知识点解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。3、下列叙述中正确的是A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。4、在C语言中()。A、不能使用do-while语句构成的循环B、do-while语句构成的循环必须用break语句才能退出C、do-while语句构成的循环,当while语句中的表达式值为零时结束循环D、do-while语句构成的循环,当while语句中的表达式值为非零时结束循环标准答案:C知识点解析:本题考查对do-while循环语句的理解。Do-while语句是先执行循环体,再判断条件,当条件为真时,就再次执行循环体,当条件为假时就结束循环。5、由以下while构成的循环,循环体执行的次数是intk=0;while(k=1)k++;A、一次也不执行B、执行一次C、无限次D、有语法错,不能执行标准答案:C知识点解析:循环条件表达式为赋值表达式k=1,因此循环执行无限次。6、有以下程序#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0),i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",C[i]);printf("\n");}程序的运行结果是A、2,1,4,3,6,5,8,7,0,9,B、0,9,8,7,6,5,4,3,2,1,C、1,2,3,4,5,6,7,8,9,0.D、0,1,2,3,4,5,6,7,8,9,标准答案:C知识点解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传同来给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。由此可知,在本题中,函数fun(inta,intb)的功能是实现形参整形变量a和b值的互换。当在主函数中调用fun(c[i]j,c[i+1])时,把实参变量c[i]和c[i+1]的值赋给形参变量a和b,执行完函数fun(c[i],c[i+1])时,形参变最a和b的值发生了互换,实参变量c[j]和c[i+1]的值并没有发生互换,所以输出的值为1,2,3,4,5,6,7,8,9,0。7、对象实现了数据和操作(方法)的结合,其实现的机制是A、封装B、继承C、隐蔽D、抽象标准答案:A知识点解析:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。所以选项A正确。8、若有定义语句doublex,y,*px,*PY;,执行了px=&x;py=a,y;之后,正确的输入语句是()。A、scanf(’’%lf%le’’,px,py);B、scanf(’’%f%f’’&x,&y);C、scanf(’’%f%f’’,x,y);D、scanf(’’%lf%If’’,x,y);标准答案:A知识点解析:因为x和y都是double型数据,所以输入时的格式字符应为%lf,所以B、C选项错误。D选项中的scanf(’’%lf%lf’’,x,y);应为scanf(’’%lf%lf’’,&x,&y);。9、DOS文件系统的组织结构属于A、星形结构B、网星结构C、环形结构D、树形结构标准答案:D知识点解析:DOS中目录结构是层次的,由根目录到子目录形成一个树型结构。10、设有定义:inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0则a和b的值分别是A、876和543.0B、87和6.0C、87和543.0D、76和543.0标准答案:B知识点解析:在输入函数scanf的输入格式符%2d%f中,2d表示输入的数据的宽度为’2,所以当从键盘输入876543.0<CR>时,这时把输入数字串的前两位87赋给变量a,然后将紧接着将6按照格式控制符%f的形式赋给变量b,所以b的值为6.000000。11、有以下程序charfun(char*c){if(*c<=’Z’&&*c>=’A’)*c=’A’-’a’;return*c;}main(){chars[81],*p=s;gets(s);while(*p){木P=fun(p);putchar(*p);p++;}printf("\n");}若运行时从键盘上输入OPENTHEDOOR,程序的输出结果是A、oPENtHEdOORB、openthedoorC、OPENTHEDOORD、OpenTheDoor标准答案:B知识点解析:函数fun的主要功能是判断字符是否为大写字符,如果是则转换为小写字符,主函数读入大写字符串,转换成小写。12、有以下程序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。13、下面选项中关于编译预处理的叙述正确的是A、凡是以#号开头的行,都被称为编译预处理命令行B、预处理命令行必须使用分号结尾C、预处理命令行不能出现在程序的最后一行D、预处理命令行的作用域是到最近的函数结束处标准答案:A知识点解析:在C语言中,凡是以“#”号开头的行,都称为编译预处理命令行。这些预处理命令组成的预处理命令行必须在一行的开头以“撑”号开始,每行的末尾不能用“;”号结束,以区别于C语句、定义和说明语句。根据需要,命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾。14、有以下程序intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funI(x);b=fun1(y);retum(int)(a+b);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后输出结果是A、5.00B、5C、5.21D、0.0标准答案:A知识点解析:子函数fun1(dloublea)的功能是返回a的平方值的整数部分。子函数fun2(doublex,doubley)的功能是返回x的平方值的整数部分与y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.00。15、有下列程序:main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是A、20B、45C、36D、25标准答案:D知识点解析:本题在主函数中定义了一维整型数组t[]={1,2,3,4,5,6,7,8,9};然后在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9_25,即变量s的值等于25。16、下列选项中,能够满足"只要字符串s1等于字符串s2,则执行ST"要求的是()。A、if(strcmp(s2,s1)==0)ST;B、if(s1==s2)ST;C、if(strcpy(s1,s2)==1)ST;D、if(s1-s2==0)ST;标准答案:A知识点解析:C语言中,比较两个字符串只能使用字符串处理函数中的字符串比较函数strcmp(字符串1,字符串2),若若字符串1与字符串2相同则该函数返回0,所以选项A)符合要求,答案选A)。17、有以下函数intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是A、比较两个字符串的大小B、计算s所指字符串的长度C、计算s所指字符串占用内存字节的个数D、将s所指字符串复制到字符串t中标准答案:C知识点解析:在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。18、有以下程序#includemain(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",x[i][2-i]);printf("\n");}程序的输出结果是A、1、5、0B、3、5、7C、1、4、7D、3、6、9标准答案:B知识点解析:程序首先初始化二维数组x[3][3],然后通过3次for循环,输出x[0][2]、x[1][1]和x[2][0]的值,即3、5、7。因此B选项正确。19、有以下程序#include<stdio.h>#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是A、-12B、0C、10D、-20标准答案:D知识点解析:本题主要考查的是宏替换,在程序中执行d=sub(a+b)*c这条语句时,首先要进行宏替换,依据宏SUB(a)的定义可知,上面这条语句替换为d=(a+b)-(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即d=5-5*5=-20。20、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。21、下列链表中,其逻辑结构属于非线性结构的是A、二叉链表B、循环链表C、双向链表D、带链的栈标准答案:A知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。22、有以下程序main(){inti=0;i=~i;printf("%d\n",i);}程序运行后的输出结果是A、0B、1C、8D、-1标准答案:D知识点解析:运算符(~)是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反(使每一位上的0变1,1变0)。i的初值为0,二进制位00000000,因此取反后结果为11111111,最高位为符号位,为-1的补码形式,因此输出结果为-1.23、设p是指针变量,语句p=NULL;等价于A、p=’0’;B、p=’’;C、p="";D、p=0;标准答案:D知识点解析:p=NULL;等价p=0;因此D选项正确。24、有以下程序:#include#includetypedefstruct{charname[9];charsex;intscore[2];}STU;STUf(STUa){STUb={"Zhao",’m’,85,90};inti;strcpy(,);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.sex,d.score[0],d.score[1]);printf("%s,%c,%d,%d\n",,c.sex,c.score[0],c.score[1]);}程序运行后的输出结果是()。A、Zhao,m,85,90,Qian,f,95,92B、Zhao,m,85,90,Zhao,m,85,90C、Qian,f,95,92,Qian,f,95,92D、Qian,f,95,92,Zhao,m,85,90标准答案:A知识点解析:本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。25、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={l,2,3,4,5,6},k;fp=fopen("data.dat","w+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,"%d",&k);printf("%d,",k);}fclose(fp);}程序运行后的输出结果是()。A、6,5,4,3,2,1,B、1,2,3,4,5,6,C、1,1,1,1,1,1D、6,6,6,6,6,6,标准答案:A知识点解析:fopen(“data.dat”,“w+”);w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。rewind(fp);使文件fp的位置指针指向文件开始。fprintf(fp,"%d\n",a[5-i]);将a[i]输出到fp指向的文件中。fscanf(fp,"%d",&k);将fp读入到变量k中,第一个for循环将数组中元素倒着输入到fp指向的文件中,rewind()则指向文件开始,因此打印是数组a的倒叙。故打印为6,5,4,3,2,1。答案为A选项。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、设循环队列的存储空间为Q(1:m),初始状态为空。现经过一系列正常的入队与退队操作后,front=m,rear=m-1,此后从该循环队列中删除一个元素,则队列中的元素个数为()。A、m-1B、m-2C、0D、1标准答案:B知识点解析:在循环队列中,如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m。该题中m-1<m,即rear-front<0,则该循环队列中的元素个数为(m-1)-m+m=m-1。此后从该循环队列中删除一个元素,则队列中的元素个数为m-1-1=m-2。2、软件需求规格说明书在软件开发中的作用不包括()。A、软件设计的依据B、软件可行性分析的依据C、软件验收的依据D、用户和开发人员对软件要做什么的共同理解标准答案:B知识点解析:需求分析就是分析软件用户的需求是什么,描述需求的文档称为软件需求规格说明书。软件需求规格说明书是需求分析阶段的最后成果。需求规格说明书是使开发人员获得设计和实现这些功能所需的所有必要信息,是软件设计的依据,A选项正确;软件需求规格说明书是软件测试和验收的依据,通过检查每项需求是否能通过设计测试用例或其他的验证方法,来确定产品是否确实按需求实现了,C选项正确;软件需求规格说明书对所有需求说明的用户和开发人员都只能有一个明确统一的解释,是用户和开发人员对软件要做什么的共同理解,D选项正确。可行性分析是项目立项阶段要做的工作,虽然也需要对用户需求进行调研,但此阶段不会形成软件需求规格说明书。故正确答案为B。3、设二叉树的后序序列与中序序列均为ABCDEFGH,则该二叉树的前序序列为A、HGFEDCBAB、ABCDEFGHC、ABCDHGFED、DCBAHGFE标准答案:A知识点解析:后序遍历中,最后一个字母是根结点,也就是H是根结点;在中序遍历中,根结点前面的是左子树、后面的是右子树,H后面没有,因此该树没有右子树。同理,可判断出该树是第一个完全的左予树。由此可画出这个二叉树,然后根据二叉树可的前序序列为HGFEDCBA。4、设表的长度为n。下列查找算法中,在最坏情况下,比较次数最少的是A、有序表的二分查找B、顺序查找C、寻找最大项D、寻找最小项标准答案:A知识点解析:有序表的二分法查找只适用于顺序存储的有序表。二分查找的基本方法是:将被查元素x与线性表的中间项进行比较,若中间项的值等于x,则说明查到;若小于中间项的值则在线性表的前半部分以相同的方法进行查找;若大于中间项的值则在线性表的后半部分以相同的方法进行查找。在最坏情况下,二分查找需要比较log2n次。顺序查找、寻找最大项、寻找最小项,在最坏情况下,比较次数都是n次。所以选项A正确。5、下列对于软件测试的描述中正确的是A、软件测试的目的是证明程序是否正确B、软件测试的目的是使程序运行结果正确C、软件测试的目的是尽可能多地发现程序中的错误D、软件测试的目的是使程序符合结构化原则标准答案:C知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正确功能。6、表达式a+=a一=a:9的值是()。A、0B、一9C、18D、9标准答案:A知识点解析:赋值语句,从右向左执行,先执行a=9,再执行a一=a,a为0,再执行a+=a,结果仍为0。7、有以下程序#include<stdio.h>main(){inty=9;for(;y>0;y-)if(y%3=0)printf(’’%d’’,-y);}程序的运行结果是A、963B、852C、741D、875421标准答案:B知识点解析:y的值的初值为9,所以在for循环中,当y的值为9、6或3时,if语句的条什成立,执行输出语句,输出表达式一y的值。因为自减符号在y的前面,所以首先y的自减1,然后再输出y的值,故输出结果为852。8、层次型、网状型和关系型数据库划分原则是A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:根据数据之间的联系方式,可以把数据库分为层次型、网状型和关系型数据库,它们是根据数据之间的联系方式来划分的。9、下面对类-对象主要特征描述正确的是A、对象唯一性B、对象无关性C、类的单一性D、类的依赖性标准答案:A知识点解析:对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。对象具有的性质,类也具有。故A选项正确。10、有以下程序#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。11、以下程序的输出结果是()。#include#includeintfun(intn)main(){int*P;{inta;p=(int*)malloc(sizeof(int));a=fun(10);*p=n;return*p;printf(’’%d\n’’,a+fun(10));}}A、21B、20C、10D、11标准答案:B知识点解析:本题考查内存申请。函数fun(intn)的功能是在内存中每次动态地申请一个整型变量的存储空间,把整型变量n的值存入这个存储空间中。所以当在主函数中执行输出语句时,a+fun(10)的值等于20。12、有以下程序#includemain(){inta=2,b;b=a<<2;printf("%d\n",b);}程序运行后的输出结果是A、2B、4C、6D、8标准答案:D知识点解析:本题考查位运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。13、以下错误的定义语句是A、intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3)};B、intx[][3]={{0},{1},{1,2,3}};C、intxn[3]={1,2,3,4};D、intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3)};标准答案:D知识点解析:一维数组定义和初始化是允许省略行下标,不允许省略列下标。14、以下叙述中错误的是A、预处理命令行的最后不能以分号表示结束B、C程序对预处理命令行的处理是在程序执行的过程中进行的C、#defineMAx是合法的宏定义命令行D、在程序中凡是以’’}#’’开始的语句行都是预处理命令行标准答案:B知识点解析:预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define标识符字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。15、若x和y代表整型数,以下表达式中不能正确表示数学关系|x—y|<10的是A、abs(x-y)<10B、x-y>-10&x-y<10C、!(x-y)<-10‖!(y-x)>10D、(x-y)*(x—y)<100标准答案:C知识点解析:数学关系}x-y}<10表示x和y的差的绝对值小于10,选项A使用了abd求绝对值函数,满足要求;选项B是x和y的差值在-10和10之间,满足要求;选项C是x和y的差值大于-10或者y和x的差值小于10,不满足要。16、有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是()。A、7,4,2,B、8,7,5,2,C、9,7,6,4,D、8,5,4,2,标准答案:D知识点解析:coutinue的作用是跳出循环体中剩余的语句而进行下一次循环?第一次循环x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环?第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印--x的操作,即打印5后跳出循环?第三次判断循环条件时x的值为4,满足循环体中if条件,执行打印x--的操作,即打印4,后将x值减一,执行continue语句,跳出本次循环,第四次判断循环条件时x的为2,满足循环体中if条件,打印x--,即打印2后将x减一,执行continue语句,跳出本次循环?在进行for条件表达式中第三个表达式x--的操作后x的值为0,不满足条件结束循环?所以打印结果为8,5,4,2。17、有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是A、2B、4C、1D、死循环标准答案:C知识点解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。18、以下错误的定义语句是A、intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};B、intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C、intx[][3]={{0},{1},{1,2,3}};D、intx[][3]={1,2,3,4};标准答案:B知识点解析:二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2]。其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。如对二维数组全部元素赋初值,则第一维的长度可以不给出。但如果对x[4][]赋值,只确定行数,而不确定列数,就无法正确赋值。因此B选项正确。19、有以下程序#includestructSTU{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]。20、若有以下程序#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、10B、6C、7D、3标准答案:C知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。21、以下叙述中正确的是()。A、全局变量的存储类别可以是静态类B、对于变量而言,"定义"和"说明"这两个词实际上是同一个意思C、在复合语句中不能定义变量D、函数的形式参数不属于局部变量标准答案:A知识点解析:全局变量可以用static修饰,限制该变量只能在当前文件有效而不能被其他文件访问,选项A)正确;变量的说明只是向编译程序描述变量类型,但不为该变量分配存储空间,变量的定义才为该变量分配存储空间,选项B)错误;在语句块内可以定义变量,定义的变量为局部变量,选项C)错误;函数的形参相当于在函数内部定义的一个变量,属于局部变量,选项D)错误;答案选A)。22、下面选项中的程序段,没有编译错误的是A、char*sp,s[10];sp="Hello";B、char*sp,s[10];s="Hello";C、charstr1[10]="computer",str2[10];str2=str1;D、charmark[];mark="PROGRAM";标准答案:A知识点解析:本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义charmark[],必须指定长度或者直接初始化。23、有以下程序#include<stdio.h>intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=l;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4),{11,12,13,14},{2l,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的运行结果是A、31B、34C、4D、32标准答案:A知识点解析:函数fun(int(*s)[4],intn,intk)的功能是返回二维数组第k列的最大元素。在主函数中由于二维数组a[4][4]已经初始化,所以fun(a,4,0)的值是二维数组a[][]第1列中的最大元素31。24、以下叙述中正确的是A、C语句必须在一行内写完B、C程序中的每一行只能写一条语句C、C语言程序中的注释必须与语句写在同一行D、简单C语句必须以分号结束标准答案:D知识点解析:C语句可以跨行来写,但是必须以分号结束,所以A选项错误。C程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C选项错误。25、下面关于"EOF"的叙述,正确的是A、EOF的值等于0B、EOF是在库函数文件中定义的符号常量C、文本文件和二进制文件都可以用EOF作为文件结束标志D、对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF标准答案:B知识点解析:在C语言中,或更精确地说成C标准函数库中表示文件结束符(endoffile)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。2、在快速排序法中,每经过一次数据交换(或移动)后()。A、只能消除一个逆序B、能消除多个逆序C、不会产生新的逆序D、消除的逆序个数一定比新产生的逆序个数多标准答案:B知识点解析:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。快速排序的思想是:从线性表中选取一个元素,设为T,将线性表中后面小于T的元素移到前面,而前面大于T的元素移到后面,结果就将线性表分成两部分(称两个子表),T插入到其分割线的位置处,这个过程称为线性表的分割,然后再用同样的方法对分割出的子表再进行同样的分割。快速排序不是对两个相邻元素进行比较,可以实线通过一次交换而消除多个逆序,但由于均与T(基准元素)比较,也可能会产生新的逆序。3、设有以下程序段:intx=2009,y=2010;printf("%d\n",(x,y));则以下叙述正确的是()。A、输出语句中格式说明符的个数少于输出项的个数,不能正确输出B、运行时产生错误信息C、输出值为2009D、输出值为2010标准答案:D知识点解析:程序段中的输出项是一个逗号表达式(x,y),其值就是右边变量y的值,因此输出项的个数和控制转换说明符的个数相等,输出为2010。C语言规定,若输出格式说明符的个数少于输出项的个数时,多余的输出项不予输出;若输出格式说明符的个数多余输出项的个数时,则缺少的输出项输出不定值,并不产生出错信息。4、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以3种数据库的划分原则是数据之间的联系方式。5、下面选项中合法的字符常量是A、XB、’abc’C、’X’D、’\’标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字符“\”要用两个“\\”表示一个反斜杠。6、函数rewind(fp)的作用是()。A、使fp指定的文件的位置指针重新定位到文件的开始位置B、将fp指定的文件的位置指针指向文件中所要求的特定位置C、使fp指定的文件的位置指针向文件的末尾D、使fp指定的文件的位置指针自动移至下一个字符位置标准答案:A知识点解析:位置指针重返文件头函数rewind()的调用形式为:rewind(fp)。其中,“fp”是指向文件的文件型指针。rewind(fp)的功能是:使fp指定的文件的位置指针重新定位到文件的开始位置。7、结构化程序由三种基本结构组成,三种基本结构组成的算法A、可以完成任何复杂的任务B、只能完成部分复杂的任务C、只能完成符合结构化的任务D、只能完成一些简单的任务标准答案:A知识点解析:结构化程序由3种基本结构组成:顺序结构、选择结构和循环结构。已经得到证明,由3种基本结构组成的算法结构可以解决任何复杂的问题。8、表达式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5标准答案:C知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。9、下面描述中,不属于软件危机表现的是A、软件过程不规范B、软件开发生产率低C、软件质量难以控制D、软件成本不断提高标准答案:A知识点解析:软件危机主要表现在以下6个方面:①软件需求的增长得不到满足。②软件开发成本和进度无法控制。③软件质量难以保证。④软件不可维护或维护程度非常低。⑤软件的成本不断提高。⑥软件开发生产率的提高赶不上硬件的发展和应用需求增长。10、有如下说明:intarray[10]={1,2,3,4,5,6,7,8,9,10},*p=array;则数值为9的表达式是________。A、p+8B、*p+9C、*p+=9D、*(p+8)标准答案:D知识点解析:指针P指向数组array,9所在的元素是array[8],与array[0]的地址差值为8,所以正确的访问形式是*(p+8)或p[8]。11、定义学生选修课程的关系模式如下:S(S#,Sn,Sd,Sa)(其属性分别为学号、姓名、所在系、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课);SC(S#,C#,C)(其属性分别学号、课号和成绩)。检索选修课程名为“操作系统”的成绩在90分以上(含90分)的学生姓名的表达式是()。A、

B、

C、

D、

标准答案:A知识点解析:课程名“操作系统”需要在C表中进行查找,成绩在“90分以上(含90分)”需要在SC表中查找,“学生姓名”需要在S表中查找,所以必须对上述三个表进行连接后再进行操作。具体操作是:先从C表中选出课程名是“操作系统”的行σCn=“操作系统”(C),但是只要“课程”列πC#(σCn=“操作系统”(C)),得到筛选结果的一个小表;在SC表中找出“90分以上(含90分)”的行σG>=90(SC),得到第二个小表;两个小表进行连接操作并从结果中取“学号”列πS#(πC#(σCn=“操作系统”(C))σG>=90(SC));这样得到的结果再与S表连接并从结果中只取“姓名”列πSn(πS#(πC#(σCn=“操作系统”)(C))σG>=90(SC))S)。12、以下程序的输出结果是()。#includeintm=13;intfun(intx,inty){intm=2;retum(x*y-m);}main(){inta=7,b=6;printf("%d",fun(a,b)/m);}A、1B、3C、7D、10标准答案:B知识点解析:本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因而在fun函数内m的应该等于2,main中的m为13,所以返回值为7x6-2=40,而fun(a,b)/m值为40/13=3。13、以下叙述中正确的是A、由&&构成的逻辑表达式与由‖构成的逻辑表达式都有“短路"现象B、C语言的关系表达式:0C、逻辑“非”(即运算符!)的运算级别是最低的D、逻辑“或”(即运算符‖)的运算级别比算术运算要高标准答案:A知识点解析:逻辑表达式的运算比较复杂,有短路现象,也就是首先计算“逻辑与”或者“逻辑或”运算的第一个运算量的值,根据表达式的值决定是否进行第二个量的值的计算。“逻辑与”和“逻辑或”运算低于关系运算和算术运算。但是“逻辑非”运算却高于算术运算。14、以下选项中与iffa:1)a=b;elsea++;语句功能不同的switch语句是A、switch(a=1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a=1){case1:a=b;break;case0:a++;}标准答案:A知识点解析:ifelse语句的含义是,如果变量a的值等于1,则把变量b的值赋给变量a,否则,变量a的值加l。在本题的4个选项中,与其含义不同的是选项A),表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变量a。15、代码编写阶段可进行的软件测试是A、单元测试B、集成测试C、确认测试D、系统测试标准答案:A知识点解析:单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位是模块,可在代码编写阶段测试。集成测试也称联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功。系统测试主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。功能测试主要针对包括功能可用性、功能实现程度(功能流程&业务流程、数据处理&业务数据处理)方面测试。16、下列定义变量的语句中错误的是()。A、int_int;B、doubleint_;C、charFor;D、floatUS$:标准答案:D知识点解析:C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项A定义的变量标识符int和选项B定义的变量标识符血与C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有特殊字符$,因而其不符合C语言的变量命名规定。17、以下选项中,能用作数据常量的是()。A、115LB、0118C、1.5e1.5D、o115标准答案:A知识点解析:数据后面加’L’表示该数据为长整型,选项A)正确。以0开头表示为八进制整常数,不能出现数字8,选项B)错;科学计数法中,e/E前后必须有数字并且后面的数字必须为整数,选项C)错;八进制数是以数字0开始而不是字母o,选项D)错。答案选A)。18、以下叙述正确的是A、C语言程序是由过程和函数组成的B、C语言函数可以嵌套调用,例如:fun(fun(x))C、C语言函数不可以单独编译D、C语言中除了main函数,其他函数不可作为单独文件形式存在标准答案:B知识点解析:在C语言中,允许函数的嵌套调用,即递归调用。在C语言中不存在过程的概念,在C语言中函数允许单独编译,可以作为单独的文件形式存在。19、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为A、笛卡尔积B、交C、并D、自然连接标准答案:D知识点解析:在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系R,S,T的结果可知关系T是由关系R和S进行自然连接得到的。20、C语言中double类型数据占字节数为A、4B、12C、8D、16标准答案:C知识点解析:double类型所占字节为8。21、在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往高地址移动,指向首元素后面一个元素的地址。22、有以下程序#include#defineSUB(X,Y)(X+1)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));)程序运行后的输出结果是A、20B、12C、16D、25标准答案:C知识点解析:宏展开的结果(a+++1)*b++,后缀自加表达式参加运算,先用a和b的初值得到表达式的值,进行计算,然后a和b在自加。因此计算结果为16。23、有以下程序#includemain(){printf("%d\n",NULL);}程序运行后的输出结果是()。A、0B、变量无定义,输出不确定C、-1D、1标准答案:A知识点解析:NULL为一个符号常量,对应的ASCII码值为0,答案选A。24、若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是A、a[0][4]B、a[1][3]C、a[0][3]D、a[1][4]标准答案:B知识点解析:本题考查多维数组的定义和使用。a是一个二维数组,有3行6列。即每行6个元素,a的第10个元素位于第二行的第四个位置,即a[][3]。25、若有定义语句:doublex,y,*px,*py;执行px=&x;py=&y;正确的输入语句是A、scanf("%f%f"&x,&y);B、scanf("%f%f",x,y);C、scanf("%1f%le",px,py);D、scanf("%1f%1f",x,y);标准答案:C知识点解析:本题考查scanf语句。scanf()函数的一般格式为:scanf("格式字符串",输入项首地址表),对于。aouble类型数据,输入时候要加上1修饰,否则会产生错误的输入信息,同时输入项必须是地址,可以使保存变量地址的指针变量。26、有以下程序main(){inta[5]={2,4,6,8,10),**P,**k;P=a:k=&p;printf(’’%d’’,*(p++));printf(’’%d\n’’,**k);}程序运行后的输出结果是A、44B、24C、22D、46标准答案:B知识点解析:主函数中指针变量p指向数组a中下标为0的元素,k指向p,那么*(p++)的值为2,p指向数组中下标为1的元素,k指向p,所以**k的值为4。27、有以下程序#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]="ace",aa[10]="bbxxyy";fun(ss,aa);printf("%s,%s\n",ss,aa);}程序的运行结果是A、ace,bbxxyyB、accxxyy,bbxxyyC、accbbxxyy,bbxxyyD、accxyy,bbxxyy标准答案:C知识点解析:fun函数中,第1个while循环语句使指针t指向字符串的末尾。第2个while循环语句实现了字符串t和s的连接。主函数中语句fun(ss,aa)的功能是将字符串aa连接到字符串ss的末尾。28、有以下程序#includeintf(intx){inty;if(x==0‖x==1)return(3);y=x*x—f(x一2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是A、9B、0C、6D、8标准答案:C知识点解析:主函数调用f()函数,将实参3传递给x,进行if条件语句的判断不成立,接着执行y=3*3-f(1),再执行f(1),而f(1)满足if条件语句,所以f[1)的值为3,代入y=3*3-f(1)=9-3=6。29、以下叙述中正确的是A、语句“charstr[10]="string!";”和“charstr[10]={"string!"};”并不等价B、对于一维字符数组,不能使用字符串常量来赋初值C、对于字符串常量“string!”,系统已自动在最后加入了“’\0’”字符,表示串结尾D、在语句charstr[]="string!";中,数组str的大小等于字符串的长度标准答案:C知识点解析:在C语言中,字符串是借助于字符型一维数组来存放的,可以借助在定义时初始化以及输入来把字符串存入数组,并规定以字符’\0’作为“字符串结束标志”。’\0’是一个转义字符,称为空值,它的ASCII码值为0。’\0’作为标志占甩存储空间,但不计入字符串的实际长度。在C语言中,系统在每个字符串的最后自动加入一个字符(’\0’)作为字符串的结束标志。30、若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);标准答案:B知识点解析:函数说明的一般形式为:类型名函数名(参数类型1,参数类型2,……)。因为函数intfun(doublex[10],int*n)的第1个形式参数是一个双精度型的一维数组,第2个参数是一个整型指针,并返回一个整型值。一维数组的名字表示的是一维数组的地址。31、有以下程序,程序运行后的输出结果是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、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2标准答案:B知识点解析:在主函数定义了3个整数指针变量p,q,r,并且使p指向m,q指向n,再执行“r=p;p=q;q=r;”这三条语句,使q指向m,p指向n,再输出变量“m,n,*p,*q”时,它们值分别为1,2,2,1。32、有以下程序structS{inta;intb;};main(){structSa,*p=&a;a.a=99;printf("%d\n",_______);}程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A、a.aB、*p.aC、p->aD、(*p).a标准答案:B知识点解析:如果p指向结构体,那么下面三种形式都可以访问结构体的成员:结构体变量.成员名、(*p).成员名、p->成员名。33、有以下程序main(){unsignedchara=2,b=4,c=5,d:d=a|b;d&=c;printf("%d\n",d);}程序运行后的输出结果是A、3B、5C、4D、6标准答案:C知识点解析:本题考查位运算,|为按位或运算,&为按位与运算,按位与(&)运算符的作用是:把参加运算的两个运算数按对应的二进制位分别进行“与”运算,当两个相应的位都为1时,该位的结果为1;否则为0。按位或(1)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为1,则该位的运算结果即为1;只有当两个相应位的数都为0时,该位的运算结果才为0。首先d=2|4值为6,d=6&5值为4。34、以下叙述中正确的是A、在一个程序中,允许使用任意数量的#include命令行B、在包含文件中,不得再包含其他文件C、#include命令行不能出现在程序文件的中间D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接标准答案:A知识点解析:本题考查预处理中文件包含的概念,包含文件中可以包含其他文件,B选项错误,#include可以出现在程序文件的中间,C选项错误,包含文件被修改了,包含该文件的源程序必须重新进行编译和连接。35、下面结构体的定义语句中,错误的是A、structord{intx;inty;intz;};structorda;B、structord{intx;inty;intz;}structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;标准答案:B知识点解析:在选项B)中,由于在定义完结构体后缺少分号“;”,所以这是一条不完整的语句,因而是错误的。36、以下选项中的编译预处理命令行,正确的是()。A、#definePI3.14B、##defineeps0.001C、#DEFINETRUED、#defineintINT标准答案:A知识点解析:宏定义的一般形式为"#define宏名字符串(或数值)",宏名的命名规则要符合用户标识符的命名规则,所以答案选A。37、以下叙述中正确的是()。A、在程序中,允许用typedef来说明一种新的类型名B、使用typedef说明新类型名时,其格式是:typedef新类型名原类型名;C、使用typedef说明新类型名时,后面不能加分号D、在使用typedef改变原类型的名称后,只能使用新的类型名标准答案:A知识点解析:typedef为类型定义符,使用的一般形式为"typedef原类型名新类型名;",它用于给已知类型取别名,作用是用"新类型名"代替"原类型名",并没有产生新的数据类型,而且原有类型名依然有效,"新类型名"与"原类型名"允许同时使用,所以答案选A。38、有以下程序#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、6,5,4,3,2,1,B、1,2,3,4,5,6,C、4,5,6,1,2,3,D、1,2,3,3,2,1,标准答案:A知识点解析:文件d2.dat以读写的方式"w+"打开,第一个for循环将数组a中的数据写入该文件中,然后将文件指针置于文件首,顺序读出文件中的数据并逆序存放在数组a中,所以输出结果为选项A)。39、对下列二叉树进行前序遍历的结果为A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ标准答案:C知识点解析:前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则:①访问根结点;②前序遍历左子树;③前序遍历右子树,C正确。40、以下叙述中正确的是A、if语句只能嵌套一层B、if子句和else子句中可以是任意的合法的C语句C、不能在else子句中再嵌套if语句D、改变if-else语句的缩进格式,会改变程序的执行流程标准答案:B知识点解析:A选项中,if语句的嵌套没有规定层数;C选项中,可以在else子句中再嵌套if语句;D选项中,改变if-else语句的缩进格式,不会改变程序的执行流程,需要注意if和else的配对问题。因此B选项正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、数据字典(DD)所定义的对象都包含于()。A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典,因此选A选项。2、下列关于线性链表的叙述中,正确的是A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上都不正确标准答案:C知识点解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。3、一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A、219B、221C、229D、231标准答案:A知识点解析:在二叉树中,叶子结点个数为n0,则度为2的结点数n2=n0-1。本题中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点数+度为1的结点数+度为2的结点数=70+80+69=219。4、下列叙述中正确的是A、循环队列是线性结构B、循环队列是线性逻辑结构C、循环队列是链式存储结构D、循环队列是非线性存储结构标准答案:A知识点解析:为充分利用向量空间,克服“假溢出”现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(CircularQueue)。线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。5、以下叙述中错误的是()。A、算法正确的程序可以有零个输入B、算法正确的程序最终一定会结束C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法的特征:①有穷性,一个算法(对任何合法的输人)在执行有穷步后能够结束,并月.在有限的时间内宄成;②确定性,算法中的每一步都有确切的台义;③可行性,鼻法中的操作能够用已经买现的基本运算执行有限次来实现;④输入,一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件;⑤输出,一个算法有一个或者多个输出,以反映出数据加工的结果,所以C选项错误。6、C语言中char类型数据占字节数为A、2B、3C、1D、4标准答案:C知识点解析:C语言中char类型数据占字节数为1。7、下列有关宏的叙述中不正确的是()。A、宏名必须用大写字母表示B、双引号中出现的宏名不进行替换C、宏名无类型D、和其他语句的编译同时进行标准答案:A知识点解析:本题考查宏的使用规则:①字符替换格式为“#define标识符字符串”,其中“标识符”称为宏名,无类型;②双引号中出现的宏名不替换;③宏名的定义通常用大写字母,但不是必须用大写字母;④宏定义不是赋值语句,不做语法检查。8、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。9、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先能被删除标准答案:A知识点解析:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A。10、设变量已正确定义并赋值,下列表达式中正确的是()。A、x=y+z+5,++yB、iut(15.8%5)C、x=y*5=x+zD、x=25%5.0标准答案:A知识点解析:B选项与D选项中取模运算符%的左右两个操作数均应为整数,所以错误。C选项中不能将x+y的值赋给表达式y*5,所以C选项错误。11、算法的时间复杂度是指()。A、算法的长度B、执行算法所需要的时间C、算法中的指令条数D、算法执行过程中所需要的基本运算次数标准答案:D知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。12、对软件系统总体结构图,下面描述中错误的是A、深度等于控制的层数B、扇入是一个模块直接调用的其他模块数C、扇出是一个模块直接调用的其他模块数D、原子模块一定是结构图中位于叶子结点的模块标准答案:B知识点解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,.把系统按功能逐次分割成层次结构,使每~部分完成简单的功能且各个部分之间又保持一定的联系,这就是功能设计。在设计阶段,基于这个功能的层次结构把各个部分组合起来成为系统。13、软件需求规格说明书的作用不包括()。A、软件设计的依据B、软件可行性研究的依据C、软件验收的依据D、用户与开发人员对软件要做什么的共同理解标准答案:B知识点解析:《软件可行性分析报告》是软件可行性研究的依据。14、若有定义:intx[10],*pt=x;,则对x数组元素的正确引用是()。A、pt+3B、*&x[10]C、*(pt+10)D、*(x+3)标准答案:D知识点解析:没有A选项的引用形式。*与&放在一起作用抵消,但x[10]下标10超出了数组下标范围,所以B选项错误。最大只能引用到x[9],而*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。D选项正确。15、有以下程序:#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选项正确。16、有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是A、963B、852C、741D、875421标准答案:B知识点解析:v的值的初值为9,所以在for循环中,当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式一y的值。因为自减符号在y的前面,所以首先y的自减1,然后再输出y的值,故输H{结果为852。17、有以下程序#include<stdio.h>intfun(inta,intb){if(b=0)returna;、elsereturn(fun(-a,-b));}main(){printf(’’%d\n’’,fun(4,2));}程序的运行结果是A、1B、2C、3D、4标准答案:B知识点解析:由程序可知函数fun(inta,intb)是一个递归函数。所以当主函数中调用‰(4,2)时,其执行过程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值为2。18、有以下程序(说明:字母A的ASCII码值是65)#includevoidfun(char*s){while(*s){if(*s%2)printf("%c",*s);s++;}}main(){chara[]="BYTE";fun(A);printf("\n");}程序运行后的输出结果是A、BTB、YEC、YTD、BY标准答案:B知识点解析:本题中执行fun(a)时,会取a的第一个字母B,因为B的ASCII码为66,所以不会输出B,函数只会输出ASCII码为奇数的字母,Y的ASCII码为89,T的ASCII码为84,E的ASCII码为69。因此B选项正确。19、下列叙述中错误的是()。A、C程序函数中定义的自动变量,系统不自动赋确定的初值B、在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内C、C程序函数中定义的赋有初值的静态变量,每调用一次函数赋一次初值D、C程序函数的形参不可以说明为static型变量标准答案:C知识点解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以;C选项描述是错误的,函数内的静态变量只在第一次调用时赋值,以后调用保留上次的值;D选项描述也正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。20、由关系R1和R2得到关系R3的操作是A、等值连接B、并C、笛卡尔积D、交标准答案:A知识点解析:等值连接是关系运算.连接运算的一种常用的连接方式。是条件连接(或称θ连接)在连接运算符为“=”号时,即θ=0时的一个特例。21

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论