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

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷18(共9套)(共549题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、使用白盒测试法时,确定测试数据应该根据()和指定的覆盖标准。A、程序的内部逻辑B、程序的复杂结构C、使用说明书D、程序的功能标准答案:A知识点解析:白盒测试是把测试对象看作是一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准测试数据。2、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A、并B、交C、投影D、除标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在s内的有序组所组成,记为R∩S,交运算不改变关系表中的属性个数但能减少元组个数。3、下列关于队列的叙述中正确的是A、在队列中只能插入数据B、在队列中只能删除数据C、队列是先进先出的线性表D、队列是先进后出的线性表标准答案:C知识点解析:队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出”的原则组织数据的。4、下列关于队列的叙述中正确的是A、在队列中只能插入数据B、在队列中只能删除数据C、队列是先进先出的线性表D、队列是先进后出的线性表标准答案:C知识点解析:队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按"先进先出"的原则组织数据的。5、数据库技术的根本目标是要解决数据的()。A、存储问题B、共享问题C、安全问题D、保护问题标准答案:2知识点解析:数据库产生的背景就是计算机的应用范围越来越广泛,数据量急剧增加,对数据共享的要求越来越高。数据库技术的根本目标就是解决数据的共享问题。6、下面不属于软件设计原则的是______。A、抽象B、模块化C、自底向上D、信息隐蔽标准答案:4知识点解析:在软件设计过程中,必须遵循软件工程的基本原则:这些原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可靠性。7、在C语言中,以下一组运算符中,优先级最高的运算符是______。A、<=B、=C、%D、&&标准答案:4知识点解析:暂无解析8、若有定义“char,*p2,*p3,*p4,ch;”,则不能正确赋值的程序语句为()A、p1=&ch;scanf("%c",p1);B、p2=(char*)malloc(1);scanf("%c",p2);C、p3=getchar();D、p4=&ch;*p4=getchar();标准答案:4知识点解析:暂无解析9、一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A、219B、221C、229D、231标准答案:A知识点解析:本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。根据这条性质可知,若二叉树中有70个叶子结点,则其度为2的结点数为70-1,即69个。二叉树的总结点数是度为2、度为1和叶子结点的总和,因此,题目中的二叉树总结点数为69+80+70,即219。因此,本题的正确答案是选项A。10、在数据管理技术发展的三个阶段中,数据共享最好的是______。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据库管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段的特点:数据不保存、数据不独立、数据不能共享、数据无结构,没有专门的数据管理软件。文件系统阶段的特点:数据可以长期保存,有专门的数据管理软件——文件系统。但是数据独立性低,共享性差、冗余度大,数据记录内有结构,整体无结构。数据库系统阶段的特点:数据结构化,数据独立性高,数据共享性高,冗余度小,易于扩充,数据库管理系统提供统一的数控制功能,包括数据安全性、完整性、并发控制和数据恢复功能。二、选择题(1分)(本题共11题,每题1.0分,共11分。)11、若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%u,j=%x\n".i,j);输出的结果是()。A、i=8,j=9B、8.9C、89D、i=8,i=8标准答案:A知识点解析:本题考查函数printf()的格式。“%x”表示以十六进制输出整型数据;“%u”表示以十进制无符号型输出整型数据。printf函数中格式说明符之前插入的任何字符都原样输出。12、有下列程序:main(){inty=20;do{y--;}while(--y);printf("%d\n",y--);}当执行程序时,输出的结果是()。A、-1B、1C、4D、0标准答案:D知识点解析:本题考查do…while循环。当--y是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。13、设a和b均为int型变量,且a:6、b=11、c=3,则能使值为3的表达式是()。A、b%(c%4)B、b%(c-a%5)C、b%a-a%5D、(b%a)-(a%4)标准答案:D知识点解析:本题首先判断a>b,当a>b时结果等于a,否则等于“d>c?d:b”,因为a>b,所以直接输出a的值,注:这里“a:d>c?d:b”是用来干扰考生的。14、______是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例程标准答案:A知识点解析:C程序是由函数构成的。—个C源程序至少包含—个main函数,也可以包含—个main函数和若干个其他函数,因此,函数是C程序的基本单位。15、对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需要比较次数为()。A、1B、2C、3D、4标准答案:C知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这时两者相等。即查找成功。16、有以下计算公式:若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是()。A、if(x>=0)y=sqrt(x);elsey=sqrt(-x);B、y=sqrt(x);if(x<0)y=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)=sqdrt(-x);D、y=sqrt(x>=0?x:-x);标准答案:2知识点解析:选项B一开始就调用了sqrt(x)而没有判断x的正负,所以是错误的。故应该选B。17、下列属于C语言语句的是______。A、printf("%d\n"a)B、#include<stdio.h>C、a=b;b=c;c=a;D、/*thisisaprogram*/标准答案:4知识点解析:在C语言中,—个完整的C语句必须在语句末尾出现分号,分号是C语句的必要组成部分。本题答案为C。18、C语言程序的基本单位是()A、函数B、过程C、字符D、语句标准答案:1知识点解析:暂无解析19、以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是()A、(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)B、!(x>=-5||x<=-1&&x<=5||x>=1)C、x<-5&&x>-1||x<1&&x>5D、(x<-5)||(x>-1&&x<1)||(x>5)标准答案:1知识点解析:暂无解析20、下列关于单目运算符++、--的叙述中正确的是A、它们的运算对象可以是任何变量和常量B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量D、它们的运算对象可以是char型变量、int型变量和float型变量标准答案:8知识点解析:C语言中的++和——运算符,这两种运算符是单目运算符,其运算对象可以是整型、字符型、float型和double型等基本数据类型。21、若有以下定义和语句:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a则值为3的表达式是_______。A、P+=2,*(p++)B、P+=2,*++pC、P+=3,*p++D、P+=2,++*p标准答案:1知识点解析:引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。B、C的内容为a[3],D将a[2]前自加,结果为4。三、选择题(2分)(本题共20题,每题1.0分,共20分。)22、有以下程序#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序的运行结果是A、987654321B、4321098765C、5678901234D、987651234标准答案:C知识点解析:函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5.6,7,8,9,01;再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。23、下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d,",*(p++));printf("%d",**q);}A、2,2B、1,1C、3,4D、1,2标准答案:D知识点解析:题干中,*(p++)就是数组元素a[0],输出a[0],之后指针p的值加1,**q即是数组元素a[1]。24、下面for语句的循环次数为()。for(x=1,y=0;(y!=19)&&(x<6);x++);A、是无限循环B、循环次数不定C、最多执行6次D、最多执行5次标准答案:D知识点解析:本题考查for循环的使用。根据条件考虑x的取值变化,x从1取到5,可以循环5次,但并不知道y是如何变化的,有可能出现y=19提前跳出循环的情况,所以是最多执行5次。25、fwrite函数的一般调用形式是A、fwrite(buffer,count,size,fp);B、fwrite(fp,size,count,buffer);C、fwrite(fp,count,size,buffer);D、fwrite(buffer,size,count,fp);标准答案:D知识点解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示准备输出的数据块的起始地址,size表示每个数据块的字节数,count用来指定每写一次或输出的数据块,fp为文件指针。26、已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。A、scanf("%3d,%3d,%3d",&i,Aj,&k);B、scanf("%d,%d,%d",&i,&j,&k);C、scanf("%d%d%d",&i,&J,&k);D、scanf("i=%d,j=%d,k=%d",&i,&j,&k);标准答案:B知识点解析:scanf函数的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。27、以下叙述中正确的是()。A、预处理命令行必须位于C源程序的起始位置B、在C语言中,预处理命令行都以“#”开头C、每个C程序必须在开头包含预处理命令行:#include<stdio.h>D、C语言的预处理不能实现宏定义和条件编译的功能标准答案:B知识点解析:暂无解析28、设有以下语句:typedefstreetS{intg;charh;}T;则下面叙述中正确的是()。A、可用S定义结构体变量B、可以用T定义结构体变量C、S是struct类型的变量D、T是structS类型的变量标准答案:2知识点解析:可以用typedef定义新的类型名来代替已有的类型名。T是所定义的新的类型名,它代表题中定义的一个结构体类型,这样就可以用T定义结构体变量了。29、对以下说明语句的正确理解是()。inta[10]={6,7,8,9,10};A、将5个初值依次赋给a[1]至a[5]B、将5个初值依次赋给a[0]至a[4]C、将5个初值依次赋给a[6]至a[10]D、因为数组长度与初值的个数不相同,所以此语句不正确标准答案:2知识点解析:本题中,表达式将5个初值分别赋给a[0]至a[4],系统自动给后面的元素a[5]至a[9]赋0。30、有以下程序:#include<studio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}A、12B、15C、16D、20标准答案:1知识点解析:本题考核的知识点是宏与自增运算符的综合运用.在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。31、以下所列的各函数首部中,正确的是______。A、voidplay(var:Integer,varb:Integer)B、voidplay(inta,b)C、voidplay(inta,intb)D、Subplay(aasinteger,basinteger)标准答案:4知识点解析:暂无解析32、若有如下定义:ints[3][4];则下面表达式中能代表数组元素s[1][0]的值的是()A、*(s+1)B、s[1]C、s+1D、*(s[1])标准答案:8知识点解析:暂无解析33、交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()A、~B、&C、^D、|标准答案:4知识点解析:暂无解析34、下面程序段的执行结果是()。intx=10;for(;x;x--){if(x%3)continue;printf("%d",x);}A、875421B、963C、741D、852标准答案:2知识点解析:本题的for循环省略了第一个表达式,即for没有任何初始化动作;第二个表达式x的意思是只要x非0,则循环继续;第三个表达式让x在每次循环结束时减1。x初始为10,然后进入循环体,判断x是否能被3整除,不能整除则执行continue;语句进入下一次循环,能整除则输出x。故最终输出的结果为从10递减到1之中能被3整除的数9、6和3。所以正确答案是B。35、有以下程序main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序运行后的输出结果是A、123B、234C、223D、233标准答案:8知识点解析:根据优先级顺序,先计算内层括号的值。j自加1等于3,所以++j==3成立,表达式为1,由于1“|”任何数都为1,所以不用计算“||”后面的表达式,所以k=3,最后计算“&&”之前的表达式,i先进行判断再自加1,所以i++==1成立,自加1后i=2。if语句的条件为“1”,所以输出i、j、k的值分别是2,3,3。36、有以下程序main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后输出结果是A、8,7,8,7B、7,8,7,8C、8,7,7,8D、7,8;8,7标准答案:4知识点解析:程序中定义了两个变量a和b,并分别赋初值为7和8,定义了三个指针变量p、q、r,并让指针p指向变量a,让q指向变量b,然后通过一个中间指针变量f,使指针变量p和q互换,互换后p指向q所指的内容即b,q指向开始p所指向的内容即a,因此最后输出的*p,*q的值为8,7,a,b的值没有改变仍为7,8。37、有如下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.Of\n",fun((int)fun(a+c,B),(a-C)))}程序运行后的输出结果为_______。A、编译出错B、9C、21D、9标准答案:2知识点解析:本题中先执行(int)fun(a+c,b)函数的调用,值为整型数值15;然后再执行fun(15,(a-c))函数调用,值为单精度实型数值9.000000。输出为%3.of,即有效数长度为3,没有小数位数,所以最后结果为9。38、设有以下语句chara=3,b=6,c;c=ab<<2;则c的二进制值是_______。A、11011B、10100C、11100D、11000标准答案:1知识点解析:“<<”是C语言中规定的左移运算符,^是异或运算符,所以,c的二进制值应为00011011。39、下列函数值的类型是()。fun(doublex){floaty;y=3*x-4;returny;}A、intB、不确定C、voidD、float标准答案:1知识点解析:本题考查默认函数的函数值的类型。在函数调用时,尽管y的类型是float,x的类型是double,但是因为函数定义时省去类型说明,系统默认函数值的类型为int型,所以计算后的y的类型是int型。40、以下叙述中正确的是A、局部变量说明为static存储数,其生存期将得到延长B、全局变量说明为static存储类,其作用域将被扩大C、任何存储类的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类说明符与局部变量完全相同标准答案:A知识点解析:全局变量说明为static存储类,其生命周期将得到延长,但作用域不能被扩大;static存储类变量在未赋初值时,是有默认值的,形参中的存储类说明符与局部变量完全相同。41、已有定义:charc;,程序前面已在命令行中包含ctype.h文件。不能用于判断c中的字符是否为大写字母的表达式是A、isupper(c)B、’A’<=c<=’Z’C、’A’<=c&&c<=’Z’D、c<=(’z’-32)&&(’a’-32)<=c标准答案:B知识点解析:大写字母从’A’~’Z’的ASCII码是连续的,所以如果当一个字符大于等于’A’31小于等于’Z’时,那这个字符就一定是一个大写字母,故选项C正确。C语言中的库函数isupper()的作用也正是判断一个字符是否为大写字母的,故选项A正确。在ASCII码中,小写字母的编码也是连续的,对应的小写字符比大写字符的ASCII码值大32,所以选项D经过小写字符-32后,换算成了对应的大写字母’z’和’A’,所得到结果和选项C是一致的,故也是正确的。选项B中,C语言的逻辑表达式不能直接连写,而应该写成选项C那样,故是错误的,应该选择B。四、公共基础填空题(本题共5题,每题1.0分,共5分。)42、按照“先进先出”的原则组织数据的结构是______。标准答案:队列知识点解析:队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做“队尾”,删除元素的一端叫做“队头”,先插入的元素先被删除,是按先进先出的原则组织数据的。43、在面向对象方法中,类之间共享属性和操作的机制称为【】。标准答案:继承知识点解析:继承是类间的一种基本关系,是在某个类的层次关联中不同的类共享属性和操作的一种机制。在“is-a”的层次关联中,一个父类可以有多个子类,这些子类都是父类的特侧,父类描述了这些子类的公共属性和操作。一个子类可以继承它的父类(或祖先类)中的属性和操作。这些属性和操作在子类中不必定义,子类中还可以定义它自己的属性和操作。一个子类只有唯一的一个父类,这种继承称为单一继承。一个子类也可以有多个父类,它可以从多个父类中继承特性,这种继承称为多重继承。例如,“水陆两用交通工具”类既可继承“陆上交通工具”类,又可继承“水上交通工具”类的特性。44、对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。标准答案:n/2知识点解析:删除一个元素,平均移动的元素个数为(n-1+n-2+-…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-l+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。45、按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。标准答案:线性结构知识点解析:数据的逻辑结构,是指数据元素之间的逻辑关系,分为线性结构和非线性结构,常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。46、符合结构化原则的三种基本控制结构是:选择结构、循环结构和【】。标准答案:顺序结构知识点解析:结构化程序设计方法是程序设计的先进方法和工具。其中结构化程序设计的三种基本控制构是:选择结构、循环结构、顺序结构。五、填空题(本题共11题,每题1.0分,共11分。)47、以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;longfl;myf=【】("test.t","rb");fseek(myf,(),SEEK_END)fl+ftell(myf);fclose(myf);printf("%ld\n",fl);标准答案:fopen知识点解析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen("文件名","使用文件方式");关闭文件的函数为:fclose(),调用形式为:fclose(fp),其中fp为文件指针。48、下列执行后输出的结果是【】。main(){intarr[10],i,k=0for(i=0;i<10;i++)atr[i]=ifor(i=1,i<4;i++)k+=arr[i]+i;printf("%d\n",k);}标准答案:12知识点解析:本题的第—个for循环用于始数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。49、以下程序中,for循环体执行的次数是【】。#defineN2#defineMN+1#defineKM+1*M/2main(){inti;for(i=1;i<K;i++){...}...}标准答案:4知识点解析:本题考查宏定义。K=M+1*M/2=N+1+1*N+1/2=2+1+1*2+1/2=5,故for循环体执行的次数是4。50、若按功能划分,软件测试的方法通常分为白盒测试方法和()测试方法。标准答案:黑盒知识点解析:软件测试的方法和技术是多种多样的,对于软件测试方法和技术,可以从不同角度加以分类。若从是否需要执行被测试软件的角度划分,可分为静态测试和动态测试,若从功能划分,可以分为白盒测试和黑盒测试。51、有如下图所示的双链表结构,请根据图示完成结构体的定义:structaa{intdata;【】}node;标准答案:structaa*lhead,*rchild;知识点解析:结构体对链表的定义。52、下面程序的运行结果是:【】。fun(intt[],intn){inti,m;if(n==1)returnt[0];elseif(n>=2){m=fun(t,n-1);returnm;}}main(){inta[]={11,4,6,3,8,2,3,5,9,2};printf("%d\n",fun(a,10));}标准答案:11知识点解析:此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。53、下面的语句要使指针p指向一个double类型的动态存储单元,请填空。p=【】malloc(sizeof(double));标准答案:(double*)知识点解析:本题考查强制类型转换。函数malloc的默认返回是void*,若要使指针指向double类型,必须进行类型转换,类型转换格式为:(数据类型*)。54、以下程序的输出结果是【】。#include<stdio.h>#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知识点解析:本题综合考查带参数的宏以及三目运算符的计算方法。三目运算符的一般形式是:<表达式1>?<表达式2>:<表达式3>。“?:”运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值,并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值,并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为7>6?7:6*10,即t=7>6?7:60,其值为t=7。55、以下程序的输出结果是【】。#include<stdio.h>#deftneJFT(x)x*xmain(){inta,k=3;a=++JFT(k+1);printf("%d",a);}标准答案:9知识点解析:宏替换的原则是按原样替换,本题中遇到形参x则以实参k+1替换,其他字符不变,所以JFT(k+1)经替换后为k+1,k+1,则a=++k+1*k+1。若k的值为3,则经过运算为a=4+1*4+1=9。56、以下程序运行的结果是【】。#include<conio.h>#include<stdio.h>#defineM100voidfun(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)if(i%7==0‖i%11==0)a[j++]=i;*n=j;}main(){intaa[M],n,k;clrscr();fun(10,aa,&n);for(k=0;k<n;k++)if((k+1)%20==0)printf("\n");elseprintf("%4d",aa[k]);printf("\n");}标准答案:7知识点解析:解答本题的关键是要读懂程序,要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“‖”运算符,若要找能同时被7和11整除的所有整数则在if的条件中应使用“&&”运算符。当然,如果m的值输入50,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:711142122283335424449。57、以下程序运行后的输出结果是【】。main(){chara[]="Language",b[]="Pragrame";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}标准答案:gae知识点解析:主函数中定义了字符数组a和b,其初值分别为Language和Programe,然后定义了两个指针变量p1和p2,并让它们指向a和b。通过分析可知下面的for循环中,每循环一次就将p1+k和p2+k所指向的字符进行比较,如果相等,输出该字符,循环共执行8次,显然Language和Programe中只有字符gae相等,所以最后辖出为gae。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中错误的是()。A、一种数据的逻辑结构可以有多种存储结构B、数据的存储结构与数据的处理效率无关C、数据的存储结构与数据的处理效率密切相关D、数据的存储结构在计算机中所占的空间不一定是连续的标准答案:B知识点解析:数据的存储结构分顺序存储结构和链式存储结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素通过指针就联系在一起了,所以所占的存储空间不一定是连续的。2、下列关于栈的描述中错误的是()。A、栈是先进先出的线性表B、栈只能顺序存储C、栈具有记忆作用D、对栈的插入删除操作中,不需要改变栈底指针标准答案:B知识点解析:栈是线性表的一种,它的特点是先进后出,并且只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。3、对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。A、125B、n/2C、nD、n+1标准答案:C知识点解析:对长度为n的线性表进行顺序查找时,从表中的第一个元素开始,给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找完成。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素中的所有元素进行比较,因此比较次数为n。4、下列特征中不是面向对象方法的主要特征的是()。A、多态性B、继承C、封装性D、模块化标准答案:D知识点解析:面向对象设计方法是使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。5、设计软件结构是软件生命周期的()。A、软件定义期B、软件开发期C、软件维护期D、以上3个都不是标准答案:B知识点解析:本题是对软件设计结构的考查。设计软件结构是软件概要设计阶段进行的,而概要设计属于软件开发期。6、下列工具中为需求分析常用工具的是()。A、PADB、BFDC、N-SD、DFD标准答案:D知识点解析:需求分析常用的工具有4种:数据流图(DFD)、数据字典(DD)、判断树和判定表。PAD(问题分析图)、PFD(程序流程图)、N—S(盒式图)都是详细设计的常用工具,不是需求分析的工具。7、下列叙述中不正确的是()。A、在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B、在C的函数中,最好使用全局变量C、外部变量可以在函数之间传递数据D、自动变量实质上足一个函数内部的局部变量标准答案:B知识点解析:程序运行时局部变量所在的函数被调用时,编译系统根据需要临时分配内存,调用结束空间解放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存未知的情况下,最好不要使用全局变量。8、下列选项不符合良好程序设计风格的是()。A、源程序要文档化B、数据说明的次序要规范化C、避免滥用goto语句D、模块设计原则是高耦合、高内聚标准答案:D知识点解析:在程序设计中对于软件设计中的模块设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中+;”,将m加1,遇到break语句跳出switch语句,结束循环。不执行下面的switch。9、有下列程序:#includemain(){inta=6,b=7,m=1;switch(a%2){case0:m++.break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(”%d\n”,m);}程序的运行结果是()。A、3B、2C、4D、1标准答案:B知识点解析:本题考查switch语句以及break的用法,第一个switch语句,因为a=6,a%2=0,所以执行“case0,m++;”,将m+1遇到,break语句跳出switch语句,结束循环,不执行下面的switch。10、下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A、2,3,2B、2,3,1C、1,3,3D、3,1,2标准答案:D知识点解析:本题考查whlle循环。第一次循环,y=y-1,y=2,循环条件成立,x=1,x++后值为1,x自加变成2,进入循环,a=a+1=1,判断if语句条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,x=2,y-1=1,循环条件成立,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句,退出循环。结果为D。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。A、DB包含DBS和DBMSB、DBMS包含DB和DBSC、DBS包含DB和DBMSD、没有任何关系标准答案:C知识点解析:数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知.选C为正确答案。12、下列合法的声明语句是()。A、int_abc=50;B、doubleint=3+5e2.5;C、longdo=1L;D、float3_asd=3e-3;标准答案:A知识点解析:标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项do是C语言的…个关键字。D选项标识符只能以字母或下划线开始。13、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。A、x&&yB、x<=yC、x‖y+z&&y—zD、!((x<y)&&!z||1)标准答案:D知识点解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x<y为1,!z为0.1&&0为1,0||为1,因此,!1为0。14、若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。ch=’b’;k=10;printf(""%x,%o,"",ch,ch,k);printf(""k=%%d\n"",k);"A、因变量类型与格式描述符的类型不匹配,输出无定值B、输出项与格式描述符个数不符,输出为0值或不定值C、62,142,k=%dD、62,142,k=%10标准答案:C知识点解析:第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%o”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②prjntf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对予多余的输出项不予输出。15、有下列程序:fun(intx,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A、6B、7C、8D、9标准答案:C知识点解析:函数fun(intx,inty)的功能是返回x+y的值。在主函数中,变量a,b,c的初始值分别为1,2.3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。16、假定x和y为double型,则表达式x=2,y=x+3/2的值是()。A、3.500000B、3C、2.000000D、3.000000标准答案:D知识点解析:在x=2,y=x+3/2中,3/2=1,2+1=3,因此表达式的值为3,因为x,y为double型变量,故选择D选项。17、如下程序:main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2标准答案:A知识点解析:当x为1时,执行case1,a自加等于1,因为case1后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。18、下列程序的输出结果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A、123B、234C、223D、233标准答案:D知识点解析:本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加1,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加1。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算。因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或(||)运算,结果都为1.因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。19、下列程序的输出结果是()。#includemain(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}}printf("%d",i);}A、19B、1C、6D、8标准答案:A知识点解析:本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句.所以依次往下运行,a=a+2=13,a=a+3=i6;当i=4时,执行default,a=a+3=19,结束循环。20、有以下程序:main(){intx,1;for(i=1;i<=50;i++){x=i;if(x%2=0)if(x%3=0)if(x%7=0)printf("%d,i)";}}输出结果是()。A、28B、27C、42D、41标准答案:C知识点解析:只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42.故选择C选项。三、选择题(2分)(本题共18题,每题1.0分,共18分。)21、以下程序的输出结果是()。voidprt(int*m,intn){int1;for(i=0;i<n;i++)m[i]++;}main(){inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}A、1,2,3,4,5B、2,3,4,5,6C、3,4,5,6,7D、2,3,4,5,1标准答案:B知识点解析:函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。22、有以下程序:voidfunl(char*p){char*q;q=p;while(*q!=’\0’){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];funl(p);printf("%s\n",a);}程序执行后的输出结果是()。A、ProhsbnB、PrphsbnC、ProgsbnD、Program标准答案:A知识点解析:本题中使用了函数的调用,由funl函数中的while循环可知,循环的作用是为了把q所指向的内容增加1,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为’hsbn’,前面不变。23、若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是()。intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A、t[2][0]B、t[2][2]C、t[1]E2]D、t[2][1]标准答案:C知识点解析:从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。24、有以下程序:main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是()。A、21,43B、43,21C、43,00D、21,00标准答案:A知识点解析:s是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在ch[1]中、低位放在ch[0]中,因此输出的结果为21,43。25、以下程序的输出结果是()。main(){inta=1,b;for(b=1’b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);A、3B、4C、5D、6标准答案:B知识点解析:当b=1时,a=1,第二个if语句成立,此时a=6,返回for循环;当b=2,两个if语句都为假,此时a=3,再返回循环;当b=3,第二个if成立,此时a=8,继续循环;当b=4.第一个if成立,退出for循环体时b为4,a为8。26、设有以下定义和语句:charstr[20]="Program",*p:p=str;则以下叙述中正确的是()。A、*p与str[0]的值相等B、str与p的类型完全相同C、str数组长度和p所指向的字符串长度相等D、数组str中存放的内容和指针变量p中存放的内容相同标准答案:A知识点解析:本题中的str为一个字符型数组,p为字符型指针变量.其指向str的首地址,*p的值为str[0]中的字符,其类型、长度不同,但字符第一个相同。故答案选择A。27、有下列程序:#includemain(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d”,y,x);}程序的输出结果是()。A、0,7B、7,7C、0,6D、1,6标准答案:A知识点解析:本题考查while循环。在while循环申,y自加每次循环都加1,在循环体内y--每次减1,所以总的y值不变,当x自加到7时,不满足循环条件,循环结束。28、下列程序的运行结果是()。#includemain(){inta=2,b=3,c=4;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}A、2B、3C、5D、4标准答案:C知识点解析:本题考查if…else语句。第一个if语句,先判断条件,发现a<b条件成立,则执行第二个if语句,再判断条件,发现b<0条件不成立。则执行与其配对的else语句c++,c自加1.得c=5。29、#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。A、#definef(x)5*x*x+5*x+5B、#definef5*x*x+5*x+5C、#definef(a)(5*a*a+5*a+5)D、#define(5*x*x+5*x+5)f(x)标准答案:C知识点解析:本题考查带参数宏的格式:#define标识符(彤参表)形参表达式。其功能是:把预处理程序中出现的所有带实参的宏名,展开形成由实参组成的表达式。敌C正确。30、函数调用strcat(strcpy(str1,str2),str3)的功能是()。A、将字符串str1复制到字符串str2中后再连接到字符串str3之后B、将字符串str1连接到字符串str2之后再复制到字符串str3之后C、将字符串str2复制到字符串str1之后再将字符串str3连接到字符串str1之后D、将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中标准答案:C知识点解析:strcat(s1,s2)甬数的功能是把s2字符串连接到s1字符串末昆,strcpy(s1.s2)是把s2字符串复制到s1字符串,要保证s1的容量。31、若有定义“doublea;”,则正确的输入语句是()。A、seanf("%1f",a);B、scanf("%f",&a);C、scanf("%1f",&a)D、scanf("%le",&a);标准答案:D知识点解析:本题考查scanf函数的调用形式:scanf(格式字符串,输入项地址表)。题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地垃用取地址符“&”加变量名表示,所以选项D正确。32、下列程序的输出结果是()。#includemain(){inta=0,i;for(i=1;i<5;i++){switch(i){case0;case3:a+=1;case1:case2:a=2;default:a+=3;}}printf("%d",a);}A、19B、18C、6D、8标准答案:A知识点解析:本题考查switchcase开关语句.default退出继续循环。当i=1时.执行case1,因为没有break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,没有break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,当a=a+1=11,没有break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时。没有case语句,则执行default,a=a+3=19,i=5不成立,循环结束。表达式的右边出现变量本身,选项D中字母E后面的数应该为整数,所以不对。33、下列能正确定义且赋初值的语句是()。A、intn1=n2=1;B、charc=99:C、floatf=f+1;D、doublex=1.2E5.6;标准答案:B知识点解析:在C语言规定中,可以在定义变量的同时给变量赋初值,选项A中n2没有定义;选项C中不能赋值表达式的右边出现变量本身,选项D中字母E后面的数应该为整数,所以不对。34、下列程序的输出结果是()。main(){inta=6,b=3,c;if(a<b){c=a*b;printf("%d%d,%d\n",b,a,c);}else}A、3,6,18B、3,6,2C、6,3,18D、6,3,2标准答案:B知识点解析:本题考查if…else语句。如果if条件成立.则执行if下面的语句.不成立则执行else,判断条件。发现a<b不成立,则执行else后面的语句,得c=b/a=2。35、若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);则输出结果是()。A、20,10B、20,20C、10,20D、10,10标准答案:D知识点解析:本题考查指针变虽的赋值。**pp是定义一个指针变量,语句pp=&p是将pp指向指针p,*p和**pp都是指针p所指的内存空问的内容,即b的值。36、下列程序的运行结果是()。#includevoidfun(int*s,int*p){staticintt=3;*p=s[t];t--:}voidmain(){inta[]={2,3,4,5},k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A、5,4,3,2B、2,3,4,5C、2,2,2,2D、5,5,5,5标准答案:A知识点解析:依据fun函数,可知其要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,main()函数中调用函数fun(a.&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。37、下列程序的输出结果是()。#includemain(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un)};}A、6,2B、6,4C、8,4D、8。6标准答案:B知识点解析:本题主要考查结构和联合内存使用的一些区别:结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和;联合所占用内存空间是指最长的成员占用的空间。38、标准库函数fgets(s,n,file)的功能是()。A、从文件file中读取长度为n的字符串存入字符数组s中B、从文件file中读取长度不超过n-1个字符的字符串放到字符数组S中C、从文件file中读到n个字符串存入字符数组s中D、从文件file中读取长度为n-1个字符的字符串存入字符数组s中标准答案:B知识点解析:本题考查fgets()函数的使用调用形式:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中,读入字符串后会自动在字符串末尾加入"\0"结束符,表示字符串结束。四、公共基础填空题(本题共5题,每题1.0分,共5分。)39、长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动的元素的平均个数为________。标准答案:n/2。知识点解析:在线性表的任何位置插入一个元素概率相等,为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为[*]。40、软件设计模块化的目的是________程序设计的复杂性。标准答案:降低。知识点解析:模块化是指解决一个复杂问题时,自项向下逐层把软件系统划分成若干模块的过程,由此分解来降低程序设计的复杂性。41、在算法的4个特性中,算法必须能执行有限个步骤之后终止指的是算法的特性________。标准答案:有穷性。知识点解析:本题考查算法的4个基本特性;可靠性、确定性、有穷性和拥有足够的情报,其中,算法的有穷性是指算法必须在有限的时间内完成,即算法必须执行有限个步骤之后终止。42、设一棵完全二叉树共有500个结点,则在该二叉树中有________个叶子结点。标准答案:250。知识点解析:根据二叉树的性质:具有n个结点的完全二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。43、下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空:________。标准答案:(y%4==0)&&(y%100!=0)||(y%400==0)。知识点解析:本题考查闰年的计算方法。年号能被整除(y%4==0)但不能被100整陈(y%100!=0)两者都是与的关系。年号能被400整除即y%400==0,与前两项是或的关系。五、填空题(本题共8题,每题1.0分,共8分。)44、若要使指针p指向一个double类型的动态存储单元,请填空。p=__________malloe(sizeof(double));标准答案:double*。知识点解析:p是个指向double变量的指针,因此填double*。45、结构化分析方法是面向__________进行分析的方法。标准答案:数据流知识点解析:本题考查对结构化分析的理解,结构化分析方法的实质着眼于数据流,自上面下,逐层分解,建立系统的处理流程.以数据流图和数据字典为主要工具,建立系统的逻辑模型。46、以下程序的功能是打印以下杨辉三角形,请填空。11112113311464115101051main(){staticintm,n,k,b[10][10]={10};b[0][1]=1;for(m=1;m<10;m++);{for(n=1;n<=m;n++){b[m][n]=________;printf("%-5d",b[m][n]);}printf("\n");}}标准答案:b[m-1][n-1]+b[m-1][n]。知识点解析:杨辉三角形第3行开始非边缘的元素值是其上一行斜上方元素和正上方元素之和。所以填b[m][n]=b[m-1][n-1]+b[m-1][n]。47、下面函数的功能是将一个字符串的内容颠倒过来,请填空。voidfun(charstr[]){inti,j,k;for(i=0,j=________;i<j;i++,j--){k=str[i];str[i]=str[i];str[j]=k;}}标准答案:strlen(str)-1。知识点解析:for循环的作用是再来完成字符串的遍历,应该先对循环条件初始化,所以应填strlen(str)-1。48、若x为int类型,请写出与!x等价的C语言表达式_________。标准答案:x=0。知识点解析:x为真,!x的逻辑意思就是x为假,帮x=0,本题中x为int型,也就是整型数值,所以!x为0。49、下列程序的运行结果是_________。main(){inta=1,b=10;do{b-=a;a++}while(b--<0);printf("%d,%d\n",a,b);}标准答案:2,8。知识点解析:本题考查do—while语句的功能:先执行循环俸,再判断循环条件是否成立,若为真,则重复执行循环体,否则退出循环。程序开始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<0不成立,则退出循环,但b的菹被减1,因此结果为a=2,b=8。50、下列程序的运行结果是_________。main(){intj,a[10];a[0]=a[1]=1:for(i=2;i<5;i++)a[i]=a[i-2]+a[i-1];for(i=0;i<5;i++){if(i%2==0)printf("\n");printf("%d",a[i]);}}标准答案:11235(知识点解析:本题专查for循环,第一个for循环“for(i=2;i<5;i++)”a[i]=a[i-2]+a[i—1];是将数组中前面两项的和赋值给数组当前元素,可知a的值应为{1,1,2,3,5}。语句if(i%2==0)printf("\n")是将数组中的元素以每行2个的形式输出。51、下列程序的输出结果是_________。#includeintfun(intx){intp;if(x==0‖x==1)return3;elsep=x-fun(x-2);returnp;}voidmain(){printf("\n%d",fun(11));}标准答案:4。知识点解析:本题考查函数的递归调用。在主函数中第1坎调用fun(1),如果x等于0或者x等于1刚返回3,否则返回11—fun(9);第2次调用函数fun(9),返回9-fum(7);第3次是fun(7),返回7-fun(5);第4次是调用fun(5),返回5-fun(3);第5次调用fun(3),返回3-fun(1);第6次调用fun(1),返回3。总的返回值是:11-(9-(7-(5-(3-3))))=1。六、填空题(含2小题)(本题共2题,每题1.0分,共2分。)52、以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:y1=(x十8)2-(x+8)+6y2=sin2(x)-2sin(x)+6请填空。#includedoublefun(doublex){return(x*x-2*x+6);}main(){doublex,y1,y2;printf("Enterx:");scanf("%If",&x);y1=fun(_________)y2=fun(_________)printf("y1=%1f,y2=1f\n",y1,y2);}标准答案:(x+8)sin(x)。知识点解析:fun函数的功能是求x2-2x+6的值,所以只要填(x+8),sin(x)即可。注意优先级,所以要加上括号。53、下面程序把从终端读入的文本(用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。#includeFILE*fp;main(){charch;if((fp=fopen(________))==NULL)exit(0);while((ch=getchar())!=’@’)fputc(ch,fp);________;}标准答案:"bi.dat","w"fclose(fp)。知识点解析:本题要求从终端读入文本到bi.dat文件中,故填"bi.dat","w",输入完成国家二级(C语言)笔试模拟试卷第3套一、选择题(1分)(本题共10题,每题1.0分,共10分。)1、算法的空间复杂度是指()。A、算法程序的长度B、算法程序中的指令条数C、算法程序所占的存储空间D、算法执行过程中所需要的存储空间标准答案:D知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。2、下列叙述中正确的是()。A、一个逻辑数据结构只能有一种存储结构B、逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。3、下列关于类、对象、属性和方法的叙述中,错误的是()。A、类是对一类具有相同的属性和方法对象的描述B、属性用于描述对象的状态C、方法用于表示对象的行为D、基于同一个类产生的两个对象不可以分别设置自己的属性值标准答案:D知识点解析:类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值的。4、在软件开发中,需求分析阶段产生的主要文档是()。A、数据字典B、详细设计说明书C、数据流图说明书D、软件需求规格说明书标准答案:D知识点解析:需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。5、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一段采用生命周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。6、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A、并B、交C、投影D、除标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S,交运算不改变关系表中的属性个数但能减少元组个数。7、下列叙述中,正确的是()。A、软件交付使用后还需要进行维护B、软件一旦交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。8、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。A、7B、8C、9D、10标准答案:B知识点解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15.7=8。9、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A、6B、8C、9D、12标准答案:C知识点解析:R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。10、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理

温馨提示

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

评论

0/150

提交评论