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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷6(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、C程序中的每…行只能写一条语句B、简单C语句必须以分号结束C、C语言程序中的注释必须与语句写在同一行D、C语句必须在一行内写完标准答案:B知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。2、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A、连接符B、大写字母C、数宁字符D、下划线标准答案:A知识点解析:在C语言中,合法标识符的命令规则是:标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。在C语言的标识符中,大写字母和小写字母被认为是两个不同的字符。选项A是连字符,不在C语言规定的命名变量标识符的范围内。3、下列描述中,正确的是()。A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。4、程序测试的目的是()。A、为被测程序设计正确的测试用例B、发现并改正程序中的错误C、发现程序中的错误D、改正程序中的错误标准答案:C知识点解析:程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为发现错误而执行程序的过程,而不是改正错误。故正确答案为C。5、数据流程图(DFD图)是A、软件概要设计的工具B、软件详细设计的工具C、结构化方法的需求分析工具D、面向对象方法的需求分析工具标准答案:D知识点解析:DFD(数据流图Data-Flow-Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示。它直接支持系统功能建模。在软件详细设计的过程阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述。常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO;表格工具:判定表:语言工具:PDL(伪码)。6、若有以下程序main(){inta=-2,b=0;do{++b;}while(a++);printf("%d,%d\n",a,b);}则程序的输出结果是A、0,2B、1,2C、1,3D、2,3标准答案:C知识点解析:由于a的初始值等于-2,所以while循环语言执行三次结束,第一次a=-2,b=1,然后判断循环条件a++非零,执行第二次循环体a=-1,b=2,判断循环条件非零,执行循环体a=0,b=3,判断循环条件为0,此时变量a的值等于1。7、下列特征中不是面向对象方法的主要特征的是()。A、多态性B、标识惟一性C、封装性D、耦合性标准答案:D知识点解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。8、数据字典(DD)所定义的对象都包含于()。A、软件结构图B、方框图C、数据流图(DFD图)D、程序流程图标准答案:C知识点解析:数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各元素做出详细的说明。9、若有定义语句:intx=10;则表达式x-=x+x的值为()。A、-10B、-20C、0D、10标准答案:A知识点解析:考查复合赋值运算符。x-=x+x与x=x-(x+x)等价,所以输出结果为A)。10、表达式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5标准答案:C知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。11、以下不能用于描述算法的是A、程序语句B、E—R图C、伪代码和流程图D、文字叙述标准答案:B知识点解析:E—R图为实体.联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。描述算法的有流程图,盒图,伪代码,文字描述以及程序代码描述。12、一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是()。A、1:1联系B、1:m联系C、m:1联系D、m:n联系标准答案:D知识点解析:因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为m:n。13、以下程序的输出结果是()。#includemain(){chara=4;printf(’’%d’’,a=a<<1);}A、8B、16C、64D、4标准答案:A知识点解析:本题主要考查按位左移运算。左移一位等于乘以2,a=4的二进制为00000100,a<<1后为00001000,其值为十进制数值8。14、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A、switch(a==1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}标准答案:A知识点解析:if语句的含义是如果a的值为1,将b的值赋给a,否则将a的值自增1?Swich(a==1)中表达式a==1的结果如果为真即为1,则从case1开始执行,直到遇到break语句跳出switch语句,如果a==1的结果如果为假即0,则从case0开始执行,所以与题干含义执行操作相反的是选项A中的语句。15、以下叙述中正确的是A、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变B、对于逻辑表达式:a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变C、关系运算符的结果有三种:0,1,-1D、else不是一条独立的语句,它只是if语句的一部分标准答案:D知识点解析:else不能单独使用,和if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仅有0和1。16、若有以下程序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,循环退出。17、有以下程序#inCludemain(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++)printf("%d",a[i]);}A、1,2,3,4,5,6B、6,5,4,3,2,1,C、4,5,6,1,2,3,D、1,2,3,3,2,1,标准答案:B知识点解析:在程序中定义了一个整型数组a[6],并对它赋初值,并以写入的方式打开了文件d2.dat。然后利用一个for循环把数组a中的元素数据写入文件d2.dat中,调用函数rewind把将文件内部的位置指针重新指向一个文件的开头,再利用for循环语句把文件中的数据依次写入到倒序排列的数组a中,最后输出数组a中的数组元素。18、以下叙述中错误的是A、函数的返回值类型不能是结构体类型,只能是简单类型B、只要类型相同,结构体变量之间可以整体赋值C、可以通过指针变量来访问结构体变量的任何成员D、函数可以返回指向结构体变量的指针标准答案:A知识点解析:函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。19、下面不属于软件设计阶段任务的是A、软件总体设计B、算法设计C、制定软件确认测试计划D、数据库设计标准答案:C知识点解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。20、有以下程序#include<stdio.h>voidmain(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf("%d\n",c);}A、9B、7C、5D、3标准答案:D知识点解析:在这段程序中,整型变量c的初始值赋为0,在第一次执行for循环语句时,因为此时变量k的值等于1,所以在switch语句中首先执行default语句,给变量c的值加1,因为在default语句后面没有break语句,所以就会接着执行case2这条语句,再给变量c的值加1,其值变为2,这时退出switch语句块,进入第二次for循环,此时k的值等于2,就会执行switch语句块中的case2这条语句,再给变量c的值加1,这时变量c的值就是3,此时退出switch语句块,循环变量k的值加1,成为3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量c的值在屏幕上输出。21、有以下程序main(){inti=1;i=i^i;printf("%d\n",i);}程序运行后的输出结果是A、-1B、0C、1D、7标准答案:B知识点解析:按位异或(n)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0:若数不同,该位的结果为1。本题中表达式i^i的值必为0,因为i的各个位置的二进制值相同。22、下列函数的功能是voidfun(char*a,char*b){while((*b=*a)!=’\0’){a++;b++;}}A、将a所指字符串赋给b所指空间B、使指针b指向a所指字符串C、将a所指字符串和b所指字符串进行比较D、检查a和b所指字符串中是否有’\0’标准答案:A知识点解析:While循环条件为:(*b=*a)!=’\0’,执行时先把指针a所指向的字符赋给指针b所在内存单元,如果该字符不是结束标识"\0",执行循环体a++;b++;,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在内存单元,直到遇到结束标识为止。因此A选项正确。23、以下选项中能表示合法常量的是A、1,200B、1.5E2.0C、’\’D、\007标准答案:D知识点解析:A选项中整型常量应表示为1200,不能包含","。B选项中E后面的指数必须为整数。C选项中转义字符以"\"开始,若要表示字符"\",应写为"\\"。24、软件生命周期是指()。A、软件的运行和维护B、软件的需求分析、设计与实现C、软件的实现和维护D、软件产品从提出、实现、使用维护到停止使用退役的过程标准答案:D知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。25、若有语句:void*P=malloc(80);,则以下叙述错误的是()。A、可以通过指针P直接访问用malloc开辟的这块内存B、p所指内存可以通过强制类型转换当作具有20个int型元素的一维数组来使用C、p所指内存可以通过强制类型转换当作具有10个double型元素的一维数组来使用D、p所指内存可以通过强制类型转换当作具有80个char型元素的一维数组来使用标准答案:A知识点解析:题意中使用malloc()函数分配了80个字节的内存单元,void指针p指向该内存单元,在C语言中,void*不能直接使用,必须利用强制类型转换将其转成所需的类型才能使用,选项A错误;int类型的元素占4个字节,所以可以将p指向的内存强制类型转换成具有20个int类型的一维数组来使用,同理,也可以强制类型转换成10个double类型的一维数组,或强制类型转换成80个char类型的一维数组,选项B、C、D正确,本题答案为A。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共24题,每题1.0分,共24分。)1、设循环队列的存储空间为Q(1:m),初始状态为空。现经过一系列正常的人队与退队操作后,front=m,rear=m-1,此后从该循环队列中删除一个元素,则队列中的元素个数为()。A、m-1B、m-2C、0D、1标准答案:B知识点解析:在循环队列中,如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m。该题中m-1<m,即rear-front<0,则该循环队列中的元素个数为(m-1)-m+m-1。此后从该循环队列中删除一个元素,则队列中的元素个数为m-1-1=m-2。2、下面对“对象”概念描述正确的是()。A、属性就是对象B、操作是对象的动态属性C、任何对象都必须有继承性D、对象是对象名和方法的封装体标准答案:B知识点解析:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。对象可以做的操作表示它的动态行为,通常也称为方法或服务,属性即对象所包含的信息。对象名唯一标识一个对象。对象可以有继承性,但并不是任何对象都必须有继承性。3、以下叙述中正确的是A、在C程序中的八进制和1十六进制,可以是浮点数B、八进制数的开头要使用英文字母o,否则不能与十进制区分开C、整型变量可以分为int型、short型、long型和unsigned型四种D、英文大写字母X和英文小写字母X都可以作为二进制数字的开头字符标准答案:C知识点解析:整型变量分为以下4种类型:①基本型:以int表示。②短整型:以shortint表示,或以short表示。③长整型:以longint表示,或以long表示。④无符号型:以unsignedint表示,选项C)正确,实型常量仅有十进制表示形式,八进制以数字0开头,十六进制开头为0x或者0X,不是二进制。4、以下程序段给数组所有元素输入数据()。main(){intt[10],j=0;while(j<10)scanf("%d",);}A、&t[j+1];B、t+(j++);C、&t[++j];D、t+j;标准答案:B知识点解析:本题利用while循环给数组t的所有元素赋值,横线处应该填写数组元素的地址。选项A)能给t[1]赋值;选项D)只能给t[0]赋值;选项C)可以给下标为1~10的数组元素赋值,但没给a[0]赋值,还使元素的下标越界,因此都不正确。只有选项B)是正确的,在什(j++)中,a代表数组的首地址,当j为0时,输入项是t[0]的地址,第二次循环时,输入项是t[1]的地址,依次类推,直到最后一项t[9]的地址,j为10时退出循环。5、有以下程序main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%cha",a);}程序运行后的输出结果是A、HB、AC、hD、a标准答案:C知识点解析:表达式a=(a>=’A’&&a<=’Z’)?(a+32):a,为条件表达式,如果a是大写字符,则转换为小写字符存放到a中,否则不变。6、有以下程序:#includemain(){intk=一17:prinff(“%d,%0,%x\n”,k,1一k,1一k);}程序的运行结果是()。A、一17,22,12B、一17,12,22C、一17,一22,一12D、17,22,12标准答案:A知识点解析:整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。十进制整常量没有前缀,输出格式控制符为%d;八进制整常量以0作为前缀,输出格式控制符为%0;十六进制整常量以0X或0x作为前缀,输出格式控制符为%x。1一k=18,整型常量18用八进制表示为22,十六进制表示为12,故A选项正确。7、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下面图符名标识的图符不属于数据流图合法图符的是A、控制流B、加工C、数据存储D、源和潭标准答案:A知识点解析:数据流图中的主要图形元素有加工(转换)、数据流、存储文件(数据源)、源和潭等。8、有以下程序:main(){intx=1,y=0,a=0,b=0;switch(x){ease1:switch(y)}}printf(“a=%d,b=%d\n”,a,b);}程序的运行结果是()。A、a=2,b=2B、a=2,b=1C、a=1,b:1D、a=1,b=0标准答案:B知识点解析:case常量表达式只是起语句标号作用,并不使该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1,然后执行外层case2语句的a++;b++;,a为2,b为1,所以结果为B选项。9、若在定义语句:inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是A、scanf("%d%d%d",a,b,c);B、scanf("%d",a,b,c);C、scanf("%d”,p);D、scanf("%d",&p);标准答案:C知识点解析:程序语句inta,b,c,*p=&c;定义了三个整型变量a,b,c,和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(“格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。10、下面属于整数类Ⅰ实例的是A、-101B、101C、101E02D、123.456标准答案:A知识点解析:整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数系。整数不包括小数、分数。选项A是负数,属于整数;选项B是字符串;选项C是科学计数法;选项D是小数。11、以下选项中关于C语言常量的叙述错误的是A、常量分为整型常量、实型常量、字符常量和字符串常量B、经常被使用的变量可以定义成常量C、常量可分为数值型常量和非数值型常量D、所谓常量,是指在程序运行过程中,其值不能被改变的量标准答案:B知识点解析:常量指在程序运行过程中,其值不能被改变的量。常量分为整型常晕(即整常数)、实型常量、字符型常量和字符串常量。常量也可以拔数据类型分为为数据常量和非数据常量。变量是指在程序运行过程中,其值能被改变的量。12、以下选项中,没有编译错误的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’’};B、charstrl[5]=’’pass’’,str2[6];str2=str1;C、charname[10];name=’’china’’:D、charstr4[];str4=’’helloworld’’;标准答案:A知识点解析:选项A是定义了字符数组str3[],并对其赋初值。选项B中语句str2=strl非法,字符数组不能直接赋值。选项C,D和选项B一致。13、设有定义:intx=0,*p;紧接着的赋值语句正确的是A、*p=NULL;B、p=NULL;C、p=x;D、*p=x;标准答案:B知识点解析:定义指针变量时,必须将指针变量初始化为NuLL(为空),否则,如果不赋给它地址,系统会随机给它分配一个地址。14、若有以下程序#include<stdio.h>main(){inta=-11,b=10;a/=b/=-4:printf("%d%d\n",a,b);}则程序的输出结果是A、-1-2B、5-2C、4-3D、5-3标准答案:B知识点解析:对于语句“a/=b,=-4;”相当于“a=a/(b=b/-4);”a初值为-11,b的初值为10,则运算以后10/-4值为-2,-11/-2值为5。15、有以下程序#include#includevoidfun(chars[][10],intn){chart;inti,j;for(i=0;is[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc”};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A、aaaacc,xyB、bcc,aabccC、xy,aaaaccD、aabcc,bcc标准答案:C知识点解析:函数fun(chars[][10],intn)通过两重for循环语句,比较二维字符数组s[][10]的每个字符串的首字符大小,如果前一个字符串首字符大于后一个字符串的首字符,则交换这两个字符串的首字符。在主函数中,语句fun(ss,5)的作用是对二维字符数组ss[5][10]的5个字符串的首字符进行从小到大的排序,不影响各个字符串另外的字符。所以排序结束后,5个字符串的第一个字符依次变为a、a、b、b和x;最后输出第1个和第4个字符串。16、有以下程序#includemain(){intc[6]={10,20,30,40,50,60},*p,*s;P=c;S=&c[5];printf("%d\n",s-P);}程序运行后的输出结果是A、50B、6C、5D、60标准答案:C知识点解析:主函数中指针变量P指向数组c,s保存了数组最后一个元素的地址,那么s-P为两个地址之间的元素差5。17、以下程序的主函数中调用了其前面定义的fun函数#include<stdio.h>……main(){doublea[15],k;k=fun(a);}则以下选项中错误的fun函数首部是A、doublefun(doublea[15])B、doublefun(double*a)C、doublefun(doublea[])D、doublefun(doublea)标准答案:D知识点解析:本题考查函数的定义和调用。根据对fun函数的调用可知,fun函数的返回值为double类型的,输入参数是一个double类型的地址(指针),因此选项D)错误。18、有以下程序#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选项正确。19、有以下程序#includemain(){inta[]={10,20,30,40},*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}程序运行后的输出结果是A、20B、30C、10D、40标准答案:B知识点解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。20、有以下程序main(){inti=1;i=i^i;printf("%d\n",i);}程序运行后的输出结果是A、-1B、0C、1D、7标准答案:B知识点解析:按位异或(n)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0:若数不同,该位的结果为1。本题中表达式i^i的值必为0,因为i的各个位置的二进制值相同。21、有以下程序#includemain(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("data.dat","w+");fprintf(fp,"%d\n",a[0]);for(i=1;i<6;i++){fseek(fp,0L,0);fscanf(fp,"%d",&k);fseek(fp,0L,0);fprintf(fp,"%d\n",a[i]+k);}rewind(fp);fscanf(fp,"%d",&k);fclose(fp);printf("%d\n",k);}程序的运行结果是()。A、21B、6C、123456D、11标准答案:A知识点解析:该段代码以读写的方式打开文件data.dat,然后把数组a的第一个元素写入文件,接下来的for循环是不断读取当前文件中的数据,将该数据和数组a的下一个元素累加后又写入到文件当中(语句"fseek(fp,0L,0);"和"rewind(fp)"的作用是将文件指针移动至文件首),所以最终文件内记录的是数组a中所有元素之和,答案选A。22、有以下程序#include<stdio.h>main(){FILE*fp;charstr[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、28cB、abc28C、abcD、因类型不一致而出错标准答案:B知识点解析:在程序中首先把字符串abc写入到文件myfile.dat中,然后再把整数28追加到字符串abc的后面,最后把文件myfile.dat的内容读入到字符串str中,并把其内容输出。23、有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是A、7,4,2,B、8,7,5,2,C、9,7,6,4,D、8,5,4,2,标准答案:D知识点解析:coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环。第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印--x的操作,即打印5后跳出循环。第三次判断循环条件时x的值为4,满足循环体中if条件,执行打印x--的操作,即打印4,后将x值减一,执行continue语句,跳出本次循环。第四次判断循环条件时x的为2,满足循环体中if条件,打印x--,即打印2后将x减一,执行continue语句,跳出本次循环。在进行for条件表达式中第三个表达式x--的操作后x的值为0,不满足条件结束循环。所以打印结果为8,5,4,2,。24、将E-R图转换为关系模式时,实体和联系都可以表示为()。A、属性B、键C、关系D、域标准答案:C知识点解析:从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。25、设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)A、10□X<回车>20□Y<回车>B、10□X20□Y<回车>C、10X<回车>20Y<回车>D、10□X□20□Y<回车>标准答案:知识点解析:输入数据的格式必须与scanf()的格式控制串完全匹配,如果A、B、C选项中在数字10后面均输入了空格,则会将空格赋给变量c1,而不是把X赋给c1,所以选择C选项。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。2、在调用函数时,如果参数是简单变量,它与对应形参之间的数据传递方式是()。A、单向值传递B、地址传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定标准答案:A知识点解析:C语言规定,简单变量或数组元素为实参时,是单向值传递,即实参可以改变形参的值,但形参不能改变实参的值。3、数据库应用系统中的核心问题是A、数据库设计B、数据库系统设计C、数据库维护D、数据库管理员培训标准答案:A知识点解析:在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。所以数据库设计是数据库应用的核心。4、合法的C语言标识符是()。A、_1_B、2_8C、voidD、unsigned标准答案:A知识点解析:用户的标识符只能由字母或下划线开始,其他任何字符开始均会出错。一般强调文见其义的命名方法。但是C语言中的保留字不能用作用户的标识符。而选项C和D全部为保留字,选项B中以数字开头,这些都不正确。5、以下叙述中错误的是()。A、gets函数用于从终端读入字符串B、getehar函数用于从磁盘文件读入字符C、fputs函数用于把字符串输出到文件D、fwrite函数用于以二进制形式输出数据到文件标准答案:B知识点解析:本题考查字符处理函数和文件读写函数,属于基础知识。其中B选项的getchar函数用于从终端读入字符。6、有两个关系R,S如下,由关系R和S通过运算得到关系T,则所使用的操作为()。A、并B、自然连接C、笛卡尔积D、差标准答案:D知识点解析:由关系可以看出,关系T是由关系R中减去关系R和关系S共有的元组得到的,所以答案选择D。7、数据库设计过程不包括A、概念设计B、逻辑设计C、物理设计D、算法设计标准答案:D知识点解析:数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计。8、以下关于逻辑运算符两侧运算对象的叙述中正确的是()。A、可以是任意合法的表达式B、只能是整数0或非0整数C、可以是结构体类型的数据D、只能是整数0或1标准答案:A知识点解析:逻辑运算符两侧的运算对象可以任意合法的表达式,最终会根据两侧表达式计算出的数值来判定该逻辑表达式为真(1)或假(0)。答案选A。9、关于字符数组定义中存在语法错误的是()。A、charss[][20]={’’right’’};B、char*ss[6];ss[1]=’’right?’’;C、char*ss[]={’’right?’’};D、charss[6][20];ss[1]=’’right?’’;标准答案:D知识点解析:本题考查字符数组,选项D中定义了二维数组ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C和A不同,选项B为指针数组,对于指针变量可以保存常量字符串的地址。10、C语言程序中,运算对象必须是整型数的运算符是A、/B、%C、&&D、*标准答案:B知识点解析:%要求参与运算的运算量为整型,其他三个运算符对于参与运算的运算量没有直接要求。11、关于结构体说明和变量定义中,正确的是()。A、typedefstructabc{intn;doublem;}ABC;ABCx,y;B、structabc{intn;floatm};structabcx,y;C、structABC{intn;floatm;}structABCx,y;D、structabc{intn;floatm;};abcx,y;标准答案:A知识点解析:结构体的定义是正常的C语言语句。选项B中结构体定义中每个成员后面的分号都不能省略,选项C结构体类型定义完毕后的}外没加分号,选项D中定义变量要加上关键字struct。12、以下不构成无限循环的语句或语句组是A、n=0;do{++n;}while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);{n--;}D、for(n=0,i=1;;i++)n+=i;标准答案:A知识点解析:选项B)中while(1)永远为真所以进入死循环,选项C)中while(n=10)同理,选项D)中for循环没有循环限定条件也将进入无限循环,只有选项A)中while(n<=0)循环判定成立,循环将不进入无限循环。13、以下叙述中正确的是A、break语句不能用于提前结束for语句的本层循环B、continue语句使得整个循环终止C、使用break语句可以使流程跳出switch语句体D、在for语句中,continue与break的效果是一样的,可以互换标准答案:C知识点解析:用break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体,从而提前结束循环。而continue语句的作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。14、若变量已正确定义for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环()。A、执行4次B、执行3次C、执行无限次D、执行次数不定标准答案:A知识点解析:for语句的一般形式为"for(表达式1;表达式2;表达式3){循环体语句}",其执行流程是先计算表达式1,之后计算表达式2,根据表达式2的值来判定是否进行循环,若为真,则执行循环体,循环体执行完毕之后再计算表达式3的值。该循环的循环条件是(y!=99&&x<4),每次循环后x自增1,x由0自增到3,循环执行4次,答案选A。15、下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是A、if(s1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、if(strcmp(s2,s1)==0)ST;D、if(s1-s2==0)ST;标准答案:C知识点解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp(),如果这个函数的返回值等于0,说明两个字符串相等。16、有以下程序#includemain(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是A、ChinangB、ChinaC、ChinaBeijingD、BeijingChina标准答案:A知识点解析:本题主要查函数fwtite的使用。函数fwrite的凋用形式为:intfwrite(chat*pt,unsignedsizc,unsigncdn,FILE*fp);其功能是把pt所指向的n*size个字节输出到fn所指文件中。在本题中fwritc(s2,7,1,pf);的功能是把字符串“Beijing”输入到文件abc.dat中,然后调用rewind(pf),把文件位置指针回到文件开头,再调刚fwrite(s1,5,1,pf)把字符串“china”写入到文件abc.dat中,所以此时文件abc.dat的内容为Chinang。17、有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的运行结果是A、0B、1C、2D、3标准答案:B知识点解析:在程序中,内层循环判断条件为““j<=i”,而i的初值为3,故当外层循环变量i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时循环才会执行一次。因为m的值为55对3求余结果为1。18、有以下程序#include#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;iA、-3,-1,1,3,B、-12,-3,0,0,C、0,1,2,3,D、-3,-3,-3,-3,标准答案:A知识点解析:函数fun()的功能是计算b[i]:b[0]=a[0][0]-a[0][3]=-3,b[1]=a[1][1]-a[1][2]=-1,b[2]=a[2][2]-a[2][1]=1,b[3]=a[3][3]-a[3][0]=3,所以计算得到的y值为选项A)。19、有以下程序#include<stdio.h>intfun(inta,intb){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序运行后的输出结果是A、15B、21C、20D、31标准答案:B知识点解析:本题考查函数的调用,函数fun功能为求两个数据的和。主函数中表达式r=fun(fun(x,y),z--),首先计算内层调用fun(x,y),计算结果为13,然后外层调用fun(13,8),结果为21。20、有以下程序#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、10B、8C、9D、7标准答案:C知识点解析:本题考查函数的嵌套调用。首先计算f(a,b)与f(a,c),f(a,b)=(b-a)*a=3,f(a,c)=(c-a)*a=6,然后计算f(3,6)=(6-3)*3=9。21、若有以下程序#include<stdio.h>voidsp(int*a){intb=2;main(){intk=3,*p=&k;a=&b;sp(p);*a=*a*2;printf("%d,%d\n",k,*p);printf("%d,",*a);}}则程序的输出结果是A、4,3,4B、4,3,3C、6,3,6D、6,6,6标准答案:B知识点解析:主函数中定义指针变量p指向k,调用函数sp(p),将k的地址传递给形参指针a,函数转到sp运行,a指向b的地址,表达式*a=*a*2,相当于b=b*2,得到*a的数据4输出。函数调用结束,此时a和b的空间撤销,而对实参k和p的值并没有改变,仍旧是3。22、有以下程序#include<stdio.h>voidfun(char**p){++p;printf("%s\n",*p);}main(){char*a[]=("Morning","Afternoon","Evening","Night");fun(a);}程序的运行结果是A、fternoonB、MorningC、orningD、Afternoon标准答案:D知识点解析:在程序中,指针的指针变量a和p都是指向字符串的指针。执行fun(a)语句时,p指向的是字符串数组a的第一个字符串“Morning”,p自加1之后,*p指向了字符串数组a的第2个字符串“Afternoon”。23、设有定义charstr[]="Hello";则语句printf("%d%d",sizeof(str),strlen(str));的输出结果是A、55B、66C、65D、56标准答案:C知识点解析:本题考查sizeof和strlen对字符串的处理不同之处,sizeof求出字符串的字符个数,包括结尾符。Strlen求出字符串的实际字符,不包括结尾符。所以答案为6,5,C选项正确。24、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是A、c=(’A’+c)%26-’a’B、c=c+32C、c=c-’A’+’a’D、c=(c-’A’)%26+’a’标准答案:A知识点解析:根据题意可知,小写字母比与之对应的大写字母的ASCII码大32,A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义所以选择A选项。25、设有定义doublea[10],*s=a;以下能够代表数组元素a[3]的是A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3标准答案:B知识点解析:指针的赋值首先基类型必须一致,s二维数组名,是二维数组的首地址,其基类型是一个具有10个元素的字符数组。p是一个字符指针变量,其基类型是一个字符,k是一个行指针,其基类型是具有3个元素的字符型数组。所以A、C、D中两项的基类型不一致。而B选项,s[0]是二维数组s的第一个元素,其代表第一行元素构成的数组的首地址,其相当于一维数组的数组名,其基类型是一个字符类型,和p基类型一致。因此B选项正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、结构化程序的三种基本控制结构是()。A、顺序、选择和调用B、过程、子程序和分程序C、顺序、选择和重复(循环)D、调用、返回和转移标准答案:C知识点解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。2、以下叙述中正确的是A、在C程序中的八进制和十六进制,可以是浮点数B、八进制数的开头要使用英文字母o,否则不能与十进制区分开C、整型变量可以分为int型、short型、。long型和unsigned型四种D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符标准答案:C知识点解析:整型变量分为以下4种类型:①基本型:以int表示。②短整型:以shortint表示,或以short表尔。③长整型:以longjnt表示,或以long表示。④无符号型:以unsignedint表示,选项C)正确,实型常量仅有十进制表示形式,八进制以数字0开头,十六进制开头为0x或者0X,不是二进制。3、数据库管理系统是()。A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统标准答案:B知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等,是一种在操作系统之上的系统软件。4、软件生存周期中,解决软件“做什么”的阶段是()。A、需求分析B、软件设计C、软件实现D、可行性研究标准答案:A知识点解析:软工生命周期可细化为可行性研究和计划制定、需求分析、软件设计(总体设计和详细设计)、编码、软件测试、运行和维护等阶段。需求分析是对待开发软件提出的需求进行分析并给出详细定义,是解决软件“做什么”的阶段。软件设计是解决软件“怎么做”的阶段。5、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n一1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n一1)/2、快速排序n(n—1)/2、简单插入排序n(n一1)/2、希尔排序O(n1.5)、单选择排序n(n一1)/2、堆排序D(nlog2n)。6、软件需求规格说明书的作用不包括()。A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件需求规格说明书的作用为:便于用户、开发人员进行理解和交流;反映出用户问题的结构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。所以答案选择D。7、计算机能直接执行的程序是()。A、可执行程序B、目标程序C、汇编程序D、源程序标准答案:A知识点解析:源程序指程序员编写的代码,即为后缀为.c的文件;源程序经过编译器编译后形成目标程序,是二进制文件,此时程序还不能直接运行,还需要经过链接,将所包含的头文件等与自身的目标文件链接,最后形成可执行程序,才可由计算机直接执行。汇编程序指用汇编语言编写的源程序。答案选A。8、下列选项中能正确定义数组的语句是()。A、inthum[0…2008];B、intnum[];C、intN=2008;intnum[N];D、#defineN2008intnum[N];标准答案:D知识点解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。D选项正确。9、有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));pfinff(’’%d\n’,m);}intf(intx){returnx*2;}程序的运行结果是()。A、8B、2C、4D、1标准答案:A知识点解析:第一次调用m=f(f(f(1))),第二次为m=f(f(2)),第三次为m=f(4),即返回值为8。10、关于字符数组的定义中有语法错误的是()。A、charstr[3][10];str[1]=’’guest’’;B、charstr[][10]={’’guest’’};C、char*str[3];str[1]=’’guest’’;D、char*str[]={’’guest’’};标准答案:A知识点解析:本题考查字符数组的定义和使用。选项A定义了一个二维字符数组,第二句是直接给字符数组赋值,错误。C语言中不能直接给字符数组赋值;选项,B、C和D都是正确的。11、有以下程序#includemain(){charb,c;inti;b=’a’;c=’A’;for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf("\n");}程序运行后的输出结果是A、abcdefB、ABCDEFC、aBcDeFD、AbCdEf标准答案:D知识点解析:函数的含义是如果i的值能被2整除,以字符格式打印输出i+c的值,如果i的值不能被2整除打印i+b的值?第一次i值为0,执行else语句打印字符’A’,第二次i值为1,打印1+b的值即字符’b’,第三次i值为2,打印字符’C’,依此类推选择D选项。12、以下叙述中正确的是A、函数的类型不能是指针类型B、函数的形参类型不能是指针类型C、基类型不同的指针变量可以相互混用D、设有指针变量为“double*p”,则“p+1”将指针p移动8个字节标准答案:D知识点解析:在对指针进行加、减算术运算时,数字1表示1个存储单元的长度,而double类型数据在内存中占8个字节,因此移动一次移动8个字节。其他三个都不正确。13、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A、switch(a){case1:a=b:break;default:a++:}B、switch(a==1){case0:a=b;break;case1:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}标准答案:B知识点解析:本题主要考查if和switch结构。“if(a==1)a=b;elsea++;”代码段的功能是如果a等于则把b的值赋值给a,否则a++。选项A使用switch对a进行判断,如果是1则a=b,跳出switch,如果是其他值则a++;选项B对a==1的结果进行switch判断,如果为0表示a不等于1则a=b,和题目要求不符合:选项C和选项A一样;选项D和选项case条件相反,满足题目要求。14、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A、switch(a==1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}标准答案:A知识点解析:ifelse语句的含义是,如果变量a的值等于1,则把变量b的值赋给变量a,否则,变量a的值加1。在本题的4个选项中。与其含义不同的是选项A),表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变量a。15、有以下程序#includeintf(intx){inty;if(x==0‖x==1)return(3);y=x*x—f(x一2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是A、9B、0C、6D、8标准答案:C知识点解析:主函数调用f()函数,将实参3传递给x,进行if条件语句的判断不成立,接着执行y=3*3-f(1),再执行f(1),而f(1)满足if条件语句,所以f[1)的值为3,代入y=3*3-f(1)=9-3=6。16、以下关于宏的叙述中正确的是A、宏定义必须位于源程序中所有语句之前B、宏名必须用大写字母表示C、宏调用比函数调用耗费时间D、宏替换没有数据类型限制标准答案:D知识点解析:本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。17、有以下程序,程序运行后的输出结果是#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}A、31.5B、7.5C、程序有错无输出结果D、14.0标准答案:C知识点解析:本题考查宏定义。预处理语句后面不能加分号,因此程序有错。如果没加分号的话S(a+b)=PT*a+b*a+b=3.5*1+2*1+2=7.5。18、若有定义:intw[3][5];则以下不能正确表示该数组元素的表达式是A、*(*w+3)B、*(*(w+1))C、*(w+1)[4]D、*(&w[0][0]+1)标准答案:C知识点解析:在C语言中,二维数组的名字表示的是二维数组的地址,对于二维数组intw[3][5],可以认为w为一个一维数组,含有3个元素,而每个元素为一个含有5个元素的一维数组。而(w+1)为一个含有两个元素的一维数组,首先和(w+1)[4]结合非法,4超出了二维数组的边界,取值也就是非法的了。19、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,n0=1,则n2=0,总节点数为12=n0+n1+n2=1+n1+0,则度为1的节点数n1=11,故深度为12,选D。20、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:关系T是关系R的一部分,并且是关系R去掉R和S相同的元素,符合差操作。21、有两个关系R和S如下:则由关系R得到关系S的操作是()。A、选择B、投影C、自然连接D、并标准答案:A知识点解析:由关系R到关系S为一元运算,排除C和D。关系S是关系R的一部分,是通过选择之后的结果,因此选A。22、下面描述中不属于数据库系统特点的是A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C错误。23、关于C语言的符号常量,以下叙述中正确的是A、符号常量的符号名是标识符,但必须大写B、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量C、符号常量在整个程序中其值都不能再被重新定义D、符号常量的符号名必须是常量标准答案:B知识点解析:在C语言中,可以用一个标识符来代表一个常量,称为符号常量。这个标识符必须在程序中进行特别的"指定",并符合标识符的命名规则。用作符号常量的标识符通常采用大写字母表示,在主函数中其值不能再被定义。所以选择B选项。24、若有以下程序#includemain(){intc;c=10^5;printf("%d\n",c);}则程序的输出结果是A、5B、15C、10000D、105标准答案:B知识点解析:本题考查位运算中按位异或运算符,异或运算只有在两个比较的位不同时其结果是1,否则结果为0,10用二进制表示为00001010,5用二进制表示为00000101,异或后00001111,即15,选项B正确。25、有以下程序#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、6938B、9824C、4528D、6385标准答案:D知识点解析:本题中首先是将二维字符数组c赋值指针数组p,然后遍历p找到两个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为6385。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、对于一个正常运行的C程序,下列叙述中正确的是()。A、程序的执行总是从main函数开始,在main函数结束B、程序的执行总是从程序的第一个函数开始,在main函数结束C、程序的执行总是从main函数开始,在程序的最后一个函数中结束D、程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束标准答案:A知识点解析:一个C语言源程序无论包括了多少函数,总是从main函数开始执行,从main函数结束。2、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)标准答案:C知识点解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表。在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。3、一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A、219B、221C、229D、231标准答案:A知识点解析:在二叉树中,叶子结点个数为n0,则度为2的结点数n2=n0一1。本题中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点数+度为1的结点数+度为2的结点数=70+80+69=219。4、下列描述中,不符合良好程序设计风格要求的是A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息标准答案:A知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。5、下列叙述中正确的是A、循环队列是队列的链式存储结构B、能采用顺序存储的必定是线性结构C、所有的线性结构都可以采用顺序存储结构D、具有两个以上指针的链表必定是非线性结构标准答案:C知识点解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。所有的线性结构都可以采用顺序存储结构。6、学校的数据库中有表示系和学生的关系:系(系编号,系名称,系主任,电话,地点),学生(学号,姓名,性别,入学日期,专业,系编号),则关系学生中的主键和外键分别是()。A、学号,B、学号,专业C、学号,姓名D、学号,系编号标准答案:D知识点解析:一个属性(即一列),在某张表中不是主键(主码),但在其他表中是主键(主码),则它是第一张表的外键(外码)。在“系”表中,“系编号”为主键;在“学生”表中,“学号”是主键,“系编号”不是主键,则“系编号”是表“学生”的外键。7、在黑盒测试方法中,设计测试用例的主要根据是A、程序内部逻辑B、程序外部功能C、程序数据结构D、程序流程图标准答案:B知识点解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。8、有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序运行后的输出结果是A、0B、1C、-1D、7标准答案:C知识点解析:在while语句中,先判断while后面的表达式是否为0,如果为0,则退出循环,甭则执行循环体。在本题中,当变量a的值经过几次循环后,其值等于0时,退出while循环语句,变量a再执行自减运算,所以其值等于-1。9、有以下函数:intaaa(char*s){char*t=s:while(*t++);t--:return(t-s);}以下关于aaa函数功能叙述正确的是()。A、将串s复制到串tB、比较两个串的大小C、求字符串s的长度D、求字符串s所占字节数标准答案:C知识点解析:本题重点考查的知识点是while循环语句的应用。aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。当t指向结束标识处时,由于后缀++运算符的原因,它还会被再递增1,所以接下来的t--语句让它回到结束标识处。最后返回t-s,s还是指向字符串第一个字符处,而t指向了字符串结尾,故返回值为字符串的长度值,因此C选项正确。10、下面属于白盒测试方法的是A、等价类划分法B、逻辑覆盖C、边界值分析法D、错误推测法标准答案:B知识点解析:白盒测试的主要方法有逻辑覆盖、基本路径测试等。11、若有定义语句:intx=10;则表达式x-=x+x的值为()。A、-10B、-20C、0D、10标准答案:A知识点解析:考查复合赋值运算符。x-=x+x与x=x-(x+x)等价,所以输出结果为A)。12、C源程序中不能表示的数制是A、八进制B、十进制C、二进制D、十六进制标准答案:C知识点解析:在C语言的源程序中,数值可以用十进制、八进制和十六进制来表示。不用二进制来表示。13、若各选项中所用变量已正确定义,函数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知识点解析:在调用子函数时,应对其进行说明。A选项中,调用时没有对子函数进行说明。B、C选项中,被调用函数在主调函数之前定义,不用说明;D选项中,在主函数中对被调用函数的返回值类型进行了说明。因此选择A选项。14、设有课程关系模式:R(C#,Cn,T,TA)(其中,C#为课程号,Cn为课程名,T为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每个课程号下只有一位任课教师,但每位教师可以有多门课程。关系R中对主属性的传递依赖为A、(C#,T)→TaB、C#→Cn,Cn→TaC、C#→T,T→TaD、C#→Tn标准答案:C知识点解析:R关系模式中,不同课程号可以对应相同的课程名而每个课程号下自由一位任课教师,因此课程号和教师名为传递依赖、教师名和教师地址为传递依赖,因此R对主属性的传递依赖为“C#→T→Ta”。15、设有定义:doublex=2.12;,以下不能完整输出变量x值的语句是()。A、printf("x=%5.0f\n",x);B、printf("x=%f\n",x);C、printf("x=%lf\n",x);D、printf("x=%0.5f\n",x);标准答案:A知识点解析:本题考查printf函数的格式输出,"格式控制字符串"部分为"%f"表示按照浮点型输出,选项B)正确;加入长度格式符l即"%l"表示按照双精度浮点型输出,选项C)正确;若要控制输出精度,则需以"."开头,后跟十进制整数,如"%.2f"或"%0.2f",选项D)正确;控制输出宽度则是用整数表示,如"%5f"。选项A)中"%5.0f"表示输出宽度为5,右对齐,小数点后保留位数为0,所以结果输出为2,不能完整输出x,答案选A)。16、以下选项中合法的标识符是A、1月1日B、1_1C、_11D、1__标准答案:C知识点解析:本题考查标识符定义。合法标识符的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。17、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是#include#defineN5Voidfun(intx[N]){intm;for(m=N-1;m>=0;m--)scanf("%d",___);}A、x+mB、x[m+1]C、x+(m++)D、x[++m]标准答案:A知识点解析:本题考查数组和scanf函数的使用。程序通过for循环来给数组元素赋值,赋值语句通过调用scanf函数来实现。scanf函数从键盘接收数据,函数的第二个参数是数据保存的地址,因此选项B和选项D不是地址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环里面又m-自减,会导致死循环,不满足要求,选项A正确。18、若变量已正确定义并赋值,以下不能构成C语句的选项是A、A=a+b;B、B++;C、a=a+bD、A?a:b;标准答案:C知识点解析:C语言语句的表示为分号,不加分号的表达

温馨提示

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

评论

0/150

提交评论