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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷45(共9套)(共255题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中错误的是()。A、循环队列有队头和队尾两个指针B、循环队列是非线性结构C、循环队列中元素的动态变化由队头和队尾指针共同反映D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:B知识点解析:循环队列是线性结构,包含队头和队尾两个指针。循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。2、下列叙述中正确的是A、栈是“先进先出"的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。3、结构化程序包括的基本控制结构是()。A、主程序与子程序B、选择结构、循环结构与层次结构C、顺序结构、选择结构与循环结构D、以上说法都不对标准答案:C知识点解析:结构化程序包括三种基本控制结构,分别为顺序结构、选择结构和重复结构(也称为循环结构),所以答案选C。4、以下四个程序中,完全正确的是()。A、#includemain();{/*/programming/*/printf("programming!\n");}B、#includemain(){/*programming*/printf("programming!\n");}C、#includemain(){/*/*programming*/*/printf("programming!\n");}D、includemain(){/*programming*/printf("programming!\n");}标准答案:B知识点解析:考查C语言程序的组成部分。选项A)中main函数后面不能有分号;选项C注释有误,"/*…*/"为多行注释,以"/*"开始,直到遇到"*/"结束,选项C中最后一个"*/"多余;选项D)中写文件包含命令时,要以"#include"开始。所以答案选B)。5、下列各项中不属于软件设计阶段任务的是()。A、制订软件确认测试计划B、数据库设计C、软件总体设计D、算法设计标准答案:A知识点解析:软件设计阶段的主要任务包括两个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成;二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。6、以下程序的输出结果是()。main(){intk=5;while(一一k)printf(’’%d’’,k一=3);printf(’’\n’’);}A、1B、0C、一1D、2标准答案:A知识点解析:本题考查while条件语句执行过程,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出循环语句。所以程序的最后结果为1。7、有以下程序:#includemain(){intn,*p=NULL;*p=&n:printf(“Input13:”);ScaRf(“%d”,&p);prinff(“outputn:”);printf(“%d\11”,P);}该程序试图通过指针P为变量n读入数据并输出,但程序有多处错误,下列语句中正确的是()。A、intn,*p=NULL;B、*P=&n;C、scallf(“%d”,&p)D、printf(“%d\n”,P);标准答案:A知识点解析:B选项的正确写法应为p=&n;C选项的正确写法应为scanf(“%d’t,p);选项D的正确写法应为printf(“%d\n”,*p)。8、若有以下程序#includemain(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’:printf("%c%d\n",c1,c2);}则程序的输出结果是A、H9B、H’9’C、F’9’D、表达式不合法输出无定值标准答案:A知识点解析:字符常量允许进行简单的算术运算,则’C’+5表示H,而’9’-’0’则表示数值9。9、有以下程序:#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选项正确。10、下面对“对象”概念描述正确的是A、操作是对象的动态属性B、属性就是对象C、任何对象都必须有继承性D、对象是对象名和方法的封装体标准答案:A知识点解析:①对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件;②对象的状态和行为:对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中;③类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。因此选项A正确。11、有以下程序main(){chara[5][10]={"one","two","three","four","five");inti,j;Chart;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;)puts(a[1]);}程序运行后的输出结果是A、fwoB、owoC、twoD、fix标准答案:A知识点解析:这个程序的执行过程是当i=0时,j=1,a[0][0]=0a[3][0]=f;置换a[2][0]=f,a[3][0]=t;此时,a[2][0]=Ca[1][0]=t,再置换a[2][0]=t,a[1][0]=f,;当i=3时,j=4,a[3][0]=f=a43][0]=f;不置换;所以a[1]的结果为fwo。12、设floata[10],*s=a;以下能够代表数组元素a[3]的是()。A、(*s)[3]B、*s[3]C、*s+3D、*(s+3)标准答案:D知识点解析:C语言中,指针可以指向一个数组,语句*s=a,使用指针变量s指向一维数组a的首地址,所以*(s+3)表示的是引用数组a[3]。13、在关系模型中,每一个二维表称为一个A、关系B、属性C、元组D、主码(键)标准答案:A知识点解析:每个二维表代表一个关系,由表框架及表的元组组成。14、设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)A、10□X20□YB、10□X20□YC、10X20YD、10□X□20□Y标准答案:C知识点解析:在使用scanf函数进行输入数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,但是空格为合法的字符型数据的输入;而按照格式符"%d%c%d%c"说明,数值型数据和字符数据输入之间不要加入空格何隔,而字精型数据和数值型数据的输入却可以加入任意的空格,回车和跳格。15、己知字符’A’的AScII代码值是65,字符变量c1的值是’A’,c2的值是’D’。则执行语句printf("%d,%d",c1,c2-2);的输出结果是A、A,68B、A,BC、65,66D、65.68标准答案:C知识点解析:在C语言中,字符常量在内存中占一个字节,存放的是字符的ASCII码值。所有的字符常量都作为整型量来处理。在本题中输出语句用整型格式输出字符时,输出的是其ASCII码值。因为字符’A’和’D’的ASCII码值分别为65和68,所以c2-2=68-2=66。16、若变量已正确定义,在if(W)pfintf(”%d\11”,k);中,以下不可替代W的是A、ch=getchar(1B、a--b+cC、a<>b+cD、a++标准答案:C知识点解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值为0,则不执行if语句,否则执行if语句,而在选项C中,符号<>不是C语言的合法运算符,如果要表达a大于或小于b+c可用a!b+c或(a>b+c)‖(ab+c。所以它不是一个合法的C语言表达式。17、有以下程序#includemain(){intx=35,B;charz=’B’;B=((x)&&(z<’b’));printf("%d\n",B);}程序运行后的输出结果是A、1B、0C、35D、66标准答案:A知识点解析:本题重点考察逻辑运算符和关系运算符的相关知识,已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为’B’。语句B=((x)&&(z<’b’));中,(x)的值为1,’B’的asscii码小于’b’的asscii码,所以(z<’b’)的值也为1,1&&1结果为1。因此A选项正确。18、以下叙述中正确的是A、结构体变量的地址不能作为实参传给函数B、结构体数组名不能作为实参传给函数C、即使是同类型的结构体变量,也不能进行整体赋值D、结构体中可以含有指向本结构体的指针成员标准答案:D知识点解析:一个结构体变量包含若干成员,这些成员可以是数值类型、字符类型、数组类型,也可以是指针类型,甚至可以是正在定义的结构体类型指针。用结构体变量作实参时,采取的是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参数时,采取了“地址传递”的方式,形参须为同类型的结构指针或者形参结构数组。19、以下结构体说明和变量定义中,正确的是A、typedefstructabc{intn;doublem;}ABC;ABCx,y;B、structabc{intn;doublem};structabcx,y;C、structABC{intn;dooblem;}structABCx,y;D、structabc{intn;doublem;};abcx,y;标准答案:A知识点解析:选项B中结构体定义中每个成员后面的分号都不能省略,doublem后没分号,因此错误。选项C结构体类型定义完毕后,}外没加分号。选项D中定义变量要加上关键字struct。20、设有定义:inta=64,b=8;,则表达式(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为()。A、1和1B、1和0C、0和1D、0和0标准答案:A知识点解析:变量a对应的二进制数值为01000000,变量b对应的二进制数值为00001000,01000000&00001000的结果为0,0100000|00001000的结果为非0,而a&&b的值1,a||b的值为1,所以表达式"(a&b)||(a&&b)"的值为1,表达式"(a|b)&&(a||b)"的值也为1,答案选A。21、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、差C、交D、并标准答案:B知识点解析:关系T中的元组是R关系中有而S关系中没有的元组的集合,所以进行的是差的运算。22、以下叙述中正确的是A、书写源程序时,必须注意缩进格式,否则程序会有编译错误B、程序的主函数名除main外,也可以使用Main或_mainC、程序可以包含多个主函数,但总是从第一个主函数处开始执行D、在C程序中,模块化主要是通过函数来实现的标准答案:D知识点解析:C语言的源程序中对缩进没有要求,所以A选项错误。C语言中区分大小写,main函数不能写成Main或_main,所以B选项错误。一个C程序有且只有一个主函数,所以C选项错误。23、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。24、有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序的运行结果是()。A、7B、10C、8D、9标准答案:D知识点解析:调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c));即调用f(3,6)函数返回9。25、以下叙述正确的是()。A、charc1,*c2,*c3[10];是合法的变量定义语句B、数组说明符的一对方括号中不能使用表达式C、数组元素下标可以是非整数D、若有定义chararray[4];则语句printf("%c",array["3"]);是合法的标准答案:A知识点解析:C语言规定定义数组时,数组的长度必须是整型常量,数组说明符的一对方括号中表达式只要是常量即合法,因此选项B错误。C语言规定,数组元素下标必须是非负整数,因此选项C错误。选项D中chararray[4]数组的长度为4,array["3"],其中"3"常量字符串,与C语言规定数组的下标必须是非负整数不符,故答案为A选项。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、循环队列中的元素个数不会变化标准答案:A知识点解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针front指向的后一个位置与队尾指针rear指向位置之间的元素数量。2、下列各项中,对对象概念描述正确的是()。A、对象间的通信靠消息传递B、对象是名字和方法的封装体C、任何对象必须有继承性D、对象的多态性是指一个对象有多个操作标准答案:A知识点解析:对象之间进行通信的构造叫作消息,选项A正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,选项B错误。对象不一定必须有继承性,选项C错误。多态性是指同一个操作可以是不同对象的行为,选项D错误。3、对软件设计中应遵循的准则描述正确的是()。A、高耦合低内聚B、高内聚低耦合C、模块独立性仅与内聚度相关D、内聚与耦合无关标准答案:B知识点解析:软件设计应遵循的准则有抽象、逐步求精和模块化、信息隐蔽和局部化、模块独立性。模块的独立性程度是评价设计好坏的重要程度标准,有两个定性标准度量,即模块间的耦合性和模块内的内聚性。耦合性是模块间互相连接的紧密程度的度量。一个模块的耦合性越高则该模块的独立性越弱。内聚性是指一个模块内部各个元素间彼此结合的紧密程度。一个模块的内聚性越高则该模块的独立性越强。好的软件设计,应尽量做到高内聚、低耦合。4、C语言中double类型数据占字节数为A、4B、12C、8D、16标准答案:C知识点解析:double类型所占字节为8。5、有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++:switch(b%2){defaut:m++;case0:m++;break;}}printf(’’%d\n’’,m);}程序运行后的输出结果是()。A、1B、2C、3D、4标准答案:B知识点解析:本题考查switch语句。因为“a=6”,所以“a%2=0”,因此第一个switch语句,执行“case0”,将m加1,遇到break语句跳出switch语句,输出m值为2。6、有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是A、a%(int)(x-y)B、a=x<>yC、(a*y)%bD、y=x+y=x标准答案:A知识点解析:选项B中<>运算符不存在,选项C中double类型不能进行取余(%)操作,要求两个运算数必须是整数,选项D中x+y=x错误。7、软件是指A、程序B、程序和文档C、算法加数据结构D、程序、数据与相关文档的完整集合标准答案:D知识点解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据与相关文档的完整集合。软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。8、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B之间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。9、下列叙述中正确的是A、对象具有封装性B、对象标识可以不唯一C、对象间的通信是靠方法调用D、对象是属性名和属性的封装体标准答案:A知识点解析:对象的特征有:唯一性、分类性、继承性和多态性(多形性)。对象的要素有:抽象、封装性(信息隐藏)和共享性。对象标识是唯一的。10、若有定义语句:chars[10]=“1234567\0\0”;,则strlen(s)的值是()。A、7B、8C、9D、10标准答案:A知识点解析:strlen()函数是计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中的字符串从第一个字符开始,遇到第一个结束标识’\0’为止,注意’\0’不占字符串长度,所以字符串长度为7,因此A选项正确。11、下面不属于软件测试实施步骤的是A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试实施的步骤有单元测试、集成测试和确认测试。12、某系统结构图如下图所示,则该结构图的深度是A、1B、2C、3D、4标准答案:C知识点解析:树中结点的层次从根开始定义起,根为第一层,根的孩子为第二层,依次累计。树中结点的最大层次称为树的深度。所以由题目中系统结构图,得到该树的深度为3,因此应选C选项。13、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为A、笛卡尔积B、交C、并D、自然连接标准答案:D知识点解析:在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系R,S,T的结果可知关系T是由关系R和S进行自然连接得到的。14、在数据库中,产生数据不一致的根本原因是A、数据冗余B、没有严格保护数据C、未对数据进行完整性控制D、数据存储量太大标准答案:A知识点解析:在一个数据集合中重复的数据称为数据冗余。数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。15、有以下程序:#include<stdio.h>main(){FILE*fp;char]]str[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后,文件中有abe28,所以C选项正确。16、以下选项中非法的字符常量是A、’\019’B、’\65’C、’\Xff’D、’\101’标准答案:A知识点解析:本题考查字符型常量。选项A)错误,使用了转义字符“\”,019以0开始表示8进制,8进制数字的范围是0-7,没有9;选项B)、C)和D)正确。17、有以下程序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的主要功能是判断字符是否为大写字符,如果是则转换为小写字符,主函数读入大写字符串,转换成小写。18、下面不能作为结构化方法软件需求分析工具的是A、系统结构图B、数据字典(DD)C、数据流程图(DFD图)D、判定表标准答案:A知识点解析:结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。19、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A、extern和registerB、auto和staticC、static和registerD、auto和register标准答案:D知识点解析:在C语言中,动态变量(auto)存储在内存中的动态存储区,在程序运行中,只有当调用变量所在的函数时,系统才临时给变量分配内存单元;全局变量(extem)一经定义,系统为其分配固定的内存单元;静态变量(static),编译系统为其分配固定的存储空间;寄存器变量(register)不保存在内存上,而是直接存储在CPU的寄存器中。20、有以下程序#includemain(){charc[2][5]={"6938","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序运行后的输出结果是A、9284B、9824C、6982D、6385标准答案:D知识点解析:本题中首先是将二维字符数组c赋值指针数组p,然后遍历p找到两个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为6385。21、有以下程序#includevoidmain(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++)ifi[s[i]>=’a’&&s[i]<=’z’)n++;printf("%d\n",n);}程序运行后的输出结果是A、0B、3C、5D、2标准答案:D知识点解析:这段程序的功能求出字符串s中字符在小写字符a到z之间字符的个数。在程序中字符串s的值为“012xy”,所以在字符串s中符合要求的字符的个数等于2。22、若有定义语句:doublea,*p=&a;以下叙述中错误的是A、定义语句中的木号是一个说明符B、定义语句中的p只能存放double类型变量的地址C、定义语句中*p=&a把变量a的地址作为初值赋给指针变量pD、定义语句中的*号是一个间址运算符标准答案:D知识点解析:在指针定义语句“doublea,*p=&a”中,指针变量p前面的*号,只是一个说明符,说明变量p是指针类型的变量。23、下面选项中的程序段,没有编译错误的是()。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)错误;但是可以通过赋值的方式把一个字符串地址指给一个字符指针,选项A)正确;答案选A)。24、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。25、若有定义语句:inta[2][3],*p[3];则以下语句中正确的是A、p[0]=&a[1][2];B、p[0]=a;C、p=a;D、p[1]=&a;标准答案:A知识点解析:定义语句inta[2][3],*p[3];定义了整型二维数组a[2][3]和指针数组p[3]。在C语言中,二维数组名也是一个存放地址常量的指针,其值为二维数组中第一行的地址。所以选项A中,把整型数组a[0]的指针赋给p[0]。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下面不属于对象主要特征的是()。A、对象唯一性B、对象分类性C、对象多态性D、对象可移植性标准答案:D知识点解析:对象有如下一些基本特点:①标识唯一性:指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。②分类性:指可以将具有相同属性和操作的对象抽象成类。③多态性:指同一个操作可以是不同对象的行为,不同对象执行同一类操作产生不同的结果。④封装性:从外面看只能看到对象的外部特征,对象的内部对外是不可见的。⑤模块独立性好。2、对长度为n的线性表做快速排序,在最坏情况下,比较次数为()。A、nB、n-1C、n(n一1)D、n(n一1)/2标准答案:D知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此称为快速排序法。最坏情况下快速排序退化为冒泡排序。3、下面程序的输出结果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}A、32B、16C、10D、4标准答案:C知识点解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员是联合体中占空间最长的成员。4、对于一个正常运行的C程序,以下叙述中正确的是()。A、程序的执行总是从main函数开始,在程序的最后一个函数中结束B、程序的执行总是从程序的第一个函数开始,在main函数结束C、程序的执行总是从main函数开始D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束标准答案:C知识点解析:任何一个C程序都是从主函数main开始,至主函数main结束,所以选择C选项。5、有以下程序:main(){chars口={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’\0’};intp,q;p=sizeof(s);q=strlen(s);printf("%d%d\b",p,q);}程序的运行结果是()。A、9,8B、1,8C、8,9D、9,9标准答案:A知识点解析:本题统计字符串a所占存储单元的个数和长度。s所占存储单元的个数为9,但长度为8,不包含’\0’。6、软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于A、定义阶段B、开发阶段C、维护阶段D、上述三个阶段标准答案:B知识点解析:本题考查软件生命周期的相关概念。通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。还可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。7、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x—y)等价的是()。A、(x—y<0‖x-y>0)B、(x—y<0)C、(x—y>0)D、(x—y==0)标准答案:A知识点解析:条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。本题中与表达式1:(x—y)等价的是(x—y<0‖x—y>0)。8、表达式(int)((double)9/2)-9%2的值是()。A、0B、3C、4D、5标准答案:B知识点解析:先将整型数据9强制转换成double型,然后除以2,得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项。9、有以下程序段intn,t=1,s=0;scanf(“%d”,&n);do{s=s++;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是A、任意正奇数B、任意负偶数C、任意正偶数D、任意负奇数标准答案:D知识点解析:本题考查基本输入和循环。程序代码的功能是通过scanf给变量n赋值,在do…while循环中,s变量自增,t变量每次减2,t的初值为1,循环执行执行一次后t的值变成-1,然后是-3、-5…,直到t的值和n的值相同循环结束。从t的值的变化可知,t是一个变化的负奇数,因此输入的n如果是负奇数,则循环能退出,否则是死循环。10、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A、main(){……x=fun(2,10);……}floatfun(inta,intb){……}B、floatfun(inta,intb){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}D、main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intb){……}标准答案:A知识点解析:C语言规定,函数必须先定义,后调用(雨数的返回值类型为int或char时除外)。在选项A)中,调用的子函数在调用后面定义,所以不正确。在选项B)、C)中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D)中,存主函数中先对子函数floatfun(inti,intj)进行了声明,然后进行调用。11、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、差C、交D、并标准答案:B知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。12、表达式a+=a-=a=9的值是A、-9B、0C、18D、9标准答案:B知识点解析:第一步a=9,然后计算a-a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。13、以下选项中,合法的C语言实数是()。A、.2e0B、3.1e0.4C、E13D、7.12E标准答案:A知识点解析:科学计数法中,e/E前后必须有数字并且后面的数字必须为整数,答案选A。14、以下叙述中正确的是A、每个后缀为.c的C语言源程序都应该包含一个main函数B、在C语言程序中,main函数必须放在其他函数的最前面C、每个后缀为.c的C语言源程序都可以单独进行编译D、在C语言程序中,只有main函数才可单独进行编译标准答案:C知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。15、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)A、printf("%c\n",’a’-32);B、printf("%d\n",’A’);C、printf("%c\n",65);D、printf("%c\n",’B’-1);标准答案:B知识点解析:在选项B)的输出函数中,大写字符’A’以整型数据的形式输出。16、下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是A、if(s1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、iffstrcmp(s2,s1)==0)ST;D、if(s1-s2==0)ST;标准答案:C知识点解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp(),如果这个函数的返回值等于0,说明两个字符串相等。17、有以下程序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=5518、以下叙述中正确的是A、在C语言中,预处理命令行都以”#”开头B、预处理命令行必须位于C源程序的起始位置C、#include必须放在C程序的开头D、C语言的预处理不能实现宏定义和条件编译的功能标准答案:A知识点解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。#include<stdio.h>命令行表示程序中要引用C标准函数库中的标准输入输出函数。19、下面描述中不属于数据库系统特点的是A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C错误。20、6.程序调试的任务是A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。21、以下选项中,不合法的C语言用户标识符是A、a_bB、AaBcC、a--bD、_1标准答案:C知识点解析:C语言规定,变量命名必须符合标识符的命名规则,C选项中包含了非法字符"-",所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。22、下列叙述中正确的是A、线性表链式存储结构的存储空间一般要少于顺序存储结构B、线性表链式存储结构与顺序存储结构的存储空间都是连续的C、线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D、以上说法均错误标准答案:C知识点解析:线性表的顺序存储结构具备如下两个基本特征:(1)线性表中的所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。用一组任意的存储单元来依次存放线性表的结点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此C正确。23、某二叉树的中序遍历序列为CBADE,后序遍历序列为CBEDA,则前序遍历序列为()。A、CBADEB、CBEDAC、ABCDED、EDCBA标准答案:C知识点解析:二又树的后序遍历序列为CBEDA,由于后序遍历最后访问根节点,可以确定该二叉树的根节点是A。再由中序遍历序列为CBADE,可以得到子序列(CB)一定在左子树中,子序列(DE)一定在右子树中。节点C、B在中序序列和后序序列中顺序未变,说明节点B是节点C的父节点;节点D、E在中序序列和后序序列中顺序相反,说明节点D是节点E的父节点。因此该二叉树的前序遍历序列为ABCDE。24、有以下程序#include<stdio.h>main(){inti,j=0;chara[]="ab123c4d56ef7gh89";for(i=0;a[i];i++)if(a[i]>=’0’&&a[i]<=’9’)a[j++]=a[i];a[j]=’\0’;printf("%s",a);}程序运行后的输出结果是()。A、123456789abedefghB、abcdefghC、123456789D、1234567896ef7gh89标准答案:C知识点解析:题干中定义了字符数组a,它包含数字字符和字母字符。通过for循环,将a中所有的数字字符前移,舍去其他字符,并在数字字符后添加字符串结束符“\0”,for循环结束后,字符串a的值为123456789。故本题答案为C选项。25、若有定义语句inta[2][3],*p[3];,则以下语句中正确的是()。A、p=a;B、p[0]=a;C、p[0]=&a[1][2];D、p[1]=&a;标准答案:C知识点解析:A选项错误,因为p是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为p[0]是一个int指针,也就是int*;而a是一个指向指针的指针int**。C选项正确,因为p[0]是一个int*,a[1][2]是int,&a[1][2]是int*,类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,p[1]是int*,&a是int***,类型不对。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是()。A、能采用顺序存储的必定是线性结构B、所有的线性结构都可以采用顺序存储结构C、具有两个以上指针的链表必定是非线性结构D、循环队列是队列的链式存储结构标准答案:B知识点解析:所有的线性结构都可以用数组保存,即都可以采用顺序存储结构。而反过来不可以,完全二叉树也能用数组保存(按层次依次存放到数据元素中),但完全二叉树不属于非线性结构。双向链表具有两个以上的指针,但属于线性结构。循环队列是队列的顺序存储结构。2、在关系运算中,查找满足一定条件的元组,相关的运算称为()。A、选择B、连接C、投影D、合并标准答案:A知识点解析:从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即水平方向抽取记录。经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中的元组是原关系的一个子集。3、下列描述中正确的是()。A、一个逻辑数据结构只能有一种存储结构B、数据的逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系,数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构,而采用不同的存储结构,其数据处理的效率是不同的。4、对软件设计中应遵循的准则描述正确的是()。A、高耦合低内聚B、高内聚低耦合C、模块独立性仅与内聚度相关D、内聚与耦合无关标准答案:B知识点解析:软件设计应遵循的准则有抽象、逐步求精和模块化、信息隐蔽和局部化、模块独立性。模块的独立性程度是评价设计好坏的重要程度标准,有两个定性标准度量,即模块间的耦合性和模块内的内聚性。耦合性是模块间互相连接的紧密程度的度量。一个模块的耦合性越高则该模块的独立性越弱。内聚性是指一个模块内部各个元素间彼此结合的紧密程度。一个模块的内聚性越高则该模块的独立性越强。好的软件设计,应尽量做到高内聚、低耦合。5、有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i++){x++:for(j=0;j<=3;j++){if(j%2==0)continue;x++;}x++:}printf(″x=%d\n″,x);程序的运行结果是()。A、x=4B、x=6C、x=8D、x=12标准答案:C知识点解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条语句x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。6、下列叙述中正确的是()。A、数据库系统避免了一切冗余B、数据库系统减少了数据冗余C、数据库系统中数据的一致性是指数据类型一致D、数据库系统比文件系统能管理更多的数据标准答案:B知识点解析:数据库系统共享性大,冗余度小,但只是减少了冗余,并不是避免一切冗余。数据的一致性是指在系统中同一数据在不同位置的出现应保持相同的值,而不是数据类型的一致。数据库系统比文件系统有更强的管理控制能力,而不是管理更多的数据。7、以下标识符不是关键字的是()。A、breakB、charC、SwitchD、return标准答案:C知识点解析:此题考查标识符和关键字的概念。需要注意的是C语言是区分大小写的,“switch”是关键字,但“Switch”不是关键字。8、若有以下的说明和定义:fun(int*z){….}mian(){int(*x)()=fun,*y(),w[10],z;…}在必要的赋值之后,对fun函数的正确调用语句是()。A、x=x(w);B、fun(y);C、y=*(w);D、(*x)(&z);标准答案:D知识点解析:本题主要考查函数指针。定义(*x)()为函数型指针,并指向fun()函数,正确的调用形式为(*x)(&z)。9、下列关于数据库设计的叙述中,正确的是A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。分别是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。数据字典是对系统中数据的详尽描述,是各类数据属性的清单。对数据设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。10、下列4个程序中,完全正确的是()。A、#includemain();{/*programming*/printf("programming!\n");}B、#includemain(){/*/programming/*/printf("programming!\n");}C、#includemain(){/*/programming*/*/printf("programming!\n");}D、includemain(){/*programming*/printf("programming!\n");}标准答案:B知识点解析:选项jA)中,main()函数后面的分号是错误的,C语言在函数名后面不能有分号;在C语言中注释内容必须放在“/*”和“*/”之间,“/*”和“*/”必须成对出现,按语法规定在注释之间不可再嵌套“/*”和“*/”,选项C)的程序段中注释语句之间有嵌套;C语言用#include命令行来实现文件包含的功能。#include命令行的形式为:#include“文件名”,选项D)中的include前面少了一个#符号。11、下面叙述中错误的是A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行“错误定位”是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。12、设有定义:intx=11,y=12,z=0;,以下表达式值不等于12的是()。A、z=(x==y)B、(z=x,y)C、z=(x,y)D、(z,x,y)标准答案:A知识点解析:考查运算符与表达式,A)中先计算(x==y),为0,将0赋值给z,表达式值为0,A)错;选项B)、C)、D)均涉及到逗号表达式,整个逗号表达式的值为最后一个表达式的值,所以均为12。选A)。13、以下关于结构化程序设计的叙述中正确的是A、结构化程序使用goto语句会很便捷B、一个结构化程序必须同时由顺序、分支、循环三种结构组成C、由三种基本结构构成的程序只能解决小规模的问题D、在C语言中,程序的模块化是利用函数实现的标准答案:D知识点解析:C语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提倡结构化设计以来,goto就成了有争议的语句。首先,由于goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎能解决大部分问题。14、以下不合法的字符常量是A、’\’"B、’\\’C、’\018’D、’\xcc’标准答案:C知识点解析:在C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。转义字符常量也是必须括在一对单引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符。在选项C中,’\018’是用八进制数来代表一个字符常量,所以其中的数字只能小于8,并不包括8。15、以下选项中不能作为C语言合法常量的是A、cd’B、0.1e+6C、"ia"D、"\011"标准答案:A知识点解析:常量指的是在程序的运行过程中,其值不能被改变的量。在C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项B)0.1e+6是用指数形式表示的实型常量。在C语言中,用以“e”或“E”后一个整数来表示以10为底的幂数,以用这种形式表示实型常量时要注意C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数,并且在字母e或E的前后以及数字之间不得插入空格。选项C)中用双引号括起来表示的字符串“\a”。选项D)中’\011’表示用单引号括起来的转义字符八制进数011。选项A)表示的字符常量是非法的,在用单引号表示的字符常量中,只能包含一个字符,而选项A)中包含两个字符。16、以下叙述中正确的是A、字符常量在内存中占2个字节B、转义字符要用双引号括起来,以便与普通的字符常量区分开C、字符常量需要用单引号括起来D、字符常量是不能进行关系运算的标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的AscIl字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。17、设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是A、判断m是否能被5和7整除B、判断m被5或者7整除是否余1C、判断m被5和7整除是否都余1D、判断m是否能被5或者7整除标准答案:C知识点解析:本题考查宏定义和三目运算符。三目运算符的格式为:test?语句1:语句2其中,test可以是任何Boolean表达式。语句1,当test是true时执行该语句,可以是复介语句;语句2,当test是false时执行该语句,可以是复合语句。isDIV(k,n)要表达的是当k除n的余数是1时表达式的值为1,否则为0,所以题中要表达的是m被5和7整除是否都余1。18、以下错误的定义语句是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知识点解析:一维数组定义和初始化是允许省略行下标,不允许省略列下标。19、以下能正确定义且赋初值的语句是A、intn1=n2=10;B、charc=32;C、floatf=f+1.1;D、doublex=12.3E2.5;标准答案:B知识点解析:本题主要考查变量的定义和赋值,C语言中变量的定义形式为:类型说明符变量名=初始值;选项A)中,n1和n2只能单独赋初值;选项B)正确,定义了一个字符变量c,初值为32;选项C错误,初值设置自身不能参与运算;选项D)中字母E后面的指数必须是整数。20、若有以下程序main(){inta=6,b=0,c=0;for(;a;){b+=a;a-=++c;}printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、1,14,3B、0,18,3C、0,14,3D、0,14,6标准答案:C知识点解析:循环体执行三次,a初值6,第一次执行循环体,b=6,a=5。继续执行循环体,b=11,a=3,第三次执行循环体,b=14,a=0,循环退出。21、若有以下程序#include<stdio.h>main(){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.22、以下叙述中正确的是A、在算法设计时,可以把复杂任务分解成一些简单的子任务B、在C语言程序设计中,所有函数必须保存在一个源文件中C、只要包含了三种基本结构的算法就是结构化程序D、结构化程序必须包含所有的三种基本结构,缺一不可标准答案:A知识点解析:C语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#include命令来引用,所以B错误?结构化程序可以包含三种基本结构中的一种或几种,所以C,D错误。23、有以下程序#include<stdio.h>#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。24、下面属于白盒测试方法的是A、等价类划分法B、逻辑覆盖C、边界值分析法D、错误推测法标准答案:B知识点解析:白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖,选择B。其余为黑盒测试法。25、有以下程序:#includemain(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是()。A、E,68B、D,69C、E,DD、输出无定值标准答案:A知识点解析:本题目中字符变量c1是字符’A’的ASCII码加上4,即69所对应的字符’E’。字符变量c2是字符’A’的ASCII码加上3,即68所对应的字符’D’。但是打印输出时,c1以%c的格式输出,所以是E,c2以%d的格式输出,所以是68。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的A、正当性B、可行性C、确定性D、有穷性标准答案:C知识点解析:本题考查算法的基本特征。算法的可行性表示算法中执行的任何步骤都是可以被分解为基本的可执行的操作步:确定性是指算法的每一步骤必须有确切的含义;有穷性是指算法必须能在执行有限个步骤之后终止。2、有关return语句说法不正确的是()。A、系统默认的返回值类型为整型,故当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略。B、当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。C、当函数没有返回值时,函数的返回值类型可以说明为void型,它表示“无类型”或“空类型”。D、函数的返回值类型必须与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。标准答案:D知识点解析:函数的返回值类型一般与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。3、下列关于二叉树的叙述中正确的是()。A、叶子节点总是比度为2的节点少1个B、叶子节点总是比度为2的节点多1个C、叶子节点数是度为2的节点数的两倍D、度为2的节点数是度为l的节点数的两倍标准答案:B知识点解析:根据二义树的性质3:在任意一一棵二又树中,度为0的叶子节点总是比度为2的节点多一个,所以选择B选项。4、某系统结构图如下图所示(n≥5)该系统结构图的最大扇出数是()。A、3B、nC、2D、n+l标准答案:B知识点解析:扇出指一个模块直接调用的其他模块数。本题中第二层有n(n≥5)个模块,模块“某系统”直接调用这n个模块,故最大扇出数是n。5、表达式3.6-5/2+1.2+5%2的值是A、4.8B、3.3C、3.8D、4.3标准答案:C知识点解析:表达式的计算过程为:3.6-5/2+1.2+5%2=3.6.2+1.2+1=3.8。此题要注意5/2的结果是2,而不2.5,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。6、以下程序的输出结果是()。#include<stdio.h>intm=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,所以返回值为7×6-2=40,而fun(a,b)/m值为40/13=3。7、“软件系统总体结构图,下面描述中错误的是A、深度等于控制的层数B、扇入是一个模块直接调用的其他模块数C、扇出是一个模块直接调用的其他模块数D、原子模块一定是结构图中位于叶子结点的模块标准答案:B知识点解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系,这就是功能设计。在设计阶段,基于这个功能的层次结构把备个部分组合起来成为系统。8、有以下程序:#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。9、己知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。则执行语句printff"%d,%d",c1,c2-2);的输出结果是A、A,68B、A,BC、65,66D、65,68标准答案:C知识点解析:在C语言中,字符常量在内存中占一个字节,存放的是字符的ASCII码值。所有的字符常量都作为整型量来处理。在本题中输出语句用整型格式输出字符时,输出的是其ASCII码值。因为字符’A’和’D’的ASClI码值分别为65和68,昕以c2-2=68-2=66。10、以下叙述中正确的是A、charca[3][5]={"A","BB","CCC"};是不合语法的B、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组C、charca[][5]={"A","BB","CCC"};是不合语法的D、char*ca[3]={"A","BB","CCC"};是不合语法的标准答案:B知识点解析:字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选项B)的说法正确。选项A)和C)对于ca的定义是正确的。选项D)定义一个指针数组,可以保存多个字符串的首地址。11、在黑盒测试方法中,设计测试用例的主要根据是()。A、程序内部逻辑B、程序外部功能C、程序数据结构D、程序流程图标准答案:B知识点解析:黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择B)。12、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)0的程序段是A、n=0;while((ch=getchar())!=’\n’)n++;B、n=0;while(getchar()!=’\n’)n++;C、for(n=0;getchar()!=’\n’;n++);D、n=0;for(ch=getchar();ch!=’\n’;n++);标准答案:D知识点解析:本题主要考查循环的使用。选项A中,首先把输入的字符放到ch变量中,然后判断ch是否为回车符,如果不是则n增加,循环结束条件是输入的是回车符;选项B中,直接判断getchar函数的返回值是否是回车符,如果不是则n增加,输入回车符循环结束;选项C使用for循环,n的初值为0,每次循环n增加1,循环的结束条件是输入回车符;选项D中for循环的初始条件ch值为输入的字符,只有一次输入,不能统计输入的字符数,如果第一次输入的不是回车符循环不能结束。13、有以下程序main(){intij,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n"x);}程序执行后的输出结果是A、x=4B、x=6C、x=12D、x=8标准答案:D知识点解析:在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。14、有以下结构体说明、变量定义和赋值语句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)表示的值,而不是一个地址值。15、有以下程序#}include<stdio.h>#include<string.h>StructA{inta;charb[10];doublec;);structAf(structAt);main(){structAa={1001,’’ZhangDa’’,1098.0);a=f(a);printf(’’%d,%s,%6.1f\n’’,a.a,a.b,a.c);}structAfStructAt){t.a=1002;strcpy(t.b,”ChangRong”);t.C=1202.0;returnt;}程序运行后的输出结果是A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0标准答案:B知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),在函数f(a)中对结构体变量a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。16、有以下程序#includevoidfun(char*t,char*S){while(*t!=0)t++;while((*t++=*s++

温馨提示

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

评论

0/150

提交评论