国家二级(C语言)笔试模拟试卷17(共534题)_第1页
国家二级(C语言)笔试模拟试卷17(共534题)_第2页
国家二级(C语言)笔试模拟试卷17(共534题)_第3页
国家二级(C语言)笔试模拟试卷17(共534题)_第4页
国家二级(C语言)笔试模拟试卷17(共534题)_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷17(共9套)(共534题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的空间复杂度是指A、算法程序的长度B、算法程序中的指令条数C、执行算法程序所占的存储空间D、算法执行过程中所需要的存储空间标准答案:8知识点解析:算法的空间复杂度一般是指这个算法执行时所需要的内存空间,其中包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的附加存储空间。2、线性表的链式存储结构是一种A、随机结构B、顺序结构C、索引结构D、散列结构标准答案:2知识点解析:线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结点。此类存储方式属于顺序存储。3、设有下列二叉树:对此二叉树先序遍历的结果是A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA标准答案:4知识点解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历;遍历顺序应该为:访问根结点->先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF。4、编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑A、仅为整个程序作注释B、仅为每个模块作注释C、为程序段作注释D、为每个语句作注释标准答案:4知识点解析:功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在做什么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程序段做注释,而不是每条语句。5、下列哪个面向对象程序设计不同于其他语言的主要特点A、继承性B、消息传递C、多态性D、静态联编标准答案:1知识点解析:继承是一个子类直接使用父类的所有属性和方法。它可以减少相似的类的重复说明,从而体现出一般性与特殊性的原则,这使得面向对象程序设计语言有了良好的重用性,也是其不同于其他语言的主要特点。6、需求分析最终结果是产生A、项目开发计划B、需求规格说明书C、设计说明书D、可行性分析报告标准答案:2知识点解析:需求分析应交付的主要文档就是需求规格说明书。7、在进行单元测试时,常用的方法是A、采用白盒测试,辅之以黑盒测试B、采用黑盒测试,辅之以白盒测试C、只使用白盒测试D、只使用黑盒测试标准答案:1知识点解析:白盒测试是测试程序内部逻辑结构,黑盒测试只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻辑结构对系统进行测试才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以白盒测试为主,而黑盒测试为辅。8、数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享A、视图B、消息C、数据D、关系标准答案:4知识点解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。9、下列叙述中,不正确的是A、数据库技术的根本目标是要解决数据共享的问题B、数据库系统中,数据的物理结构必须与逻辑结构一致C、数据库设计是指设计一个能满足用户要求,性能良好的数据库D、数据库系统是一个独立的系统,但是需要操作系统的支持标准答案:2知识点解析:数据库应该具有物理独立性和逻辑独立性,改变其—而不影响另一个。10、规范化理论中,分解()是消除其中多余的数据相关性A、关系运算B、内模式C、外模式D、视图标准答案:1知识点解析:数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、以下叙述中正确的是A、构成C语言程序的基本单位是函数B、可以在一个函数中定义另一个函数C、main()函数必须放在其他函数之前D、所有被调用的函数一定要在调用之前进行定义标准答案:1知识点解析:根据函数的定义语法规定,在C语言程序中,不能嵌套定义,即不能在函数中再定义函数;main()函数在C语言程序中是必须的,但函数可以放在程序中的任意位置;当在所有函数的外部、被调用之前说明函数时,在函数说明后面的任何位置上都可以对函数进行调用。函数说明也可以放在调用函数的说明部分,如在main函数内部进行说明,则只能在main函数内部才能识别函数。12、以下选项中合法的实型常数是A、5E2.0B、E-3C、2.00E+00D、1.3E标准答案:4知识点解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。1)一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点)。2)指数形式的小数:指数形式的实数由尾数部分、e(E)和指数部分组成(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字;选项D中,E后面没有数字。13、以下选项中合法的用户标识符是A、longB、_2TestC、3DmaxD、A.dat标准答案:2知识点解析:在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,long为C语言的保留字,不能作为用户标识符。3Dmax开头的第一个字符为数字,而C语言规定,第一个字符必须为字母或者下划线;A.dat中的字符“.”不符合C语言中用户标识符规定。14、已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量’\101’是A、字符AB、字符aC、字符eD、非法的常量标准答案:1知识点解析:题目中的关键是八进制101的十进制是多少。八进制的101转换为十进制为65,也就是字符A的ASCII码。15、以下非法的赋值语句是A、n=(i=2,++i);B、j++;C、++(i+1);D、x=j>0;标准答案:4知识点解析:在表达式的运算中,双目赋值运算符的格式为“变量=表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n;选项B为简单自加运算;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量;选项D中为复合赋值表达式。16、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是A、6.5B、6C、5.5D、6标准答案:8知识点解析:在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型)。17、已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是A、scanf(“%2d%2d%2d”,&i,&j,&k);B、scanf(“%d%d%d”,&i,&j,&k);C、scant(“%d,%d,%d”,&i,&j,&k);D、scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);标准答案:4知识点解析:输入函数scanf使用该语句时,要求除格式控制符以外的字符都要原样输入,“,”为非格式符,要原样输入。选项A,输入格式描述为“%2d%2d%2d”,输入要用空格隔开,不满足键盘输入1,2,3的条件;选项B中,输入格式描述符为“%d%。d%d”,输入也要用空格隔开;选项D中,输入格式描述符为“i=%d,j=%d,k=%d”,应该从键盘输入i=1,j=2,k=3,才能使得i,j,k的值为1,2,3。18、与数学式子应的C语言表达式是A、3*xn/(2*x-1)B、3*x**n/(2*x-1)C、3*pow(x,n)*(1/(2*x-1))D、3*pow(n,x)/(2*x-1)标准答案:4知识点解析:在该题中,x的n次方应该调用函数pow(x,n)计算,pow(x,n)的参数写反了。19、设有定义:longx=-123456L;,则以下能够正确输出变量x值的语句是A、printf(“x=%d\n”,x);B、printf(“x=%1d\n”,x);C、printf(“x=%8dL\n”,x);D、pfintf(“x=%LD\n”,x);标准答案:2知识点解析:x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是“%1d”;由于C语言中是区分大小写的,“1d”中的“d”不能为大写。20、若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf(“%d,%d\n”,m,i);}执行后的输出结果是A、8,6B、8,3C、6,4D、7,4标准答案:4知识点解析:在复合赋值语句中,应该由右向左依次赋值,在表达式中,右端由i*=k得i=2*2为4,k=k+i,即k值为6,m=k故m=6。三、选择题(2分)(本题共30题,每题1.0分,共30分。)21、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则运算后,n的值为______。A、0B、1C、2D、3标准答案:1知识点解析:C语言中比较表式的运算结果为0或1。0代表不成立,1表示成立。22、以下程序的输出结果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}标准答案:2知识点解析:while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为“假”(值为零)时,退出循环,并转下一语句去执行。本题在输出num的值为3之后,再判断while的循环条件3<=2,不成立,所以不再输出num的值,故本题的答案选B。23、下面的关键字中,不能够从循环体中跳到循环体外的是______。A、gotoB、breakC、returnD、continue标准答案:2知识点解析:在C语言中,可以用break语句和continue语句跳出本层循环和结束本次循环。goto语句可跳出多层循环,如果在函数的循环体内使用return语句,就会直接结束循环返回函数值。24、以下各选项企图说明一种新的类型名,其中正确的是______。A、typedefvlint;B、typedefv2=intC、typedefintv3;D、typedefv4:int标准答案:4知识点解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。25、为了避免嵌套的if-else的二义性,C语言规定:else与______配对。A、缩排位置相同的ifB、其之前最近的ifC、其之后最近的ifD、同一行上的if标准答案:2知识点解析:在if语句中又包含一个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。26、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是v。A、地址传递B、单向值传递C、由实参传给形,再由形参传回实参D、传递方式由用户指定标准答案:2知识点解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。27、以下函数值的类型是______。fun(floatx){floaty;y=3*x-4;returny;}A、intB、不确定C、voidD、float标准答案:1知识点解析:C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。28、以下选项中,非法的字符常量是______。A、’\t’B、’\17’C、\nD、’\xaa’标准答案:4知识点解析:C语言中字符常量是以单引号括起来的单个字符,或为以“\”与三位八进制数或两位十六进制数值代替单个字符。29、以下程序的输出结果是______。#include<stdio>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}A、200100B、100100C、100200D、200200标准答案:4知识点解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。30、若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。A、i=*p;B、*p=&j;C、i=&j;D、i=**p;标准答案:2知识点解析:指针是一种用宋存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与i等价。31、假定int类型变量占用两个字节,若有定义:intx[10]={0,2,4);,贝数组x在内存中所占字节数是______。A、3B、6C、10D、20标准答案:8知识点解析:当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组x(10)不论是否为其元素初始化,它所分配的存储空间仍为2*10=20个字节。32、执行以下的程序段后,m的值是______。inta[2][3]={{(1,2,3),{4,5,6}}intm,*p;p=aa[0][0];m=p[4];A、4B、5C、3D、不确定标准答案:2知识点解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。33、以下程序的输出结果是______。main(){inti,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d,",a[2],a[5],a[8]);}A、258B、741C、852D、369标准答案:4知识点解析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1;i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=0时,a[i]=10-0=10;此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。34、下面程序的输出结果为______。#include<string.h>main(){charpl[7]="abc",p[]2="ABC"str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s"str);}A、xyzabcABCB、abcABCC、xyzabcD、xyzABC标准答案:2知识点解析:strcpy(strl,s1).-作用是将字符串s1拷贝到字符数组strl中去。strcat(字符数组1,字符数组2):把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。本题定义了三个字符数组p1,p2,str,strcat(p1,p2)函数的作用是将字符串数组p2接到符串p1的后面,结,果放在字符数组P1,再通过strcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。35、以下数组定义中不正确的是______。A、inta[2][3];B、intb[][3]={0,1,2};C、intc[100][100]{0};D、intd[3][]={{1,2},{1,2,3},{1,2,3,}};标准答案:8知识点解析:一维数组的定义方式为:类型说明符数组名[常量表达式];选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。36、以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],[3][0]);}A、650B、1470C、5430D、输出值不定标准答案:1知识点解析:对未给出初始值的整数数组元素,被默认初始化为零。37、在说明语句int*f();中,标识符f代表的是______。A、一个用于指向整型数据的指针变量B、一个用于指向一维数组的行指针C、一个用于指向函数的指针变量D、一个返回值为指针型的函数名标准答案:8知识点解析:带回指针值的函数,其一般定义形式为:类型标识符*函数名(参数表);例如:int*f(x,y);其中,f是函数名,调用它以后能得到一个指向整型数据的指针(地址),x,y是函数(的形参。在f的两侧分别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。38、以下程序的输出结果是______。main(){charst[20]="hello’、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}A、99B、520C、1320D、2020标准答案:2知识点解析:C语言中字符串是以’0’字符结束的,且strlen()函数计算的是’0’字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有投有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。39、以下程序运行后的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",D);returnd;}main(){inta=3;printf("%d\n,fun(a+fun(D)));}A、699B、669C、61515D、6615标准答案:4知识点解析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。40、以下选项中,不能正确赋值的是______。A、chars1[10];s1="chest";B、chars2[]={’C’,’t’,’e’,’s’,’t’};C、chars3[20]="Chest";D、char*s4="Cest\n"标准答案:1知识点解析:C语言中不能将字符串常量直接赋给数组。但在赋初值时可以。41、以下程序输出正确的是______。amovep(int*P,int(*A)[3],intn){inti,j;for(i=0;i<n;i++for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n",p[2],p[5]);free(p);}A、56B、25C、34D、程序错误标准答案:1知识点解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过malloc()函数绐指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。42、下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}A、121,0,4B、2,2,2C、0,2,4D、0,2,2标准答案:2知识点解析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;constb=12;,其中数据类型可以缺省,默认为整型;enumc{a1,a2};定义了一个枚举类型enumc,a1,a2为枚举元素,在C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。43、以下程序的输出结果是______。structHAR{intx,y;structHAR*p;}h[2];main(){h[0],x=1;h[0].y=2;h[1]x=3;h[1].y=4;h[0].p、&h[1];h[1]..p=h;printf("%d%d\n",(h[0].p)->x,(h[1].p)->y;}A、12B、23C、14D、32标准答案:8知识点解析:本题中是一个含有两个结点的循环链表。C语言中结构体的定义为:struct结构体类型名{成员项表;};44、变量a所占的内存字节数是______。A、4B、5C、6D、8unionU{charst[4];inti;longl;};StructA{intc;unionUu;}a;标准答案:4知识点解析:结构体变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量a中成员c为整型占2个字节,共用体变量u最大长度为4个字节,故选C。45、以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun()printf("%d%d\n",a,b);}A、100200B、57C、200100D、75标准答案:2知识点解析:全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。46、以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}A、19B、17C、15D、12标准答案:8知识点解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。47、若有以下说明和语句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;则值为6的表达式是______。A、p++->nB、p->n++C、(*p).n++D、++p->n标准答案:8知识点解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加1运行,结果为6。48、整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达是______。A、X||YB、X|YC、X&YD、XY标准答案:8知识点解析:“||”为或运算符,当其左右表达式中只要一个为非零则整个表达式的值1。是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。49、C语言中,组成数据文件的成分是______。A、记录B、数据行C、数据块D、字符(字节)序列标准答案:8知识点解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。50、下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fName,char*st){FILE*myf;inti;myf=fopm(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}A、hello,B、newworldhelloC、newworldD、hello.rld标准答案:1知识点解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。四、公共基础填空题(本题共5题,每题1.0分,共5分。)51、栈的基本运算有三种:入栈、退栈和【】。标准答案:读栈顶元素知识点解析:栈的基本运算有三种:入栈、退栈和读栈顶元素。入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针退一(即top减1)。读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。52、在面向对象方法中,信息隐蔽是通过对象的【】性来实现的。标准答案:封装知识点解析:软件工程的基本原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。53、数据流的类型有【】和事务型。标准答案:变换型知识点解析:典型的数据流类型有两种:变换型和事务型。变换型:是指信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。54、数据库系统中实现各种数据管理功能的核心软件称为【】。标准答案:数据库管理系统或DBMS知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。数据库管理系统是数据库系统的核心。55、关系模型的数据操纵即是建立在关系上的数据操纵,一般有【】、增加、删除和修改四种操作。标准答案:查询知识点解析:关系模型的数据操纵即是建立在关系上的数据操纵,一股有查询、增加、删除和修改四种操作。数据查询:用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。数据修改是在一个关系中修改指定的元组和属性。五、填空题(本题共14题,每题1.0分,共14分。)56、表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。标准答案:x>5||x<-5或x<-5||x>5知识点解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为:x>5||x<-5或者x<-5||x>5。57、以下程序的输出结果是【】。main(){unsignedshorta=65536;intb;printf("%d\n",b=A);}标准答案:0知识点解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。58、若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。c=(a-=(b-5));c=(a%11)+(b=3);标准答案:3知识点解析:这里:b-5=4,a=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2千表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。59、以下程序运行后的输出结果是【】。main(){intp=30;printf("%d\n",(p/3>0?p/10:p%3));}标准答案:3知识点解析:条件表达式的一般形式为:表达式1?表达式2:表达式3条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。30/3=10>0,所以执行p/10,结果为3。60、函数pi的功能是根据以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)现在请你在下面的函数中填空,完成求π的功能。#include“math.h"{doubles=0.0;longi;for(i=1;i<=n;i++)s=s+【】;return(sqrt(6*s));}标准答案:1.0(i*i)或(double)1/(i*i)知识点解析:表达式1+1/(2*2)+1/(3*3)+…+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+…+1(n*n)n即:∑1÷(i×i)i=1对应的C语言的表达式s=s+1.0/(i*i)。注:必须要写成1.0的形式,否则1/(i*i)返回值为其值截尾取整,即恒为0。61、函数pi的功能是根据以下公式近似求得的:pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)请在下面的函数中填空,完成求pi的功能。#include<math.h>doublepi(longn){doubles=0.0,longi;for(i=1;i<=n;i++)s=s+【】;return(sqrt(6*s));}标准答案:1.0/i/i或1.0/(i*i)知识点解析:由题面中提供的计算pi的公式可知:在第i项其值为1/(i*i),考虑到运算结果为浮点数,故必须要将1转化为浮点数或采用1.0/(i*i)的形式。故本题应填1.0/(i*i)或其等效形式。62、若输入字符串:abcde↓,则以下while循环体将执行【】次。while((ch=getchar())==’e’)printf("*");标准答案:0知识点解析:函数getchar()是从键盘得到用户输入的一个字符。用户输入的第1个字符是a,不管后面输入的是什么ch的值都是’a’,因此条件(ch=getchar())==’e’为假,这个循环不会被执行。63、以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,【】z){*z=x+y;}标准答案:int*知识点解析:从题中代码可知:z应该是一个整型指针,因此应填int*。64、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。intw[10]={23,54,10,33,47,98,72,80,61},*p=w;标准答案:p[5]或*(p+5)知识点解析:98是数组w的第5个元素(最开始的为第0个),而通过*p=w已经将p指向了数组w,要想不移动指针p而引用98,可以有以下两种写法:p[5]、*(p+5)。65、设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。main(){doubles[10][22];intn;fun(s);}标准答案:voidfun(doubleb[10][22])知识点解析:本题答案:voidfun(doubleb[10][22])。66、有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+t(i);printf("%d\n",j);}程序运行后的输出结果是【】。标准答案:3知识点解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2:j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。67、以下程序的输出结果是【】。voidfun(){staticinta=0;a+=2;printf("%d",A);}main(){intcc;for(cc=1;cc<4;cc++)fun();printf("\n");}标准答案:246知识点解析:循环for(cc=1;cc<4;cc++)被执行了3次。在函数fun中,由于a是static型变量,所以函数第1次调用后,a=2;第2次调用后,a=4:第3次调用后,a=6。68、以下程序的输出结果是【】。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+D)*10;printf("%d\n",t);}标准答案:7知识点解析:在C语言中,宏定义是直接替换的,所以在对表达式MAX(a+b,c+d)*10进行替换后,表达式变为(a+b>(c+d)?(a+b):(c+d)*10。在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值作为整个表达式的值(否则用(c+d)*10的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。69、实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。#include<stdio.h>voidmain(intargc,char*argv[]){FILE*f1,*f2;if(argc<【】){printf("parametererror!\n");exit(0);}f1=fopen(argv[1],"r");f2=fopen(argv[2],"w");while(【】)fputc(fgetc(f1),f2);fclose(f1);fclose(f2);}标准答案:3!feof(f1)知识点解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1)f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中错误的是()。A、一种数据的逻辑结构可以有多种存储结构B、数据的存储结构与数据处理的效率无关C、数据的存储结构与数据处理的效率密切相关D、数据的存储结构在计算机中所占的空间不一定是连续的标准答案:2知识点解析:一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等,选项A和选项D正确。采用不同的存储结构,其数据处理的效率不同,因此,在进行数据处理时,选择合适的存储结构是很重要的,选项C正确,选项B错误,应为本题正确答案。2、从工程管理角度,软件设计一般分为两步完成,它们是()。A、概要设计与详细设计B、数据设计与接口设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:1知识点解析:从工程管理的角度,软件设计可分为概要设计和详细设计两大步骤。3、设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1,则T中的叶子结点数为()。A、5B、6C、7D、8标准答案:8知识点解析:根据给定的条件,在树中,各结点的分支总数为:4×1+2×2+1×3+4×1=15,树中的总结点数为:15(各结点的分支总数)+1(根结点)=16:非叶子结点总数为:4+2+1+1=8。因此,叶子结点数为16(总结点数)-8(非叶子结点总数)=8。4、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。A、log2nB、n/2C、nD、n+1标准答案:4知识点解析:在长度为n的线性表中进行顺序查找,最坏情况下需要比较n次。5、数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:8知识点解析:数据库的生命周期可以分为两个阶段:一是数据库设计阶段;二是数据库实现阶段。数据库的设计阶段又分为如下4个子阶段:即需求分析、概念设计、逻辑设计和物理设计。6、在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A、概要设计B、详细设计C、可行性分析D、需求分析标准答案:8知识点解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。7、下面不属于软件设计原则的是()。A、抽象B、模块化C、自底向上D、信息隐蔽标准答案:4知识点解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。它们是:抽象、模块化、信息隐蔽,模块独立性。没有白底向上。8、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()。A、63B、64C、6D、7标准答案:2知识点解析:在长度为64的有序线性表中,其中的64个数据元素是按照从大到小或从小到大的顺序有序排列的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不在线性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功,否则,继续进行比较。依次类推,直到在线性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为64的有序线性表中进行顺序查找,最坏的情况下需要比较64次。因此,本题的正确答案为B。9、下列叙述中正确的是()。A、数据库系统是一个独立的系统,不需要操作系统的支持B、数据库技术的根本目标是要解决数据的共享问题C、数据库管理系统就是数据库系统D、以上3种说法都不对标准答案:2知识点解析:数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等,选项A的说法是错误的.数据库具有为各种用户所共享的特点,选项B的说法是正确的。通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由5个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。因此,选项C的说法是错误的。10、将E-R图转换到关系模式时,实体与联系都可以表示成()。A、属性B、关系C、键D、域标准答案:2知识点解析:把概念模型转换成关系数据模型就是把E-R图转换成一组关系模式,每一个实体型转换为一个关系模式,每个联系分别转换为关系模式。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、用C语言编写的代码程序A、可立即执行B、是一个源程序C、经过编译即可执行D、经过编译解释即可执行标准答案:2知识点解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为。OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此。OBJ文件与C语言提供的各种库函数连接在一起,生成一个后缀.EXE的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。12、以下叙述中正确的是A、C语言的源程序不必通过编译就可以直接运行B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令C、C源程序经编译形成的二进制代码可以直接运行D、C语言中的函数不可以单独进行编译标准答案:2知识点解析:本题考核的知识点是C程序从编写到生成可执行文件的步骤。C语言采用编译方式将源程序转换为二进制的目标代码,编写好一个C程序到完成运行一般经过以下几个步骤:编辑;编译,就是将已经编辑好的源程序翻译成二进制的目标代码,经编译后的得到的二进制代码还不能直接执行,因为每一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块连接后才能运行;连接,将各模块的二进制目标代码与系统标准模块经连接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件;执行,执行一个经过编译和连接的可执行的目标文件。由以上定义可知,选项A、C、D均不正确。所以,4个选项中选项B符合题意。13、以下定义语句中正确的是A、chara=’A’b=’B’;B、floata=b=10.0;C、inta=10,*b=&a;D、float*a,b=&a;标准答案:4知识点解析:选项A中定义两个变量a和b,并赋初值,C语言中可以同时定义多个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项A不正确;选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确的,故选项B不正确,选项D定义一个指针,然后定义了一个变量并让这个变量的初值为该指针变量,显然这这时的指针变量还没初始化就被赋值给变量,是不对的,故选项D不正确,所以,4个选项中选项C符合题意。14、有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.lf%3.lf\n",a,c,f,x);}程序运行后的输出结果是A、16516.5B、1651.56.5C、1651.06.5D、2651.56.5标准答案:2知识点解析:主函数中先定义了一个整型变量a,一个字符变量c并赋初值10,一个浮点型变量f并赋初值100.00和一个double型x,接着执行“a=f/=C*=x=6.5)”,该语句从右向左计算,先把6.5赋值给x(该括号表达式的值也为6.5),此时x的值的变为6.5,然后执行“c*=(x=6.5)”相当于执行“c=c*(x=6.5)”,此时c的值为65,接着向左执行“f/c*=(x=6.5)”,语句相当于执行“f=f/c”接着向最右边执行“a=f”,由于a是整型变量,所以a最后去f的整数部分为1。程序最后输出的a、c、f和x的值分别为1、65、1.5、6.5。所以,4个选项中选项B符合题意。15、数据库设计的根本目标是要解决A、数据共享问题B、数据安全问题C、大量数据存储问题D、倘化数据维护标准答案:1知识点解析:数据库技术的根本目标就是要解决数据的共享问题,选项A正确。16、设有定义:floata=2,b=4,h=3;,以下C语言表达式中与代数式计算结果不相符的是A、(a+b)*h/2B、(1/2)*(a+b)*hC、(a+b)*h*1/2D、h/2*(a+b)标准答案:2知识点解析:选项B中由于1和2都是整型,其1/2的运算结果为0,故整个表达式的值为0,所以它的结果和题目中要求的代数式的计算结果不相符,所以,4个选项中选项B符合题意。17、有以下程序main(){intm=0256,n=256;printf("%o%o\n",m,n);}程序运行后的输出结果是A、02560400B、0256256C、256400D、400400标准答案:4知识点解析:程序中定义了两个整型变量,一个用八进制表示,一个用十进制表示,输出语向中要求m,n都为八进制输出,显然m原样输出为256,n的值转换为八进制输出(256的八进制为400),故输出400.所以,4个选项中选项C符合题意。18、数据库系统的核心是A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:2知识点解析:数据库管理系统(DBMS)是整个数据库系统的核心,它对数据库中的数据进行管理,还在用户的个别应用与整体数据库之间起接口作用,选项B正确。19、以下叙述中错误的是A、用户所定义的标识符允许使用关键字B、用户所定义的标识符应尽量做到“见名知意”C、用户所定义的标识符必须以字母或下划线开头D、用户定义的标识符中,大、小写字母代表不同标识标准答案:1知识点解析:用户标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与c语言关键字相同。所以本题应该选择A)。20、有以下程序:main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case’0’:printf("another\n");case’1’:printf("number\n");}}}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是A、anothernumberB、anothernumberanotherC、anothernumbernumberD、numbernumber标准答案:4知识点解析:switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行后面的语句.如果在该语句的后面没有break语句,则继续执行下一个case,直到遇到break语句或switch多分支的结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止Switch语句的执行.本题中在for循环中嵌套了swish语句,每循环一次通过scanf()函数从键盘上输入一个k值,然后执行switch语句。for循环共循环了2次,当i=1时,从键盘上输入0,使得k的值为0,执行switch语句中case:0后面的语句,输出another,接着执行case:0下面的语句输出number,退出switch语句,当i=2时,从键盘上输入1,使得k的值为1,执行switch语句中case1后面的语句,输出number,退出switch语句.当i=3时退出循环.故最后的输出为another、number和number,所以,4个选项中选项C符合题意。三、选择题(2分)(本题共15题,每题1.0分,共15分。)21、以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}A、intB、不确定C、voidD、float标准答案:1知识点解析:C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。22、以下程序的输出结是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}A、200100B、100100C、100200D、200200标准答案:4知识点解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。23、若有说明inti,j=2,*P=&i;,则能完成i=j赋值功能的语句是_______。A、i=*p;B、*P2=*&j;C、i=&j;D、i=**p;标准答案:2知识点解析:指针是一种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j先进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。24、以下程序的输出结果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}A、258B、741C、852D、369标准答案:4知识点解析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1:i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=0时,a[i]=10-0=10:此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。25、以下数组定义中不正确的是_______。A、inta[2][3];B、intb[][3]={0,1,2};C、intc[100][100={0};D、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};标准答案:8知识点解析:一维数组的定义方式为:类型说明符数组名[常量表达式];选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数纪元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二锥的长度不能省,所以选项B正确,而选项D是错误的。26、以下程序的输出结果是_______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7});Print("%d%d%d%d\n",a[0][3],a[l][2],a[2][1],a[3][0]);}A、650B、1470C、5430D、输出值不定标准答案:1知识点解析:对未给出初始值的整数数组元素,被默认初始化为零。27、以下程序的输出结果是_______。main(){charst[20]="hello\0\t\\";printf(%d%d\n",strlen(st),sizeof(st));}A、99B、520C、1320D、2020标准答案:2知识点解析:C语言中字符串是以’\0’字符结束的,且strlen()函数计算的是’\0’字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。28、以下程序运行后的输出结果是_______。intd=1;fun(intp)printf(%d",d);returnd;}main(){inta=3;printf("%\n",fun(a+fun(d)));}A、699B、669C、61515D、6615标准答案:4知识点解析:静态局部变量在编译时赋韧值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋韧值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用—次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值井返回主函数。29、以下程序输出正确的是_______amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)mallox(100)amovep)p,a,3);printf("%d%d\n",p[2],p[5]);free(p)}A、56B、25C、34D、程序错误标准答案:1知识点解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别:a[0][0]=1,a[0][1]=3,a[0][1]=3,a[0][2]=5,a[1][2]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参P,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。30、以下程序的输出结果是______。structHAR{intx,y;structHAR*p;}h[2]main(){h[0].x=1;h[0].y=2h[1].x=3;h[1].y=4h[0].p=&h[1];h[1].p=hprintf("%d%d\n",()h[0].p)->x,(h[1].p->y);}A、12B、23C、14D、32标准答案:8知识点解析:本题中是一个含有两个结点的循环链表。C语言中结构体的定义为:struct结构体类型名{成员项表;};31、以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}A、100200B、57C、200100D、75标准答案:2知识点解析:全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。32、以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3printf("%d%d\n",M(a+b,b+c,c+a));}A、19B、17C、15D、12标准答案:8知识点解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。33、若有以下说明和语句:structst{intn;char*ch;};structsta[3]{5,"abc",7,"def",9,"ghk"},*p=a则值为6的表达式是______。A、p++->nB、p->n++C、(*p).n++D、++p->n标准答案:8知识点解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加1运行,结果为6。34、整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。A、X||YB、X|YC、X&YD、xy标准答案:8知识点解析:“||”为或运算符,当其左有表达式中只要一个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。35、下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(clar*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<stden(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fur("test.t","hello,";}A、hello,B、newworldhelloC、newworldD、hello,rld标准答案:1知识点解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。四、公共基础填空题(本题共5题,每题1.0分,共5分。)36、在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。标准答案:中序知识点解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。37、结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。标准答案:模块化知识点解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。限制使用goto语句。38、软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。标准答案:测试实例知识点解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。39、数据库系统的三级模式分别为【】模式、内部级模式与外部级模式。标准答案:概念或概念级知识点解析:数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取力式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。外模式也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。40、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、【】和处理过程。标准答案:数据存储知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。五、填空题(本题共3题,每题1.0分,共3分。)41、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。#include<stdio.h>#include<string.h>main(){chara[]="clanguage",t;inti,j,k;k=strlen(a);for(i=0;i<=k-2;i+=2)for(j=i+2;j<=k;【】)if(【】){t=a[i];a[i]=a[j];a[j]=t;}puts(a);printf("\n");}标准答案:j=j+2或j+=2a[j]<a[i]或a[i]>a[j]知识点解析:暂无解析42、下列程序利用指针将2个数按从大到小的顺序输出。main(){inta,b,【】;printf("inputa,b:");scanf("%d%d",&a,&b);【】;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("a=%db=%d\n",a,b);printf("max=%dmin=%d\n",【】);标准答案:*p,*p1,*p2p1:&a*p1,*p2知识点解析:暂无解析43、下列程序能将字符串s1中的所有与字符串str1相同的子串替换成字符串sb2,并将替换后的新串存于字符数组s2中。#include<stdio.h>voidreplace(s1,s2,str1,str2)char*s1,*s2,*str1,*str2;{char*t0,*t1,*t2,*x,*y;x=s1;y=s2;while(【】){for(t0=s1,t1=str1;((*t1!=’\O’&&【】;t0++,t1++);if(*t1!=’\0’)*s2++=【】;else{for(t1=str2;*t1!=’\0’;)*s2++=【】;【】;}}*s2=’\0’;}main(){staticchars1[]="abcdefababcdabab.",s2125];replace(s1,s2,"abc","XYZ");printf("%s\n",s2);}标准答案:*s1!=’\0’或*s1*t0=*t1*s1++*t1++s1=t0或s1=s1+strlen(str1)知识点解析:暂无解析国家二级(C语言)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的空间复杂度是指()。A、算法程序的长度B、算法程序中的指令条数C、算法程序所占的存储空间D、算法执行过程中所需要的存储空间标准答案:D知识点解析:一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、

温馨提示

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

评论

0/150

提交评论