版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)笔试模拟试卷1(共9套)(共557题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、循环链表的主要优点是A、不再需要头指针了B、从表中任一结点出发都能访问到整个链表C、在进行插入、删除运算时,能更好的保证链表不断开D、已知某个结点的位置后,能够容易的找到它的直接前件标准答案:2知识点解析:循环链表就是将单向链表中最后一个结点的指针指向头结点,使整个链表构成一个环形,这样的结构使得从表中的任一结点出发都能访问到整个链表。2、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是A、ABCEDB、DCBEAC、DBCEAD、CDABE标准答案:2知识点解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。3、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为A、log2nB、n/2C、nD、n+1标准答案:4知识点解析:对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。4、在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的A、安全性B、一致性C、可理解性D、合理性标准答案:4知识点解析:结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。5、模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的A、抽象和信息隐蔽B、局部化和封装化C、内聚性和耦合性D、激活机制和控制方法标准答案:4知识点解析:模块的独立程序是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。6、软件开发的结构化生命周期方法将软件生命周期划分成A、定义、开发、运行维护B、设计阶段、编程阶段、测试阶段C、总体设计、详细设计、编程调试D、需求分析、功能定义、系统设计标准答案:1知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。7、在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是A、路径的集合B、循环的集合C、目标的集合D、地址的集合标准答案:1知识点解析:软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。8、在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有A、特定的数据模型B、数据无冗余C、数据可共享D、专门的数据管理软件标准答案:1知识点解析:在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。9、数据库设计包括两个方面的设计内容,它们是A、概念设计和逻辑设计B、模式设计和内模式设计C、内模式设计和物理设计D、结构特性设计和行为特性设计标准答案:1知识点解析:数据库设计包括数据库概念设计和数据库逻辑设计两个方面的设计内容。10、实体是信息世界中广泛使用的一个术语,它用于表示A、有生命的事物B、无生命的事物C、实际存在的事物D、一切事物标准答案:4知识点解析:实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、能将高级语言程序转换成目标语言程序的是______。A、调试程序B、解释程序C、编译程序D、编辑程序标准答案:4知识点解析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由0和1组成的二进制指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。12、______是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例程标准答案:1知识点解析:C程序是由函数构成的。—个C源程序至少包含—个main函数,也可以包含—个main函数和若干个其他函数,因此,函数是C程序的基本单位。13、可以在C语言中用做用户标识符的是______。A、voiddefineWORDB、as_b3_123IfC、for-abccasD、2cDoSIG标准答案:2知识点解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第—个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项A中void,C中for都为关键字,D中2c以字母开头。14、若有以下类型说明语句:charw;intx;flooaty,z;则表达式w*x+z-y的结果为______类型。A、floatB、charC、intD、double标准答案:1知识点解析:在进行运算时,不同类型的数据参加运算,需要先将其转换成同—类型的数据,然后再进行运算。转换的顺序由低到高为:char,short→int→unsigned→long→double←float,故结果为float型。15、main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序输出的结果是______。A、123.4B、123.5C、123.45D、123.46标准答案:8知识点解析:f格式符,用来输出实数,以小数形式式输出。“%-m.nf”的含义是:输出数据共占m列,其中n位小数,如果输出位数小于m,则右端补空恪。如果总长度大于列数,则按实际情况四舍五入输出。16、下面语句的输出结果,是______。printh("%d\n",strlen("\t\"\065\xff\n"));A、14B、8C、5D、输出项不合法,无正常输出标准答案:4知识点解析:在C语言中,以“\”开头的字符均为转义字符,其中“\”后可跟1~3位八进制熟或在“\”后跟字母x及1~2位十六进制数,以此来代表—个特定的字符。17、下列程序的输出结果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}A、a=0,b=0,c=0B、a=1,b=1,c=1C、a=1,b=0,c=1D、a=0,b=1,c=1标准答案:4知识点解析:“||”是或运算,它有个“短路”的特点需特别注意,当“||”运算符左边的表达式的值为真时,则程序就不再对“||”右边的表达式的值进行运算,而是使得整个表达式的值直接为真。18、下列程序的输出结果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}A、55B、56C、程序错误,没有输出D、循环条件永远为真,死循环标准答案:2知识点解析:本程序中有个for循环,但注意到for循环的条件是“i+1”,也就是只要i+1的值为真(非零值均为真),就执行循环。当i=1的时候,i+1的值为真,判断if条件不成立,执行i++,输出i的值为5。19、下列程序的输出结果是______。#defineA100main(){inti=0,sun=0;do{if(i==(i/2)*2)continue;sum+i;}while(++i<A);printf("%d\n",sun);}A、2500B、2050C、4D、0标准答案:1知识点解析:本题程序的功能是求1到99之间(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下—次循环,否则求和。最后输出的值是1到99之间(包括1和99)所有奇数之和(1+99)*50/2=2500。20、下列程序的输出结果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printh("OK";}}A、0B、3C、OKD、没有任何输出标准答案:8知识点解析:在题中,i的值为3,由于“case3:”后面没有break语句,所以继续向下执行“case4:”后面的语句,由于“case4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。三、选择题(2分)(本题共30题,每题1.0分,共30分。)21、设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是A、x&&yB、x<=yC、x||++y&&y-zD、!(x<y&&!z||1)标准答案:8知识点解析:该题考查逻辑与“&&”和逻辑或“||”以及逻辑非“!”符号的用法。选项A)即3&&4为真,选项B)即3<=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。22、下列程序段中,不能正确赋值的是A、char*p,ch;p=&ch;scanf("%c,&p")B、char*p;p=(char*)malloc(1)scanf("%c",p);C、char*p*p=getchar();D、char*p,ch;p=&ch;*p=getchar();标准答案:4知识点解析:本题考查了字符的输入函数getchar和利用scanf函数输入一个字符。用scanf输入字符时,格式说明字符应该为%c。本题选项C)因为指针p没有赋初值,所以是一个不定值,不能直接将getchar读入的字符赋给指针p所指向的字符,所以选项C错误。23、下列函数的运行结果是main(){inti=2,p;intj,k;j=i;k=++i;p=f(j,k);printf("%d",p);}intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}A、-1B、1C、2D、编译出错,无法运行标准答案:1知识点解析:函数调用相当于f(2,3),程序运算应得结果为“-1”。24、现有格式化输入语句,scanf("x=%d,sumy=%d,linez=%dL",&x,&y,&z),现在已知在输入数据后,x,y,z的值分别是12,34,45则下列的数据是正确的输入格式的是A、12,34,45B、x=12,y=34,z=45C、x=12C,sumy=34,z=45D、x=12,sumy=34,linez=45标准答案:8知识点解析:若在scarf的格式化控制串中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。25、有以下程序#include<stdlib.h>structNODE{intnum;structNODE*next;};main(){structNODE*p,*q,*r;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->num=10;q->num=20;r->num=30;p->next=q;q->next=r;printf("%d\n",p->num+q->next->num);}程序运行后的输出结果是A、10B、20C、30D、40标准答案:8知识点解析:该题中考查的是简单的单链表,下图就是赋完值后的示意图:容易看到p->num=10,而q->next就是r,所以q->next->num=30,故答案为40。26、设有以下说明语句structex{intX;floaty;charz;}example;则下面的叙述中不正确的是A、struct结构体类型的关键字B、example是结构体类型名C、x,y,z都是结构体成员名D、structex是结构体类型名标准答案:2知识点解析:本题中,structex是结构体类型名,example是结构体变量名。27、若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是A、EOFB、-1C、1D、NULL标准答案:4知识点解析:EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回1,否则返回0。28、在位运算中,操作数右移一位,其结果相当于A、操作数乘以2B、操作数除以2C、操作数乘以4D、操作数除以4标准答案:2知识点解析:右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设a=15,a>>2表示把000001111右移为00000011(+进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。TurboC和很多系统规定为补1,右移1位相当于除以2。29、运行下面程序,若从键盘输入字母“b”,则输出结果是charc;c=getchar();if(c>=’a’&&c<=’u’)c=c+4;elseif(c>=’v’&&c<=’z’)c=c-21;elseprintf("inputerror!\n");putchar(c);A、gB、wC、fD、d标准答案:4知识点解析:本题考查了对字符的输入、输出操作及算术和关系运算。因为b>=’a’并且b<=’u’,所以执行第一个if语句,c=c+4,c的值为字符’f’。30、设有程序段intk=10;while(k=0)k=k-1;则下面描述中正确的是A、while循环执行10次B、循环是无限循环C、循环体语句一次也不执行D、循环体语句执行一次标准答案:4知识点解析:本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。31、请阅读以下程序:main(){inta=5,b=0,c=0;if(a=b+c)printf(”"***\n");elseprintf("$$$\n");}以上程序A、有语法错不能通过编译B、可以通过编译但不能通过连接C、输出***D、输出$$$标准答案:8知识点解析:解答本题时,先判断if语句,因为a=b+c不成立,则执行else语句。32、执行下面的程序后,a的值为main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A、7B、8C、9D、10标准答案:2知识点解析:本题主要考查了循环语句中break和continue语句的使用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。33、有以下程序:fun(inti,intj){i++;j++;returni+j;}main(){inta=1,b=2,c=3;c+=fun(a,b)+a;printf("%d,%d,%d\n",a,b,c);}A、1,2,9B、2,3,10C、1,2,10D、2,3,9标准答案:1知识点解析:本题主要考查了函数的调用作为表达式来使用,同时函数调用是按值传递的,函数中对形参的操作并不能影响到实参。函数fun(1,2)的返回值为5,而实参a的值保持不变仍为1,所以c+=fun(1,2)+1执行后,c=3+5+1=9。34、下列程序的输出结果是#include"stdio.h"#defineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta[M][N];inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j);fun(a);}A、3B、4C、5D、6标准答案:2知识点解析:若有以下定义:inta[3][4],i,j;且当0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。35、若有说明:inta[3][4]={0};则下面正确的叙述是A、只有元素a[0][0]可得到初值0B、此说明语句不正确C、数组a中各元素都可得到初值,但其值不一定为0D、数组a中每个元素均可得到初值0标准答案:8知识点解析:二维数组初始化时允许只对部分元素赋初值,其余自动为0。36、对以下说明语句的正确理解是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],后面的部分,将自动会被依次补零处理。37、设p1和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是A、k=*p1+*p2B、p2=k;C、p1=p2;D、k=*p1*(*p2);标准答案:2知识点解析:本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项B)中p2为指向int型变量的指针。而k为int型变量,不能将int型变量直接赋值给指向int型变量的指针,所以选项B)错误。38、以下程序有错,错误原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}A、p和q的类型不一致,不能执行*p=*q;语句B、*p中存放的是地址值,因此不能执行*p=40;语句C、q没有指向具体的存储单元,所以*q没有实际意义D、q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果标准答案:8知识点解析:该程序的执行过程是:首先声明整型指针变量p和整型变量i,字符型指针变量q和字符型变量ch,将i的地址赋给指针变量p,将ch的地址赋给指针变量q,将40赋给*p,此时,q已经指向了一个具体的存储单元,但ch的值不确定,即*p没有确定的值,所以不能执行*p=*q语句。39、有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%d\n",fib(3));}该程序的输出结果是A、2B、4C、6D、8标准答案:2知识点解析:本题考查函数的递归调用。fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib(3)的值为4。40、下列说法中错误的是A、静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B、若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽C、静态全局变量可以被其他的编辑单位所引用D、所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失标准答案:4知识点解析:静态全局变量只限于本文件所使用。静态全局变量只限于本文件所使用,不能被其他的文件所引用。41、以下程序的输出结果是#include<stdio.h>main(){unionun{inti;longk;charc;};structbyte{inta;longb;unionunc;}r;printf("%d\n",sizeof(r));}A、10B、13C、7D、8标准答案:1知识点解析:本题主要考查了结构体和共用体数据的存储形式。共用体的一个特点是所有数据成员共用一段存储单元,而结构体每个数据成员都单独占据一段存储单元。共用体所占存储单元的大小由长度最长的数据成员的长度决定。题中共用体变量c占据4个字节的长度,结构体r所占存储空间的大小为int(2个字节)+long(4个字节)+共用体c(4个字节)=10个字节,所以答案为A)。42、阅读下面程序,则执行后的结果是#include"stdio.h"main(){charstr[]="tomeetme",*p;for(p=str;p<str+7;p+=2)putchar(*p);printf("\n");}.A、tomeetmeB、tmemC、oeteD、tome标准答案:2知识点解析:存放字符串的字符数组的名字就是这个字符串的首地址。本题的功能是对于字符串“tomeetme”进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。43、阅读以下程序及对程序功能的描述,其中正确的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}A、程序完成将磁盘文件的信息在屏幕上显示的功能B、程序完成将两个磁盘文件合二为一的功能C、程序完成将一个磁盘文件复制到另一个磁盘文件中D、程序完成将两个磁盘文件合并并在屏幕上输出标准答案:4知识点解析:本题中,最主要的是掌握几个有关文件的函数的应用。函数名:fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);函数名:feof功能:检查文件是否结束调用方式:feof(FILE*fp);函数名:fputc功能:把一个字符写到磁盘文件上去调用方式:fputc(ch,fp)(ch是要输出的字符,fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式:ch=fgetc(fp)(ch是字符变量,fp是文件指针变量);函数名:fclose功能:关闭一个文件调用方式:fclose(文件指针)。44、以下叙述中正确的是A、程序应尽可能短B、为了编程的方便,应当根据编程人员的意图使程序的流程随意转移C、虽然注释会占用较大篇幅,但程序中还是应有尽可能详细的注释D、在TURBOC环境下,运行的程序就是源程序标准答案:4知识点解析:本题主要考查了C程序编译、运行等基本概念。选项A)、C)程序的长度没有什么限制,所以不正确;选项B)程序应该遵循结构化程序设计的理念,不能使程序流程任意的转移,这样不利于程序的理解和执行;选项D)运行的程序是经过编译后的二进制文件,而不是源程序。45、以下叙述不正确的是A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面标准答案:8知识点解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行说明。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容,且注释内容也不会出现在目标程序中。46、下面对C语言的描述中,正确的是A、函数一定有返回值,否则无法使用函数B、C语言函数既可以嵌套定义又可以递归调用C、在C语言中,调用函数时,只能将实参的值传递给形参D、C语言程序中有调用关系的所有函数都必须放在同一源程序文件中标准答案:4知识点解析:函数不一定有返回值(void类型),C语言规定,在一个函数的内部不能再定义函数,函数可以递归调用,一个C程序允许由多个文件组成,C语言支持函数的外部调用,不一定有调用关系的所有函数都放在同一个源程序文件中。选项A)函数不一定有返回值,选项B)函数不可以嵌套定义,选项D)函数可以外部调用。47、下面函数的功能是char*fun(char*strl,char*str2){while((*strl)&&(*str2++=*strl++));returnstr2;}A、求字符串的长度B、比较两个字符串的大小C、将字符串str1复制到字符串str2中D、将字符串str1接续到字符串str2中标准答案:4知识点解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。本题中逻辑与符号连接的表达式值为真,*str2++=*strl++语句是将strl的内容逐个复制到str2字符串。48、已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)标准答案:1知识点解析:“%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项A)中的x是double型数据。49、以下叙述中正确的是A、预处理命令行必须位于源文件的开头脑B、在源文件的一行上可以多条预处理命令C、宏名必须用大写字母表示D、宏替换不占用程序的运行时间标准答案:8知识点解析:选项A)预处理命令行通常位于源文件的开头,但不是必须的;选项B)在源文件的一行上只能有一条预处理命令;选项C)宏名一般习惯用大写字母表示,以与变量名相区别,但不是必须的;选项D)宏替换不占用程序的运行时间,只占编译时间。50、设有如下定义:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是A、p=&data.n;B、*p=data.n;C、p=(structsk*)&data.n;D、p=(structsk*)data.n:标准答案:4知识点解析:本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名.成员名或结构体指针->成员名的方法来引用结构体成员。四、公共基础填空题(本题共5题,每题1.0分,共5分。)51、在树形结构中,树根结点没有【】。标准答案:前件知识点解析:在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。52、Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【】的设计方法。标准答案:数据结构知识点解析:结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Structuredanalysis),面向数据结构的Jackson方法(JSD-Jacksonsystemdevelopmentmethod)和面向数据结构的结构化数据系统开发方法(DSSD-Datastructuredsystemdevelopmentmethod)。53、面向对象的模型中,最基本的概念是对象和【】。标准答案:类知识点解析:面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。54、软件设计模块化的目的是【】。标准答案:降低复杂性知识点解析:模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。55、数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。标准答案:逻辑数据模型知识点解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。五、填空题(本题共13题,每题1.0分,共13分。)56、以下程序的输出结果是【】。main(){inti=010,j=10;printf("%d,%d\n",i,j);}标准答案:8,10知识点解析:以0开头的是八进制数,输出时将其转换成十进制数。57、若从键盘输入58,则以下程序输出的结果是【】。main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}标准答案:585858知识点解析:本题考查对if语句的掌握,当输入58以后,程序中的3个if语句都成立,所以分别输出58。58、现有如下定义:structaa{inta;floatb;charc;}*p;现需用malloc函数动态的申请一个structaa类型大小的空间(由p指向),则定义的语句为:【】。标准答案:p=(structaa*)malloc(sizeof(structaa));知识点解析:ANSIC标准规定malloc函数的返回值类型为void*,函数的调用形式为:malloc(size)要求size的类型为unsignedint。由于返回类型为void*,所以在调用函数时,必须利用强制转换将其转换为所需要的类型。59、下列程序的输出结果是16.00,请填空。main(){inta=9,b=2;floatx=【】,y=1,1,z;z=a/2+b*x/y+1/2;printf("%5.2f\n",z);}标准答案:6.6知识点解析:本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其中包含2位小数,应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解:16.00=9/2+2*x/1.1+1/216.00=4+2*x/1.1+012.00=2*x/1.1所以,x的值为6.6。60、下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。#include<stdio.h>main(){inta,b,c,i;a=c=0;for(i=0;i<=10;i+=2){a+=i;【】;c+=b;}printf("偶数之和=%d\n",a);printf("奇数之和=%d\n",c-11);}标准答案:b=i+1知识点解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2之后和累加至a,所以a的值就是1~10之间的偶数之后;b的值是1~11之间的奇数和,但在输出b值时c去掉多加的11,即为1~10之间的奇数之和。61、下面程序的运行结果是【】。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]=’A’+i+321;sub(s,7,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,inttl,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}标准答案:abcdefglkjih知识点解析:本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。62、以下程序运行结果是【】。#include<stdio.h>longfunc(intx){longp;if(x==0‖x==1)return(2);p=x*func(x-1);return(p);}main(){printf("%d\n",func(4));}标准答案:48知识点解析:本题主要考查的是函数的递归调用,递归的终止条件是x==0或x==1,然后用已知值逐步递推向上求未知值,直到得到最终的结果。func(4)=4*func(3);func(3)=3*func(2);func(2)=2*func(1);func(1)=2;所以func(2)=2*2=4;func(3)=3*4=12;fune(4)=4*12=48。63、下面函数的功能是将一个字符串的内容颠倒过来,请填空。voidfun(charstr[]){inti,j,k;for(i=0,j=【】;i<j;i++,j--){k=str[i];str[i]=str[j];str[j]=k;}}标准答案:strlen(str)-1知识点解析:程序中的for循环就是用来完成串反序的,所以应该对循环的条件进行初始化,所以在[18]应该填入strlen(str)-1。注意,在串反序的时候,不应该把串结束符‘\0’也反序。64、阅读下面程序,则程序的执行结果为【】。#include"stdio.h"fun(intk,int*p){inta,b;if(k==1‖k==2)*p=1;else{fun(k-1,&a);fun(k-2,&b);*p=a+b;}}main(){intx;fun(6,&x);printf("%d\n",x);}标准答案:8知识点解析:函数可以被递归调用,但是不能递归定义。有返回值的函数调用可以出现在表达式可以出现的任何地方。65、设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。标准答案:->知识点解析:若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。66、以下程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出,请填空。#include<stdio.h>main(){inta[3][4]={13,-2,7,5},{1,0,4,-3},{6,8,0,2}};intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};inti,j,c[3][4];for(i=0;i<3;i++)for(j=0;j<4;j++)c[i][j]=【】;for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",c[i][j]);printf("\n");}}标准答案:a[i][j]+b[i][j]知识点解析:此题是双重for循环结构应用在了二维数组中。外层for循环用来控制二维数组的行,内层for循环控制二维数组的列。67、下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。#include<stdio.h>main(){inti;chars[21],*p;for(i=0;i<20;i++)s[i]=getchar();s[i]=【】;p=【】;while(*p)putchar(*p++);}标准答案:\0’s知识点解析:本题选通过for循环从键盘读入20个字符,然后在最后赋一定值’\0’后为结束标志,再使指针p指向字符串的首地址。最后通过while循环对字符串进行扫描并输出。68、以下涵数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#defineN4voidrotade(inta[][N],intb[][N]){inti,j;for(i=0;i<N;i++){b[i][N-1]=【】;【】=a[N-1][i];}}标准答案:a[0][i]b[i][o]知识点解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中正确的是()。A、算法的执行效率与数据的存储结构无关B、算法的空间复杂度是指算法程序中指令(或语句)的条数C、算法的有穷性是指算法必须能在执行有限个步骤之后终止D、以上3种描述都不对标准答案:C知识点解析:算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。2、数据的存储结构是指()。A、数据所占的存储空间B、数据的逻辑结构在计算机中的存放形式C、数据在计算机中的顺序存储方式D、存储在计算机外存中的数据标准答案:B知识点解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。3、栈和队列的共同点是()。A、都是先进先出B、都是先进后出C、只允许在端点处插入和删除元素D、没有共同特点标准答案:C知识点解析:栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的一端进行插入操作,而在另一端进行删除操作。4、有下列二叉树,对此二叉树中序遍历的结果为()。A、ABCDEFB、BDAECFC、ABDCEFD、ABCDFE标准答案:B知识点解析:对二又树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左,右子树时,注意依旧按照“左子树—根结点—右于树”的顺序。5、对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。A、125B、n/2C、nD、n+1标准答案:C知识点解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。6、源程序的文档化不包括()。A、符号名的命名要有实际意义B、正确的文档形式C、良好的视觉组织D、正确的程序注释标准答案:B知识点解析:源程序的文档化主要包括3点:①符号名应具有一定实际的含义,便于理解程序功能;②正确的程序注释;③良好的视觉组织(利用空格、空行、缩进等技巧使程序层次清晰)。7、下列描述中正确的是()。A、软件工程只是解决软件项目的管理问题B、软件工程主要解决软件产品的生产率问题C、软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D、软件工程只是解决软件开发过程中的技术问题标准答案:C知识点解析:软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。8、为了提高软件模块的独立性,模块之间最好是()。A、控制耦合B、公共耦合C、内容耦合D、数据耦合标准答案:D知识点解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。9、数据库系统的核心是()。A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:B知识点解析:数据库系统由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织,数据操纵、数据锥护、控制及保护和数据服务等工作。10、待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。A、3B、5C、7D、9标准答案:B知识点解析:快速排序的基本思想是;从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面.结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c)}若运行时从键盘上输入987643210则上面程序的输出结果是______。A、a=98,b=75,c=4321B、a=10,b=432,c=8765C、a=98,b=765.000000c=4321.000000D、a=98,b=765.0,c=4321.000000标准答案:C知识点解析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。12、请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}A、5,2,3B、-5,-12,-7C、-5,-12,-17D、5,-2,-7标准答案:B知识点解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同—个存储单元,在执行函数后,s的值随*z变化,所以此次函数披调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。13、设整型数i=5,则printf("%d"i+++++i);的输出为______。A、10B、11C、12D、语法错误标准答案:D知识点解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。14、若要用下面的程序片段使指针变量p指向—个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。A、intB、int*C、(*int)D、(int*)标准答案:D知识点解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之为在型一致,强制类型转换的格式为(数据类型*)。15、下面程序输出的结果是______。main(){inti=5,j=9,x;x=(i=j?i:(j=7));printf("\n%d,%d",i,j)}A、5,7B、5,5C、语法错误D、7,5标准答案:A知识点解析:条件表达式的—般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i=j,不等,执行j=7;然后执行x=7。故本题为A。16、若有以下定义和语句: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标准答案:A知识点解析:引用—个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。B、C的内容为a[3],D将[2]前自加,结果为4。17、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。A、’a’&&’b’B、a<=bC、a||+c&&b-cD、!((a<b)&&!c||1)标准答案:D知识点解析:选项A:’a’&&’b’是字符a与b的相与,不为0;选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<b)&&!c||1),运算结果为0。18、设有如下程序#include<stdio.h>main(){int**k,*j,i=100j=&i;k=&j;printf("%d\n",**k);}上述程序的输出结果是______。A、运行错误B、100C、i的地址D、j的地址标准答案:B知识点解析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。19、设有以下语句,其中不是对a数组元素的正确引用的是:______(其中0≤i≤0)inta[10]={O,12,3,4,5,6,7,8,9},*p=a;A、a[p-a}B、*(&a[i])C、p[i]D、*(*(a+i)标准答案:D知识点解析:观察程序可知,a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。20、以下程序运行后,输出结果为______。main(){inta[2][3]{1,3,5,7,9,11}*s{2]**pp,*p;s[0]=a[0],s[1]=a[1]pp=sp=(int*)malloc(sizeof(int));**pp=s[1][1];p=*pp;printf("%d\n",*p);}A、1B、7C、9D、11标准答案:C知识点解析:s是—个含有两个元素的指针数组,pp是—个指向指针变量的指针,s[0]是指向二维数组a行下标为0的元素的首地址,即a[0][0]的地址,s[1]为a[1][0]的地址。pp的值为s[o]的地址。*pp=s[1][1])后,a[0][0]的值将被赋值为a[1][1]的值,执行p*pp;后,p中将是s[0]的值,最后的输出语句将输出地址s[0])所指向的数据,即时a[0][0]。三、选择题(2分)(本题共20题,每题1.0分,共20分。)21、若变量已正确定义,下列正确的程序段是()。A、while(ch=getchar()==’\N’)putchar(ch);B、while((ch=getchar())==’\n’)putchar(ch);C、while((ch=getchar())!=’\N’)putchar(ch);D、while((ch=getchar())!=’\n’)putchar(ch);标准答案:D知识点解析:本题考查两个知识点:①C语言用’\n’这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。22、若有下列定义,则对a数组无素地址的正确引用是()。inta[5],*p=a;A、p+5B、*a+1C、&a+1D、&a[0]标准答案:D知识点解析:本题考查如何引用数组元素的地址。选项A)中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误;选项B)中,*a+1指的是将数组a的第一个元素加1;选项C)中,这种引用方式错误;选项D)中,&a[0]引用的是数组的首地址。23、若有定义:"inta[2][3];"则对a数组的第i行第j列无素的正确引用为()。A、*(*(a+i)+j)B、(a+i)[j]C、*(a+i+j)D、*(a+i)+j标准答案:A知识点解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。24、下列选项中,当x为大于1的奇数时,值为0的表达式是()。A、x%2==1B、x/2C、x%2!=0D、x%2==0标准答案:D知识点解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项D)等于关系表达式的结果为假,即等于0。25、下列叙述中不正确的是()。A、在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B、在C的函数中,最好使用全局变量C、外部变量可以在函数之间传递数据D、自动变量实质上是一个函数内部的局部变量标准答案:B知识点解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。26、定义下列结构体(联合)数组:structst{charname[15];intage;}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};执行语句printf["%d,%c",a[2].age,*(a[3].name+2))的输出结果为()。A、15,AB、16,HC、16,AD、17,H标准答案:C知识点解析:本题主要考查结构体数组。a[2].age为结构体a[2]的age成员,即160a[3].name为指向结构体a[3]的name成员的第一个元素的指针,即指向“Z”,(a[3].name+2)将指针后移两位指向第三个元素“A”,*(a[3]).name+2))是取指针所指向地址的内容。27、设有下列语句inta=1,b=2,c;c=a^(b<<2);执行后,C的值为()。A、6B、7C、8D、9标准答案:D知识点解析:变量b的初值等于2,所以表达式b<<2表示b的值二进制左移两位,即扩大4倍,所以变量b的等于8。然后与a的值1进行异或运算,得9。28、有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<CR>45678<CR>则输出结果是()。A、1267B、1256C、1278D、1245标准答案:D知识点解析:当用scanf函数从键盘愉入数据时,每行数据的末尾按下回车键(Enter键)之前,可以任意修改。但按下回车键putchar(c1)(Enter键)之后,scanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入123<CR>时,变量c1、c2、c3的值分别为1、2、3,当输入45678<CR>时,变量c5、c6的值4和5。所以用输出函数putchar(c1)输出1,putchar(c2)输出2,printf("%c%c\n,c5,c6)输出45。所以选项D)为正确答案。29、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;A、st.iB、*p.iC、(*p).iD、p->i标准答案:B知识点解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.1,也可以用等价的指针形式,即(*p).i和p->i。30、字符串"\\\"ABCDEF\"\\"的长度是()。A、15B、10C、7D、8标准答案:B知识点解析:本题涉及字符串最基本的两个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杠“\”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\”连同后面的字符为一个长度。31、下列选项中,值为1的表达式是()。A、1-’0’B、1-’\0’C、’1’-0D、’\0’-’0’标准答案:B知识点解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的ASCII码值再参与整数运算。字符’1’对应的ASCII码值是49,字符’0’对应的ASCII码值是48,字符’\0’是字符串结束标识符NULL,其对应的ASCII码值是0。32、有下列程序:fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后输出的结果是()。A、7B、3C、2D、0标准答案:C知识点解析:因为在函数fun(intx)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:"fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2",所以最后的输出结果为2。33、下列程序的输出结果是()。#include<stdio.h>intfun(intx){intp;if(x==0‖x==1)return3;elsep=x-fun(x-2);returnp;}voidmain(){printf("\n%d",fun(5));}A、5B、3C、7D、1标准答案:A知识点解析:本题考查函数的递归调用。在函数递归调用时,fun(5):a=5-fun(3)->fun3=a=3-fun(1)->fun(1):a-3,反推回去fun(3):a=3-3=0->fun(5):a=5-0=5,最后的计算结果为5。34、下列程序的输出结果是()。point(char*pt);main(){charb[4]={’a’,’c’,’s’,’f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}A、sB、cC、fD、a标准答案:C知识点解析:本题考查函数调用时的参数传递。函数point的参数为字符指针,当执行函数point时,刚开始指针p指向“a”,经过+3操作后,指针p指向“f”所以最后的输出结果是f。35、已有定义int(*q)(),指针q可以()。A、指向函数的入口地址B、代表函数的返回值C、表示函数的类型D、表示函数返回值的类型标准答案:A知识点解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。36、下列程序的输出结果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}A、5,6B、5,5C、6,6D、6,5标准答案:A知识点解析:转义字符’\n’表示换行,’\\’表示反斜杠,函数strlen()是计算字符串的长度,不包括文件结束标志(’\0’),函数sizeof()统计字符串所占的字节数。37、下列选项中不会引起二义性的宏定义是()。A、#defineS(x)X*XB、#defineS(x)(x)*(x)C、#defineS(x)(x*x)D、#defineS(x)((x)*(x))标准答案:D知识点解析:本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。38、若有运算符:>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列次序为()。A、*=<<>%sizeofB、<<*=>%sizeofC、%=><<sizeof%D、*=><<%sizeof标准答案:D知识点解析:本题主要考查算术运算的优先级。顺序如下;*=、>、<<、%、sizeof的优先级依次递增。39、在C语言中,下列关于文件操作的叙述正确的是()。A、对文件操作必须先关闭文件B、对文件操作必须先打开文件C、对文件操作顺序没有统一规定D、以上全错标准答案:B知识点解析:本题考查对文件的操作。文件打开后才可以对文件进行操作,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。40、利用fseek函数可实现的操作是()。A、实现文件的顺序读写B、改变文件的位置指针C、实现文件的随机读写D、以上答案均正确标准答案:D知识点解析:改变文件位置指针函数fseek()的功能是:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。四、公共基础填空题(本题共5题,每题1.0分,共5分。)41、测试用例包括输入值集和【】值集。标准答案:输出知识点解析:软件测试用例是为了有效发现软件缺陷而编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。42、某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。标准答案:19知识点解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。43、数据结构分为逻辑结构与存储结构,线性链表属于【】。标准答案:存储结构知识点解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间前后件关系的信息。44、在关系模型中,把数据看成一个二维表,每一个二维表称为一个【】。标准答案:关系知识点解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名;表中的一行称为一个元组,相当于记录值。45、数据库设计分为以下6个设计阶段:需求分析阶段、【】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。标准答案:概念设计阶段知识点解析:数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。五、填空题(本题共6题,每题1.0分,共6分。)46、阅读下面程序段,则执行后输出的结果是【】。#include"stdio.h"main(){charfun(char,int);chara=’A’;intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}标准答案:N知识点解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符“A”的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。47、阅读下面语句,则程序的执行结果是【】。#include"stdio.h"main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,b);elseprintf("%d,%d\n",b,a);}标准答案:1,0知识点解析:与运算两边的语句必须同时为真的,结果才为真。当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。48、以下程序的输出结果是【】。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31fun(6,3,a)printf("%d",a)}标准答案:31知识点解析:在函数调用时,形参值的改变,不会改变实参值。49、以下程序的输出结果是【】。main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}标准答案:BCDCDD知识点解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值“BCD”并换行,依次执行循环语句。50、以下程序的输出结果是【】。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}标准答案:22知识点解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版装配式厂房买卖合同范本3篇
- 二零二五年方木产业园区建设与购销合作合同3篇
- 二零二五版快递物流服务合同汇编3篇
- 二零二五年度空压机设备零配件供应与仓储合同3篇
- 二零二五年文化活动兼职主持人聘任合同范本2篇
- 2025版快递驿站快递服务场地租赁及配套设施合同模板2篇
- 二零二五年无线基站场地天面租赁及维护合同3篇
- 二零二五版能源企业安全生产责任合同3篇
- 二零二五版建筑工程混凝土材料绿色认证合同文本2篇
- 二零二五年知识产权贷款抵押担保合同标准版2篇
- 团队成员介绍
- 水泵行业销售人员工作汇报
- 《流感科普宣教》课件
- 离职分析报告
- 春节家庭用电安全提示
- 医疗纠纷预防和处理条例通用课件
- 厨邦酱油推广方案
- 乳腺癌诊疗指南(2024年版)
- 高三数学寒假作业1
- 保险产品创新与市场定位培训课件
- (完整文本版)体检报告单模版
评论
0/150
提交评论