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

下载本文档

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

文档简介

国家二级(C语言)机试模拟试卷16(共9套)(共379题)国家二级(C语言)机试模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性标准答案:B知识点解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。2、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。3、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。4、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。5、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。6、面向对象方法中,继承是指()。A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。7、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。8、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。9、数据库设计中反映用户对数据要求的模式是()。A、内模式B、概念模式C、外模式D、设计模式标准答案:C知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择c。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。10、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、差C、交D、并标准答案:B知识点解析:关系T中的元组是R关系中有而s关系中没有的元组的集合,所以进行的是差的运算。11、计算机能直接执行的程序是()。A、源程序B、目标程序C、汇编程序D、可执行程序标准答案:D知识点解析:计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择D选项。12、以下叙述中正确的是()。A、C语言规定必须用main作为主函数名,程序将从此开始执行B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C、C语言程序、将从源程序中第一个函薮并始执行D、main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等标准答案:A知识点解析:c语言中的主函数只能是main()函数,不能任意指定,所以B选项错误。C语言从主函数main()开始,到主函数main()结束,所以c选项错误。主函数必须写成小写的main,不能混淆大小写,所以D选项错误。13、以下选项中可用做C程序合法实数的是()。A、3.0e0.2B、1e0C、E9D、9.12E标准答案:B知识点解析:A选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。14、下列定义变量的语句中错误的是()。A、int_int;B、doubleint_;C、charFor;D、noatUS$;标准答案:D知识点解析:c语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。15、表达式:(int)((double)9/2)一9%2的值是()。A、0B、3C、4D、5标准答案:B知识点解析:先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一1的值为3,所以选择B选项。16、设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是()。(注:口代表空格字符)A、10口x<回车>B、10口X20口Y<回车>20口Y<回车>C、10X<回车>D、10口X口20口Y<回车>20Y<回车>标准答案:C知识点解析:输入数据的格式必须与scanf()的格式控制串完全匹配,如果A、B、C选项中在数字10后面均输入了空格,则会将空格赋给变量c1,而不是把x赋给c1,所以选择C选项。17、以下选项中不能作为C语言合法常量的是()。A、0.1e+6B、‘cd’C、“\a”D、‘\011’标准答案:B知识点解析:要想表示字符串常量应该用双引号表示,即“cd”,单引号用于表示字符常量,所以B选项中的表示方法错误。18、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A、必须是逻辑值B、必须是整数值C、必须是正数D、可以是任意合法的数值标准答案:D知识点解析:if语句中的表达式可以是任意合法的数值,如常量、变量表达式。所以D选项正确。19、有如下嵌套的if语句:if(aA、k=(ac)?b:c);B、k=(aC、k=(aD、k=(a标准答案:B知识点解析:题目中嵌套语句的含义是当a20、有以下程序:#includemain(){intk=5;while(一一k)printf(“%d”,k一=3);printf(“\n”);}程序执行后的输出结果是()。A、1B、2C、4D、死循环标准答案:A知识点解析:一一k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4—3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。21、有以下程序:#includemain(){inti,j;for(i=3;i>=l;i一一){for(j=l;j<=2;j++)prinff(”%d”,i+j);prinff。(”\n”);}}程序运行后的输出结果是()。A、432543B、453423C、233445D、233423标准答案:B知识点解析:第一次执行外循环,i的值为3,第一次执行内循环j的值为1,j<=2条件成立,打印i+j的值,即4;第二次执行内循环j的值为2,j<=2条件成立,打印i+j的值,即5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。22、有以下程序:#includemain(){intk=5,n=0;do{switch(k){ease1:ease3:n+=1;k一一;break;default:n=0;k一一;case2:ease4:n+=2;k一一;break;}pfintf(“%d”,n);}while(k>0&&n<5);}程序运行后的输出结果是()。A、02356B、0235C、235D、2356标准答案:C知识点解析:k的值为5,逐个对case语句进行匹配,均不匹配,执行default下的语句n=0;k一一。再执行case2:cased.:后面的语句n+=2;k一一;。执行break语句跳出switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k>0&&n<5条件判断为真。第二次执行循环体,执行case3:后面的语句n+=1;k一一;。再执行break语句跳出循环,此时打印n的值3,此时k的值为2。第三次执行循环体k的值为2,满足条件,执行case2:case4:后面的语句n+=2;k一一;执行break语句跳出循环体,打印n的值5。此时n不满足条件k>0&&n<5,所以结束循环。整个程序的打印结果为235。23、以下关于retum语句的叙述中正确的是()。A、一个自定义函数中必须有一条retum语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的retum语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,C选项描述错误。没有retum语句的函数在执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B选项正确。24、已定义以下函数:intfun(int*P){return*P;}fun函数的返回值是()。A、一个整数B、不确定的值C、形参P中存放的值D、形参P的地址值标准答案:A知识点解析:返回值为指针变量指向的数据,该数据已被定义为整型。因此A选项正确。25、以下程序段完全正确的是()。A、int*p;scanf(“%d”,&p);B、int*p;seanf(“%d”,P);C、intk,*p=&k;seanf(“%d”,p);D、intk,*p;*p=&k;seanf(“%d”,P);标准答案:C知识点解析:A选项中错在没有对指针进行初始化,是无效指针,并且在scanf(“%d”,&p)中无需再进行取地址操作;B选项中没有对指针进行初始化,是无效指针;D选项中语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。因此C选项正确。26、设有定义:doublea[10],*s=a;以下能够代表数组元素a[3]的是()。A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3标准答案:B知识点解析:语句*s=a;表示指针变量s指向一维数组a的首地址。a[3]表示引用数组a的第4个元素,*(s+i)表示引用指针s所指数组a的第i+1个元素,选项A、C、D的表示方法错误,只有B选项正确。27、有以下程序:#includevoidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf(“%d,”,a[i]);}程序运行后的输出结果是()。A、6,2,3,4,5,B、2,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,标准答案:A知识点解析:本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取首个数组元素值进行加1运算,循环5次。因此A选项正确。28、有以下程序:#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;im)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};pfinff(“%d\n”,fun(a,4,0));}程序运行后的输出结果是()。A、4B、34C、31D、32标准答案:C知识点解析:本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。29、以下选项中正确的语句组是()。A、char*s;S={“BOOK!”};B、char*s;s=“BOOK!”;C、chars[10];s=“BOOK!”;D、chars[];s=“BOOK!”;标准答案:B知识点解析:A选项去掉大括号就正确了;C选项和D选项应在定义时赋初值。因此B选项正确。30、若有定义语句:char*s1=“OK”,*s2=“ok”;以下选项中,能够输出“OK”的语句是()。A、if(strcmp(s1,s2)!=0)puts(s2);B、if(strcmp(s1,s2)!=0)puts(s1);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)=:0)puts(s1);标准答案:B知识点解析:strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCII码值大小),以第一个不相同的字符的大小作为比较结果。因为‘0’<‘o’,所以strcmp(s1,s2)为负值,只有B选项正确。31、有以下程序:#includevoidfun(char**P){++P:printf(“%s\n”,*P);}main(){char*a[]={“Morning”,“Afternoon”,“Evening”,“Night”};fun(a);}程序运行后的输出结果是()。A、AfternoonB、fiernoonC、MorningD、oming标准答案:A知识点解析:本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和一般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针,所以数组名a可以用做函数fun()的实参。在fun()函数中,++p操作使形参p往后移动一个字符指针的位置,即指针a[1]的位置。故最后通过printf()函数输出的字符串为“Afternoon”。因此A选项正确。32、有以下程序,程序中库函数islower(eh)用以判断ch中的字母是否为小写字母:#include#includevoidfun(char*P){inti=0;while(P[i]){if(P[i]==“&&islower(P[i一1]))P[i一1]=P[i一1]一‘a’+‘A’;i++:}}main(){charsl[100]=“abedEFG!”;fun(s1);printf(“%s\n”,s1);}程序运行后的输出结果是()。A、abcdEFg!B、AbCdEFg!C、abcdEFG!D、aBcDEFG!标准答案:D知识点解析:调用fun函数后,实参数组名s1传给形参指针p,p也指向数组s1。fun函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句p[i一1]=p[i—1]一‘a’+‘A’;即p[i—1]=p[i一1]一32,意思是将p[i—1]中的字符转换为大写。因此D选项正确。33、有以下程序:#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、0B、9C、6D、8标准答案:C知识点解析:主函数中调用f函数,同时将数值3传递给变量x,执行条件不满足条件if(x==0||x==1);跳过return(3);,直接执行语句y=x*x—f(x一2);这里f(x一2)为函数的递归调用,再次调用f函数,此时x=1,判断条件成立,返回3给f(1),y=3*3—3=6,最后将6返回主函数,并进行输出。因此C选项正确。34、有以下程序:#includeintfun(intx[],intf1){staticintsum=0,i;for(i=0;iA、55B、50C、45D、60标准答案:D知识点解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60。因此D选项正确。35、有以下结构体说明、变量定义和赋值语句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句有错误的是()。A、scanf(“%S”,S[0].name);B、scanf(“%d”,&s[0].age);C、scanf(“%C”,&(ps一>sex));D、scanf(“%d”,ps一>age);标准答案:D知识点解析:本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps一>age为一个变量,不是指针,所以错误。36、若有以下语句:typedefstructS{intg;charh;}T;以下叙述中正确的是()。A、可用s定义结构体变量B、可用T定义结构体变量C、S是struct类型的变量D、T是structS类型的变量标准答案:B知识点解析:本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。37、有以下程序:#include#includestructA{inta;charbf[0];doubleC;}.}stmctAf(structAt);main()structAa={1001,“ZhangDa”,1098.0};a=f(a);printf(“%d,%S,%6.1f\n”,a.a,a.b,a.c);}structAf(structAt){t.a=1002;strcpy(t.b,”ChangRong”);t.C=1202.0:returnt;}程序运行后的输出结果是()。A、21002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0标准答案:B知识点解析:本题考查结构体变量的引用以及作为函数参数,题日虽然看似复杂,其实比较容易,f函数的参数是结构体变量,然后对参数重新赋值并返回,所以该题目的答案为B选项。38、设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是()。A、判断m是否能被5和7整除B、判断m被5和7整除是否都余1C、判断m被5或者7整除是否余1D、判断m是否能被5或者7整除标准答案:B知识点解析:本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。39、有以下程序:#includemain(){inta=1,b=2,c=3,x;X=(a^b)&c:printf(“%d\n”,x);}程序运行后的输出结果是()。A、3B、1C、2D、0标准答案:A知识点解析:本题考查位运算符以及相关运算,“为按位或,&为按位与,那么a^b为3,再与c按位与仍然为3,所以答案为A选项。40、有以下程序:#includemain(){FILE*fo;intk,n,a[6]={1,2,3,4,5,6};f0=fopen(“d2.dat”,“W”);fprinff(fo,“%d%d%d\n”,a[0],a[1],a[2]);fprintf(fo,“%d%d%d\n”,a[3],a[4],aE5]);fclose(fp);fp=fopen(“d2.dat”,“r”);fscmff(fo,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是()。A、12B、14C、1234D、123456标准答案:D知识点解析:fprintf()函数向文本文件输出数据,将输出的内容按格式输出到硬盘的文本文件中。执行两次fprintf后,文件中的内容为“123456”,所以D选项正确。二、程序填空题(本题共1题,每题1.0分,共1分。)41、函数fun的功能是:将一副扑克牌编号为1,2,3,…,53,54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,如第一次这样洗牌后的结果为:1,28,2,29,…,53,27,54。两次洗牌后的结果为:1,41,28,15,2,42…,53,40,27,14,54。程序的功能是:输出经过n次这样洗牌后的结果。请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!试题程序:#includevoidfun(inta[55],intn){inti,k;/**********found**********/int[1][55];for(i=0;i标准答案:(1)b(2)2(3)b[k]知识点解析:暂无解析三、程序修改题(本题共1题,每题1.0分,共1分。)42、下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第13项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。#includelongfun(intg){/**********found**********/switch(g);{ease0:retum0;/**********found**********/ease1;ease2:return1:}retum(fun(g—1)+fun(g一2));}main(){longfib;intn;printf(“Inputn:”);seanf(“%d”,&n);prinff(“n=%d\n”,n);fib=fun(n);prinff(“fib=%d\n\n”,fib);}标准答案:(1)去掉分号(2)case1:case2:return1;知识点解析:暂无解析四、程序设计题(本题共1题,每题1.0分,共1分。)43、请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include—#include#defineM14voidNONO();voidfun(char(*t)[M],int*a,int*c){}voidget(char(*s)[M]){inti,j;for(i=0;i标准答案:inti=0,j=0;//循环统计的下标*a=0;//初始化a字符统计的个数*c=0;//初始化c字符统计的个数for(i=0;i知识点解析:暂无解析国家二级(C语言)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、下列数据结构中,能用二分法进行查找的是()。A、无序线性表B、线性链表C、二叉链表D、顺序存储的有序表标准答案:D知识点解析:二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。2、下列叙述中,不属于设计准则的是()。A、提高模块独立性B、使模块的作用域在该模块的控制域中C、设计成多入口、多出口模块D、设计功能可预测的模块标准答案:C知识点解析:大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设汁成单入口、单出口的模块;设计功能可预测的模块。3、下列队列的描述中,正确的是()。A、队列属于非线性表B、队列在队尾删除数据C、队列按“先进后出”进行数据操作D、队列按“先进先出”进行数据操作标准答案:D知识点解析:队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。4、对下列二叉树进行前序遍历的结果为()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA标准答案:B知识点解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树。②中序,按中序遍历左子树→访问根→按中序遍历右子树。③后序,按后序遍历左子树→按后序遍历右子树→访问根。所以对该二叉树的中序遍历结果为ABDGEHCF。5、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A、冒泡排序为n(n-1)/2B、简单插入排序为nC、希尔排序为nD、快速排序为n/2标准答案:A知识点解析:在最坏情况下,冒泡排序所需要的比较次数为n(n—1)/2;简单插入排序所需要的比较次数为n(n一1)/2;希尔排序所需要的比较次数为0(n1.5);堆排序所需要的比较次数为O(nlog2n)。6、为了使模块尽可能独立,要求()。A、内聚程度要尽量高,耦合程度要尽量强B、内聚程度要尽量高,耦合程度要尽量弱C、内聚程度要尽量低,耦合程度要尽量弱D、内聚程度要尽量低,耦合程度要尽量强标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简币。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一股较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。7、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护二个阶段,其中开发阶段包括概要设汁、详细设计、实现和测试。8、数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()。A、数据与程序独立存放B、不同的数据被存放在不同的文件中C、不同的数据只能被对应的应用程序所使用D、以上三种说法都不对标准答案:D知识点解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。所以选项A,选项B和选项C都不正确。9、在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之问的联系属于一对多关系。10、软件调试的目的是()。A、发现错误B、改善软件的性能C、改正错误D、验证软件的正确性标准答案:C知识点解析:在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。11、C语言源程序名的后缀是()。A、.exeB、.CC、.objD、.cp标准答案:B知识点解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。12、若函数中有定义语句:inta;,则()。A、系统将自动给a赋初值0B、这时a中的值是和随机数C、系统将自动给a赋初值-1D、这a中无任何值标准答案:B知识点解析:本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。13、以下选项中,合法的一组C语言数值常量是()。A、028B、12OXa234.5e0C、.1774c1.5OabcD、0x8A10,0003.E5标准答案:B知识点解析:八进制数开头必须是数字“0”,其数字包括0~7,而在选项A中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。所以本题的答案为选项B。14、下列语句组中,不正确的是()。A、char*s;s="Olympic";B、chars[]="Olympic";C、char*s;s={“Olympic"};D、chars[]={”Olympic"};标准答案:C知识点解析:S是一个字符指针变量,s代表其地址,C将字符串赋给地址,因此选项C错误。15、若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A、scanf("%d",a,b,c);B、scanf("%d%d%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);标准答案:C知识点解析:程序语句inta,b,c,*p=&c;定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf("格式控制字符串",地址列表)”,其中的地址列表应当是存放输入数据变量的地址。16、有以下程序,其中%u表示按无符号整数输出()。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf("%u\n",x);}程序运行后的输出结果是()。A、-1B、65535C、32767D、0xFFFF标准答案:B知识点解析:因为%u表示按无符号整数输出,而x用十六进制表示为0xFFFF,所以输出无符号整数的最大值65535。17、设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是()。A、if(x++);B、if(x>y&&y!=0);C、if(x>y)x-elsey++;D、if(y<0){;)elsex++;标准答案:C知识点解析:选项C中,if(x>y)后面的“x--”是一个表达式而不是一个语句,所以在编译时会产生错误信息。18、以下选项中,当x为大于1的奇数时,值为0的表达式为()。A、x%2==1B、x/2C、x%2!=0D、x%2==-0标准答案:D知识点解析:当x为大于1的奇数时,x对2求余的结果为1,不为0,所以选项D中表达式的值为0。19、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。A、4B、16C、32D、52标准答案:C知识点解析:本题考查逗号表达式的运用。x=(i=4,j=16,k=32)中的i=4,j=16,k=32构成一个逗号表达式,整个表达式的值取最后一项的值,即32,所以x的值为32。20、在下列选项中,没有构成死循环的是()。A、inti=100;while(1){i=i0+l;if(i>100)break;}B、for(;;);C、intk=10000;do{k++;}while(k>10000);D、ints=36;while(s)-s;标准答案:D知识点解析:选项D中,首先定义的变量s的值为36,因为语句--s;所以当s=0时循环会结束;选项A由于while(1)永远成立,循环构成死循环;选项B中for循环没有使循环结束的限定条件,也构成死循环;选项C中由于k永远大于10000,所以循环无法停止。21、在pnntf的格式字符中,e格式字符的作用是()。A、以十六进制无符号形式输出整数B、以带符号的十进制形式输出整数C、以指数形式输出实数D、以字符形式输出,且只输出一个字符标准答案:C知识点解析:本题考查printf函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。22、以下选项中正确的语句组是()。A、chars[];s="HELLO!";B、char*s;s={"HELLO!"};C、chars[10];s="HELLO!";D、char*s;s="HELLO!";标准答案:D知识点解析:本题考查数组和字符串的赋值。选项A中数组s没有明确其大小就赋值是错误的。选项B中不能有大括号,选项C中的写法应该为{’H’’E’’L’’L’’O’’!’}。23、字符串"%%\"ABCDEF\"\\"的长度是()。A、11B、10C、5D、3标准答案:B知识点解析:本题涉及字符串最基本的2个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杆’\.开头的特殊字符序列,意思是把反斜杆后丽的宁符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,’\’连同后面的字符为一个长度;而’%’也是如此。24、下列说法正确的是A、int(*def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组B、int*(*gll[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组C、int*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组D、A,C均正确标准答案:D知识点解析:int*(*gh[10]);一曲是一个指针,指向由10个指向整型变量的指针构成的数组,int(**def)[10];----def指向一个指针,该指针指向10个整型变量构成的数组。25、若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是()。A、函数的实参和其对应的形参共占同一存储单元B、形参只是形式上的存在,不占用具体存储单元C、同名的实参和形参占同一存储单元D、函数的形参和实参分别占用不同的存储单元标准答案:D知识点解析:在C语言中,函数的实参单无与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给彤参,在被调用函数中对形参存储单元中的值进行运算,最后通过rcturn语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。26、设有如下定义:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正确的赋值语句是()。A、q=&data.m;B、*q=data.m;C、q=(structsk*)&data.m;D、q=(structsk*)data.m;标准答案:C知识点解析:利用强制类型转换(structsk*)把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。27、有以下程序:intfl(doublea){returna*a;)intf2(intx,inty){doublea,b;a=f1(x);b=n(y);returna+b;}main(){doublew;w=f2(2.1,4.0);...}程序执行后,变量W的值是()。A、20.21B、20C、20.0D、0.0标准答案:C知识点解析:本题考查函数调用的使用。计算w的时候,先调用f2函数,f2函数的公式是“a+b”,计算a和b的时候义调用到f1函数,f1的函数是“a*a”,因此,w的计算公式为:w=(double)[(int)(2.1*2.1)+(int)(4.0*4.0)]=20.0。28、若语句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”对fun函数的调用正确,则fun函数的形参个数为()。A、3B、4C、5D、6标准答案:A知识点解析:本题考查函数调用时的参数个数。在函数调用时,实参必须和形参的个数、类型一一对应。但函数的计算结果只有一个值,因而fun函数的参数个数为3。29、设x为整型变量,n=14,n的地址为4000;m=6,m的地址为2000;执行语句x=&n后的结果为()。A、14B、6C、2000D、4000标准答案:D知识点解析:&是取地址运算符,表达式x=&a是表示将a的地址赋给变量x。30、若有说明intm[3][4]={3,9,7,8.5},(*q)[4]:和赋值语句q=m;,则对数组元素m[i][j](其中0<=i<3,0<=j<4)值的正确引用为()。A、(q+i)D]B、*q[i]D]C、*(*q[i]+j)D、*(*(q+i)+j)标准答案:D知识点解析:*(q+i)指向第i行首地址,*(*(q+i)+j)代表第i行第j个元素。31、有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-’a’+’A’;s++;}}main(){charstrl[100]="abcddfefdbd",c=’d’;ss(strl,c);printf("%s\n",strl);}程序运行后的输出结果是()。A、ABCDDEFEDBDB、abcDDfefDbDC、abcAAfefAbAD、Abcddfefdbd标准答案:B知识点解析:函数ss(char*s,chart)的功能是将指针s所指向的字符串中存在的字符“t”均改写成大写字母;所以main函数中引用函数ss后使得数组str1中的小写字母“d”均变成了大写字母“D”,然后输出数组str1,结果为:abcDDfefDbD。32、下述语句中,在字符串s1和s2相等时显示"theyareEqual"的是()。A、if(*s1==*s2)puts("theyareEqual");B、if(1strcmp(s1,s2))puts("theyareEqual");C、if(s1==s2)puts("theyareEqual");D、iffstrcmp(s1,s2))puts("theyareEqual");标准答案:B知识点解析:字符串比较不能用“==”,要用strcmp(s1,s2)函数,字符串s1和s2相等时返回值为0,故!strcmp(s1,s2)=1,条件成立执行后面的语句,输出theyareEqual。33、设有说明int(*ptr)[M];其中的标识符ptr是()。A、M个指向整型变量的指针B、指向M个整型变量的函数指针C、一个指向具有M个整型元素的一维数组的指针D、具有M个指针元素的一维指针数组,每个元素都只能指向整型变量标准答案:C知识点解析:根据C语言的语法规则可知,int(*ptr)[M]中的标识符ptr是一个指向具有M个整型元素的一维数组指针。34、在C语言中,变量的隐含存储类别是()。A、autoB、staticC、extemD、无存储类别标准答案:A知识点解析:C语言中,变量的隐含存储类型为auto。35、有以下程序:#includestructtt{intx;structtt*y;)*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的运行结果是()。A、20,30,B、30,17C、15,30,D、20,15,标准答案:D知识点解析:本题考查的是指针和结构的应用。首先定义的数组tt中有两个成员,一个整型变量,一个结构指针。当i=1时,p指针指向结构数组的第一个元素,并输出此元素的第一个成员x.即20;当i=2时,p指针指向结构数组的第二个元素的第一个成员,所以输出15。36、有以下程序:#includemain(){FILE*fp;inta[10]={1,2,3,0,0),i;fp=fopen("d2.dat","wb");fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen("d2.dat","rb");fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i<10;i++)printf("%d,",a[i]);}程序的运行结果是()。A、1,2,3,0,0,0,0,0,0,0,B、1,2,3,1,2,3,0,0,0,0,C、123,0,0,0,0,123,0,0,0,0,D、1,2,3,0,0,1,2,3,0,0,标准答案:D知识点解析:首先用函数。fopen()以“wb”的方式打开文件“d2.dat”,然后调用两次fwrite函数将数组a的5个元素,依次输出到文件fp中(共10个字节),然后关闭文件。再次打开文件,使用文件指针指向文件的开头.调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0.0,l,2,3,0,0},因此最后的输出结果为“1,2,3,0,0,1,2,3,0,0”。37、定义结构体数组structstu{intnum;charname[20];}x[5]={1,"ZHAO",2,"QIAN",3,"SUN",4,"LEE",5,"ZHOU");for(i=1;i<5;i++)printf("%d%c",x[i].hum,x[i].name[2]);程序执行后的输出结果是()。A、2A3N4E50B、1H213U4EC、1A2N3E40D、1A2N3E40标准答案:A知识点解析:本题主要考查结构体数组。x[i].num是结构体x[i]中的num成员,x[i].name[2]是结构体x[i]中name成员的第3个元素。第一次循环,i=1,输出x[1].num,x[1].name[2]的值,即2A:第二次循环,i=2,输出x[2]num,x[2].name[2]的值,即3N:第三次循环,i=3,输出x[3].num,x[3].name[2]的值,即4E;第四次循环,i=4,输出x[4].num,x[4].nanlc[2]的值,即50。38、uniondt{inta;charb;doublec;}data;以下叙述中错误的是A、data的每个成员起始地址都相同B、变量data所占内存字节数与成员c所占字节数相等C、程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000D、data可以作为函数的实参标准答案:C知识点解析:输出不会是5.00000的,因为单精度浮点数和双精度浮点数在内存中的存储形式不一样。39、设x=021,y=012,则z=x|y的值是()。A、1B、0C、000110llD、11000010标准答案:C知识点解析:本题主要考查按位或运算。按位或是对两个运算对象相应的位进行逻辑或运算,其运算规则和逻辑或相同,两个运算对象只要有一个是1,则结果为1。40、fgets(str,n,fp)函数从文件中读入一个字符串,以下错误的叙述是()。A、字符串读入后会自动加入’\0’B、fp是指向该文件的文件型指针C、fgets函数将从文件中最多读入n个字符D、fgets函数将从文件中最多读入n-1个字符标准答案:C知识点解析:字符串输入函数fgetsO的调用形式为:fgets(s.n,fp)。s可以是一个字符数组名,或是指向字符串的指针;n为要读取的最多的字符个数:fp是指向该文件的文件型指针。字符串输入函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串存放到字符数组s中。二、程序填空题(本题共1题,每题1.0分,共1分。)41、给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include#include#includevoidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))=NULL){printf("openfail!!\n");exit(0);)WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt","r"))==NULL){printf("openfail!!\n");exit(0);)ReadText(fp);fclose(fp);}/**********found**********/voidWriteText(FILE__1__){charstr[81];printf("\nEnterstringwith-1toend:\n");gets(str);while(strcmp(str,"-1")!=0){/**********found**********/fputs(__2__,fw);fputs("\n",fw);gets(str);}}voidReadText(FILE*fr){charstr[81];printf("\nbReadfileandoutputtoscreen:\n");fgets(str,81,fr);while(!feof(fr)){/**********found**********/printf("%s",__3__);fgets(str,81,fr);}}标准答案:(1)*fw(2)str(3)str知识点解析:本题要求是把一段文本写到文件。myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。主要是文件操作以及fputs和fgets函数的使用。[解题思路]第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,fputs("\n",fw)是将字符“\n”写入文件,可知fw是文件指针名,因此第一空处应该是voidWriteText(FILE*fw)。第二空:while(s仃cmp(str,"-1")!=0)循环的结束标志是str字符串等于“-1”时循环退出。如果str不等于“-1”,执行循环体内容:用fputs函数将str字符串写入文件。fputs函数的调用形式是:fputs(s,fp),其中s是指向字符串的指针或字符串数组名,fp是指向将要被写入的文件的文件指针.因此第二处应该是fputs(str,fw)。第三空:whiIe(!feof(fr))循环的作用是不断读取文件直到到达文件尾,每次最多读81个,将读到的数据放在str字符串里,并用printf输出到屏幕,因此第三处应该是printf("%s",str)。三、程序修改题(本题共1题,每题1.0分,共1分。)42、给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!#includeintfun(intm){intk=2:while(k<=m&&(m%k))/**********found**********/if(m=k)return1;elsereturn();}main(){intn;printf("\nPleaseentern:");scanf("%dtt,&n);if(fun(n))printf("YESLn");elseprintf("NO!\n");}标准答案:(1)k++;(2)if(m==k)知识点解析:本题中函数的功能是判断一个整数n是否是素数。素数是只能被1和本身整除的正整数(>1),所以判别n是否为素数,只要用2、3、…、n-1这些数逐个去除n,观察余数是否为0即可,只要有一次相除余数为0,n就不是素数,否则n为素数。[解题思路](1)第一个标识下“k++”语句没有结束符分号,所以将“k++”改为“k++;”。(2)第二个标识下的“if(m=k)”语句应该是判断m是否素数,而原题中是将k的值赋给m,并不表示是否m等于k,所以第二个标识下“if(m=k)”应该改为“if(m==k)”。四、程序设计题(本题共1题,每题1.0分,共1分。)43、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf(”Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NON00;}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}标准答案:inti=0:char*p,*q;p=q=a;while(*p)p++;p--;while(*p=’*’)p--;while(q<==p){a[i]=*q;i++;q++;}a[i]=’\0’;知识点解析:该程序功能是将字符串尾部的“*”号全部删除,前面和中间的“*”号不删除。本题的解题过程首先确定由串尾开始的第一个非“*”位置,将由头开始到此位置的字符拷贝到字符串。[解题思路](1)首先,使用一个指针p指向串尾,然后对指向串尾的指针p指向的字符进行判断.如果是“*”,指针p就跳过,这样来设置一个指针变量q指向字符串的头位置。(2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串a。(3)最后,在新生成的字符串尾加’\0’。国家二级(C语言)机试模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、数据结构主要研究的是数据的逻辑结构、数据的运算和()。A、数据的方法B、数据的存储结构C、数据的对象D、数据的逻辑存储标准答案:B知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。2、—棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是CBAEDF,则其后序遍历的结果是()。A、DBACEFB、CBEFDAC、FDAEBCD、DFABEC标准答案:B知识点解析:由于该二叉树的前序遍历结果是ABCEDF,显然A结点为根结点,所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDA。3、在数据处理中,其处理的最小单位是()。A、数据B、数据项C、数据结构D、数据元素标准答案:B知识点解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。4、在数据库系统的内部结构体系中,索引属于()。A、模式B、内模式C、外模式D、概念模式标准答案:B知识点解析:内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。5、以下()不属于对象的基本特征。A、继承性B、封装性C、分类性D、多态性标准答案:A知识点解析:对象具有特征:标识惟一性,指对象是可区分的;分类性,指可以将具有相同属性和操作的对象抽象成类:多态性,指同一个操作可以是不同对象的行为;封装性,从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法;模块独立性好,对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。6、数据库系统的核心是()。A、数据模型B、软件开发C、数据库设计D、数据库管理系统标准答案:D知识点解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。7、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。A、软件矛盾B、软件危机C、软件耦合D、软件产生标准答案:B知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入门难以控制软件发展的局面,即所谓的“软件危机”。8、关系模型允许定义3类数据约束,下列不属于数据约束的是()。A、实体完整性约束B、参照完整性约束C、属性完整性约束D、用户自定义的完整性约束标准答案:C知识点解析:关系模型允许3类数据约束,它们是:实体完整性约束:该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。参照完整性约束:该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。用户定义的完整性约束:用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。9、关系表中的每一行记录称为一个()。A、字段B、元组C、属性D、关键码标准答案:B知识点解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。10、在数据库管理技术的发展中,数据独立性最高的是()。A、人工管理B、文件系统C、数据库系统D、数据模型标准答案:C知识点解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。11、以下叙述错误的是()。A、C语言区分大小写B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C、整数和实数都能用C语言准确无误地表示出来D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示标准答案:C知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。12、有以下程序段:lnti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1;case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是()A、for循环语句固定执行8次B、当产生的随机数n为4时结束循环操作C、当产生的随机数n为1和2时不做任何操作D、当产生的随机数n为0时结束程序运行标准答案:D知识点解析:当产生的随机数n为0时,执行“case0:exit(0)”这条语句,结束程序的运行。13、可在C程序中用作用户标识符的一组标识符是()。A、voiddefineWORDB、as_b3_123IfC、For—abccaseD、2cDOSIG标准答案:B知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。14、若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b标准答案:B知识点解析:选项A)是一个C语句,不是表达式;选项B)是利用一个逗号表达式给a赋值;选项C)中的“%”求余运算符要求两个运算对象都必须是整型;选项D)中,不能用表达式给表达式赋值,但是变量可以给自身赋值,例如:a=a+l。15、有以下程序段charch;intk:ch=’aI;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()。A、因变量类型与格式描述符的类型不匹配输出无定值B、输出项与格式描述符个数不符,输出为零值或不定值C、a,97,12k=12D、a,97,k=12标准答案:D知识点解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。16、下列叙述中错误的是()。A、计算机不能直接执行用C语言编写的源程序B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行标准答案:D知识点解析:C源程序经过程序编译之后生成一个后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”的软件包文件与C语言提供的各种库函数连接起来生成一个后缀为“.exe”的可运行文件。17、有以下程序#inc1udevoidmain(){inta=1,b=0;printf("%d,",b=(a++)+(a++));printf("%d\n",a+b);}程序运行后的输出结果是()。A、4,6B、2,5C、3,5D、2,6标准答案:B知识点解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为l和0;在第二条语句中,首先计算b—a+a,然后a自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。18、若有代数式,(其中e仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))标准答案:C知识点解析:n和e的x幂次方,要分别调用C语言的数学库函数“doublepow(n,x)”和“doubleexp(x)",因为这两个函数的返回值都为double型,对两者的和计算绝对值,调用库函数“double’fabs(pow(n,x)+exp(x))”,求出和的绝对值,再调用开平方函数“doublesqrt(fabs(pow(n,x)+exp(x)))”,这样计算出的结果就是题干中表达式的值。19、设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是()。A、k++B、k+=1C、HkD、k+l标准答案:A知识点解析:因为题中有语句“intk=0;”,所以选项B)、C)、D)都是对k的值加1,选项A)的语句k++表示先利用k的值进行运算,然后k的值才加1。20、有下列程序,其中%u表示按无符号整数输出。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf("%u\n",x);}程序运行后的输出结果是()。A、一1B、65535C、32767D、0xFFFF标准答案:B知识点解析:“%u”格式符表示以十进制形式输出无符号整形变量。本题中无符号整形变量x=0xFFFF表示的是十六进制无符号整型变量的最大值65535,所以最后输出的结果为65535。21、下面程序的运行结果是()。for(i=3;i<7;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);A、)**3##4**5**6B、##3**4##5**6C、##3**4##5##6D、**3##4**5##6标准答案:D知识点解析:本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf函数输出时“**%\n”和“##%d\n”中的“##"和“**”都是直接输出。②条件表达式的基本格式为:"a?b:c"。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。22、设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是()。A、if(a==1){b=2;c=3;)B、if(a!=1){;}else{b=2;c=3;)C、if(a==1)c=3;b=2;D、(a==

温馨提示

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

评论

0/150

提交评论