版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷11(共9套)(共313题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共38题,每题1.0分,共38分。)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、软件产生标准答案:B知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入门难以控制软件发展的局面,即所谓的“软件危机”。7、关系模型允许定义3类数据约束,下列不属于数据约束的是()。A、实体完整性约束B、参照完整性约束C、属性完整性约束D、用户自定义的完整性约束标准答案:C知识点解析:关系模型允许3类数据约束,它们是:实体完整性约束该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。参照完整性约束:该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。用户定义的完整性约束:用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。8、关系表中的每一行记录称为一个()。A、字段B、元组C、属性D、关键码标准答案:B知识点解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。9、在数据库管理技术的发展中,数据独立性最高的是()。A、人工管理B、文件系统C、数据库系统D、数据模型标准答案:C知识点解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。10、以下叙述错误的是()。A、C语言区分大小写B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C、整数和实数都能用C语言准确无误地表示出来D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示标准答案:C知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。11、有以下程序段:inti,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)”这条语句,结束程序的运行。12、可在C程序中用作用户标识符的一组标识符是()。A、voiddefineWORDB、as_b3_123IfC、For-abccaseD、2cDOSIG标准答案:B知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。13、若变量已正确定义并赋值,则以下符合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+1。14、有以下程序段charch;intk;ch=’a’: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。15、下列叙述中错误的是()。A、计算机不能直接执行用C语言编写的源程序B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行标准答案:D知识点解析:C源程序经过程序编译之后生成一个后缀为“.obi”的二进制文件(称为目标文件),然后由称为“连接程序”的软件包文件与C语言提供的各种库函数连接起来生成一个后缀为“.exe”的可运行文件。16、有以下程序#include<stdio.h>voidmain(){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,并把它们的初值分别设置为1和0;在第二条语句中,首先计算b=a+a,然后a自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。17、若有代数式,(其中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型,对两者的和计算绝对值,调用库函数“doublefabs(pow(n,x)+exp(x))”,求出和的绝对值,再调用开平方函数“doublesqrt(fabs(pow(n,x)+exp(x)))”,这样计算出的结果就是题干中表达式的值。18、设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是()。A、k++B、k+=1C、++kD、k+1标准答案:A知识点解析:因为题中有语句“intk=0;”,所以选项B、C、D都是对k的值加1,选项A的语句k++表示先利用k的值进行运算,然后k的值才加1。19、有下列程序,其中%u表示按无符号整数输出。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf(’’%u\n’’,x);}程序运行后的输出结果是()。A、-1B、65535C、32767D、0xFFFF标准答案:B知识点解析:“%u”格式符表示以十进制形式输出无符号整形变量。本题中无符号整形变量x=0xFFFF表示的是十六进制无符号整型变量的最大值65535,所以最后输出的结果为65535。20、下面程序的运行结果是()。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函数输出时“**%d\n”和“##%d\n”中的“##”和“**”都是直接输出。②条件表达式的基本格式为:“a?b:c”。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。21、设有语句: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)?b=2:a=a;c=3;标准答案:D知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项A、B、C均与题中所给不同,而选项D相同。22、运行下列程序时,若输入数据为“321”,则输出结果是()。main(){intnum,i,j,k,s;scanf(’’%d’’,&num);if(num>99)s=3:elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf(’’%d%d%d\n’’,k,j,i);break;case2:printf(’’%d%d\n’’,k,j);case1:printf(’’%d\n’’,k);}}A、123B、1,2,3C、321D、3,2,1标准答案:A知识点解析:本题考查if…else语句和switch语句。scanf函数通过键盘读入。num的值。因为“num=321>99”,所以“s=3,i=3,i=2,k=1”。因为s=3,所以执行case3,输出k,i,i的值,然后通过break结束程序。23、有以下程序#include<stdio.h>#include<string.h>structA{inta;charb[10];doublec;};structAf(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,’’WangPeng’’);t.c=1220.0;returnt;}程序运行后的输出结果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0标准答案:D知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),在函数f(a)中对结构体变量a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。24、设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。A、gets(s);B、scanf(’’%s’’,s);C、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;D、do{scanf(’’%c’’,&s[i]);)while(s[i++]!=’\n’);s[i]=’\0’;标准答案:B知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回车或者空格。因此选项B不能,选项C和选项D中按字符逐个读入字符串s中,直到读入的字符是换行符为止,因此正确。25、下面4个关于C语言的结论中错误的是()。A、可以用do…while语句实现的循环一定可以用while语句实现B、可以用for语句实现的循环一定可以用while语句实现C、可以用while语句实现的循环一定可以用for语句实现D、do…while语句与while语句的区别仅是关键字“while”出现的位置不同标准答案:D知识点解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。26、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}则以下表达式中值为5的是()。A、(p++)->mB、*(p++)->mC、(*p).mD、*(++p)->m标准答案:D知识点解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],抖p可以实现将p指针加1,指向s[1]。27、下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++:}voidmain(){inta[]={1,2,3,4,5},k;intx;printf(’’\n’’);for(k=0;k<=4;k++){sub(a,&x);printf(’’%d,’’,x);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,标准答案:A知识点解析:本题中sub(int*s,int*y)函数的参数是两个指针型变量,在函数体内将数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过for循环,5次调用sub(a,&x)函数,每一次调用都是将数组a的第一个元素1赋给x,并输出。28、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;pfintf(’’%d\n’’,fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A、3B、6C、8D、12标准答案:B知识点解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即。fun(8,6),8!=6,所以返回6。29、C语言中规定,程序中各函数之间()。A、既允许直接递归调用也允许间接递归调用B、不允许直接递归调用也不允许间接递归调用C、允许直接递归调用不允许间接递归调用D、不允许直接递归调用允许间接递归调用标准答案:A知识点解析:本题考查函数调用的基本概念。在函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。30、以下程序的输出结果是()。#include<stdio.h>main(){inta[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)s+=a[i][a][j][j];printf(’’%d\n’’,s);}A、3B、4C、1D、9标准答案:B知识点解析:当外层循环为i时,内层循环j只能取j=i,所以s+=a[i]a[j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[0][0]]=s+a[0][0]=1,当i=1时s=s+a[1][a[1][1]]=s+a[1][1]=1+l=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。31、有以下程序:#inelude<stdio.h>#defineX5+6main(){inta=2,c;c=X*2:printf(’’%d’’,c);}程序运行后的输出结果是()。A、17B、22C、16D、11标准答案:A知识点解析:define语句仅进行简单替换,因此c=5+6*2=17。32、当用“#defineF37.5f”定义后,下列叙述正确的是()。A、F是float型数B、F是char型数C、F无类型D、F是字符串标准答案:D知识点解析:字符替换定义格式为:#define标识符(形参表)形参表达式。题中F是代表形参表达式的标识符(字符串)。33、若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=c=4);标准答案:A知识点解析:这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。34、以下说法正确的是()。A、宏定义是C语句,要在行末加分号B、可以使用#undefine提前结束宏名的使用C、在进行宏定义时,宏定义不能嵌套D、双引号中出现的宏名也要进行替换标准答案:B知识点解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程序中可以使用#undefine;④在进行宏定义时,宏定义能层层置换,能够嵌套。35、下面程序的输出结果是()。Typedefunion{longx[1];inty[4];charz[10];}M;Mt:main(){printf(’’%d\n",sizeof[t));}A、32B、26C、lOD、4标准答案:C知识点解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员是联合体中占空间最长的成员。36、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;j<10;i++)ptintf(’’%d,’’,aa[i]);printf(’’\n’’);}程序运行后的输出结果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,标准答案:C知识点解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数“sort(&aa[3],5);”,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。37、设x=06l,y=016,则z=x|y的值是()。A、00001111B、11111111C、00111111D、11000000标准答案:C知识点解析:本题主要考查按位或运算,x=061(二进制为00110001),y=016(二进制为00001110),进行或运算后结果为00111111。38、函数rewind(fp)的作用是()。A、使fp指定的文件的位置指针重新定位到文件的开始位置B、将fp指定的文件的位置指针指向文件中所要求的特定位置C、使fp指定的文件的位置指针向文件的末尾D、使fp指定的文件的位置指针自动移至下一个字符位置标准答案:A知识点解析:位置指针重返文件头函数rewind()的调用形式为:rewind(fp)。其中,“fp”是指向文件的文件型指针。rewind(fp)的功能是:使fp指定的文件的位置指针重新定位到文件的开始位置。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共23题,每题1.0分,共23分。)1、以下选项中,当x为大于1的奇数时,值为0的表达式是()。A、x%2==0B、x/2C、x%2!=0D、x%2==1标准答案:A知识点解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于l的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。2、以下叙述中正确的是()。A、在C语言中,逻辑真值和假值分别对应1和0B、关系运算符两边的运算对象可以是C语言中任意合法的表达式C、对于浮点变量x和y,表达式:x==y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:B知识点解析:A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:x==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。3、若变量已正确定义,以下选项中非法的表达式是()。A、a!=4||’b’B、’a’=1/2*(x=y=20,x*3)C、’a’%4D、’A’+32标准答案:B知识点解析:A选项中’a’即表示a为字符常量,再给’a’赋值1/2*(x=y=20,x*3),是不正确的。因此B选项正确。4、与数学表达式x≥y≥z对应的C语言表达式是()。A、(x>=y)||(y>=x)B、(x>=y>=z)C、(x>=y)!(y>=z)D、(x>=y)&&(y>=z)标准答案:D知识点解析:本题考查关系表达式和逻辑表达式。y大于等于x同时y小于等于z,因此x<=y和y<=z是逻辑与的关系。因此D选项正确。5、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定标准答案:A知识点解析:逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真,虽然不知道a的值,但是若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。6、当变量c的值不为2、4、6时,值也为“真”的表达式是()。A、(c>=2&&c<=6)&&(c%2!=1)B、(c==2)II(c==4)II(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)||(c!=3)||(c!=5)标准答案:D知识点解析:逻辑或运算符中只要有一个运算量为真结果就是真,当c>=2&&c<=6条件不成立时c的值肯定不是2、3、4、5、6,所以c!=3,与c!=5均成立。所以D选项的结果一定为真。7、有以下程序:#includemain(){inta=1,b=2,c=3,d=0;if(a:=1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c;elseprintf("%d,%d,%d\n",a,b,c;elseprinff("%d,%d,%d\n",a,b,c;}程序运行后的输出结果是()。A、1,3,2B、1,3,3C、1,2,3D、3,2,1标准答案:B知识点解析:在if语句中,else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,进入第二个if语句条件判断,因为b!=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c--!=3)c的值不变,也不再执行第一个else语句。打印a的值1,b的值3,c的值3。8、若有以下程序:#includemain(){inta=1,b=2,c=3,d:4;if((a=2)∣∣(b=1))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d;则程序的输出结果是()。A、1,2,3,4B、2,1,2,-1C、5,1,2,-1D、2,2,2,4标准答案:D知识点解析:第一个if语句的判断条件是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=一1操作和a=5操作。所以结果为选项D。9、若有以下程序:#includemain(){inta=1,b=2,c=3,d=4;if((a=2)&&(b=1))c=2;if((C==3)∣∣(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d;}则程序的输出结果是()。A、2,2,2,4B、2,1,2,-1C、5,1,2,-1D、1,2,3,4标准答案:C知识点解析:第一个if语句的判断条件是逻辑与表达式,只有运算对象均非零结果才为真,执行第一个if判断条件,均为赋值表达式,第一个运算对象a=2非零,判断第二个表达式b=1也非零,所以条件成立执行c=2的赋值操作。执行第二个if判断条件中的逻辑或表达式,只要有一个对象非零结果就是真,本条件中c==3运算对象为假,所以需要判断第二个运算对象d=一l,结果为非零,所以条件成立,执行a=5,的操作,所以a值为5,b值为1,c值为2,d值为-1。10、以下关于逻辑运算符两侧运算对象的叙述中正确的是()。A、可以是任意合法的表达式B、只能是整数0或非0整数C、可以是结构体类型的数据D、只能是整数0或1标准答案:A知识点解析:C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A。11、设有宏定义:#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正确。12、表示关系式x≤y≤Z的C语言表达式的是()。A、(x<=y)&&(y<=x)B、(x<=y)||(y<=x)C、(x<=y<=z)D、x<=y)!(y<=x)标准答案:A知识点解析:本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<=y和y<=z是逻辑与的关系。因此A选项正确。13、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A、必须是逻辑值B、必须是整数值C、必须是正数D、可以是任意合法的数值标准答案:D知识点解析:if语句中的表达式可以是任意合法的数值,如常量,变量表达式。所以D选项正确。14、有以下计算公式:y=若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是()。A、if(x>=0)Y=sqrt(x);if(x<0)y=sqrt(-x);B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、y=sqrt(x);if(x<0)Y=sqrt(-x);D、y=sqrt(x>=0?x:-x);标准答案:C知识点解析:公式的要求是无论x大于等于0还是小于0,y的值都为x绝对值的开方。选项C中如果x值小于0,则y=sqrt(x)就要出错。本题重点考察的知识点是:sqrt()函数。sqrt()函数的作用是开方计算,要求输人的参数x必须大于等于0。选项C一开始调用了sqrt(x)而没有判断x的正负,所以是错误的。15、下列条件语句中,输出结果与其他语句不同的是()。A、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a==0)printf("%d\n",x);e]seprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);标准答案:C知识点解析:A、B、D选项的含义均为a的值如果为0时打印y的值,否则打印x的值。但是C选项的含义是:a的值为0时打印x的值,不为0时打印y的值,与其他选项正好相反。16、若有以下程序:#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;e]se;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是()。A、10B、7C、6D、3标准答案:B知识点解析:else总是和与之最近的if配对,执行第一个if,判断条件不成立,执行elser=1;语句。再执行第二个if语句中的判断条件,成立,左移执行r+=2,r的值为3,再执行第三个if的判断条件,不成立,执行第7行else后面的空语句“;”。再执行第四个if的判断条件d==4成立,执行r+=4,r的值为7。然后打印输出。17、若有以下程序:#includemain(){inta:1,b=2,c=3,d=4,r=0;if(a!=1);e]ser=1;if(b==2)/-+=2;if(c!=3);r+:3;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是()。A、3B、7C、6D、10标准答案:D知识点解析:第一个if语句a!=1条件为假,所以执行else后的语句r=l。第二个if语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!=3条件为假,所以不做任何操作。执行下面的r+=3操作,r的值变为6。判断第四个if条件,d==4条件成立,执行r+=4操作,结果为10。18、以下叙述中正确的是()。A、对于逻辑表达式:a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变B、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变C、case不是一条独立的语句,它只是if语句的一部分D、关系运算符的结果有三种:0,1,-1标准答案:C知识点解析:B选项和A选项中,&&、||都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。而且&&、||的优先级比++高,所以题中只需判断a的值即可知道符号表达式的真假;D选项中,关系运算符的结果有“真”和“假”两种。因此C选项正确。19、有以下程序:#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}ca,se2:a++;b++;break;case3:a++;b++;}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。20、有以下程序段:#includeinti,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知识点解析:cltse常量表达式只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。简单的说break是结束整个循环体,而continue是结束单次循环。B选项中当产生的随机数n为4时要执行打印操作。C选项中当产生的随机数为1和2时分别执行case3与cased后面语句的内容。由于存在break语句所以for循环不是固定执行8次,执行次数与产生的随机数n有关系。21、若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");}C、switch(x){case1.0:prinff("*\n");case2.0:printf("**\n");}D、switch(a+b){case1:printf("*\n");casec:prinff("**\n");}标准答案:A知识点解析:B选项中switch((int)x);语句不应该有最后的分号。switch(exprl),中的exprl不能用浮点类型或long类型,也不能为—个字符串,所以C错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。22、有以下程序:#includemin(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是()。A、0304B、2050C、3344D、3040标准答案:D知识点解析:第一次循环i为0,i%2为0,执行switch(a[0]%2)中的case0语句,a[0]++,a[0]的值变成3;第二次循环i的值为1。i%2为1,执行easel:a[i]=0;所以a[1]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的case1语句,a[2]一一,a[2]的值变成4;第四次循环i的值为3,i%2为l,执行casel:a[i]=0;所以a[3]的值变成0。23、下列叙述中正确的是()。A、在switch语句中,不一定使用break语句B、在switch语句中必须使用defaultC、break语句必须与switch语句中的case配对使用D、break语句只能用于switch语句标准答案:A知识点解析:defauh语句在switch语句中可以省略,所以B错误;switch语句中并非每个case后都需要使用break语句,所以C错误;break语句还可以用于for等循环结构中,所以D错误。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。2、下列叙述中正确的是A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、以上说法都不对标准答案:A知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A正确。3、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为A、219B、229C、230D、231标准答案:B知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229,答案为B。4、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为A、9B、10C、45D、90标准答案:C知识点解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选C。5、构成计算机软件的是A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。6、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是A、测试B、设计C、可行性研究D、实现标准答案:C知识点解析:开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计3个阶段,实施则包括编码和测试两个阶段,C不属于开发阶段。7、下面不能作为结构化方法软件需求分析工具的是A、系统结构图B、数据字典(DD)C、数据流程图(DFD图)D、判定表标准答案:A知识点解析:结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。8、在关系模型中,每一个二维表称为一个A、关系B、属性C、元组D、主码(键)标准答案:A知识点解析:关系模型采用二维表来表示,即每个二维表称为一个关系。9、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所以为一对多联系。10、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、选择B、投影C、交D、并标准答案:D知识点解析:关系T中的元素与关系R和关系S中不同元素的总和,因此为并操作。11、以下叙述中正确的是A、C语言程序所调用的函数必须放在main函数的前面B、C语言程序总是从最前面的函数开始执行C、C语言程序中main函数必须放在程序的开始位置D、C语言程序总是从main函数开始执行标准答案:D知识点解析:C语言所调用的函数可以放在调用它的函数前,也可以放在调用它的函数后,所以A错误?C语言程序总是从main函数开始执行,所以B错误?main函数的位置可以放在开始,也可以放在中间,也可以放在最后,所以C错误?12、C语言程序中,运算对象必须是整型数的运算符是A、&&B、/C、%D、*标准答案:C知识点解析:%取余运算是二目运算符,且要求运算对象必须为整数,所以选C。13、有以下程序#includemain(){intsum,pad,pAd;sum=pad=5;pAd=++sum,pAd++,++pad;printf("%d\n",pad);}程序的输出结果是A、5B、6C、7D、8标准答案:B知识点解析:C语言区分大小写,pad与pAd是两个不同的变量,首先将5赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=++sum,此时pAd为6,sum也为6,然后计算pAd++,pAd的值变为7,++pad,pad的值变为6,所以选择B。14、有以下程序#includemain(){inta=3;a+=a-=a*a;printf("%d\n",a);}程序的输出结果是A、0B、9C、3D、-12标准答案:D知识点解析:首先计算a*a结果为9,执行a=a-9,a的值为-6,然后执行a+=a,即a=a+a=-6+(-6),所以值为-12。15、sizeof(double)是A、一个整型表达式B、一个双精度型表达式C、一个不合法的表达式D、一种函数调用标准答案:A知识点解析:sizeof是C语言中的一个操作符(operator),不是函数调用,简单的说其作用就是返回一个对象或者类型所占的内存字节数,所以选择A。16、有以下程序#includemain(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);}程序的输出结果是A、a=2,b=5B、a=%2,b=%5C、a=%d,b=%dD、a=%%d,b=%%d标准答案:C知识点解析:C语言中用"%%"打印输出字符"%",所以%%d,输出为%d两个普通字符,而不是格式控制符"%d"的含义,所以打印结果为C。17、若有定义语句:chara=’\82’;则变量aA、说明不合法B、包含1个字符C、包含2个字符D、包含3个字符标准答案:A知识点解析:定义语句:chara=’\82’;定义字符变量a,但是赋初值时却给赋值字符常量,因此A选项正确。18、有以下程序#includemain(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}程序的输出结果是A、输出格式不合法,输出出错信息B、65,89C、65,90D、A,Y标准答案:B知识点解析:本题重点考察字符变量的相关知识。分别给字符型变量a和b分别赋值为’A’和’Y’,即A和Y的ASSCII码,因此输出结果为65,89,因此B选项正确。19、若变量已正确定义for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环A、执行3次B、执行4次C、执行无限次D、执行次数不定标准答案:B知识点解析:本题重点考察for语句的循环次数,for(x=0,y=0;(y!=99&&x<4);x++),y!=99&&x<4即循环条件当y不等于99以及x<4时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4次,B选项正确。20、对于while(!E)s;,若要执行循环体s,则E的取值应为:A、E等于1B、E不等于0C、E不等于1D、E等于0标准答案:D知识点解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。21、有以下程序#includemain(){intx;for(x=3;x<6;x++)printf((x%2)?("*%d"):("#%d"),x);printf("\n");}程序的输出结果是A、*3#4*5B、#3*4#5C、*3*4#5D、*3#4#5标准答案:A知识点解析:条件运算符组成条件表达式的一般形式为:表达式1?表达式2:表达式3其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。本题中语句printf((x%2)?("*%d"):("#%d"),x);含义为变量x对2求余,如果结果为真,则按照"*%d"格式输出,否则按照#%d输出。因此A选项正确。22、有以下程序#includemain(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b=b+3;continue;}b=b-5;}printf("%d\n",a);}程序的输出结果是A、10B、9C、8D、7标准答案:B知识点解析:首先注意for循环的控制条件当b>=20或者a>100则跳出for循环也即b<20且a<=100时执行for循环;第一次进入循环a=1,b=1均满足循环条件,但b%3==1条件满足,故执行b=b+3,得到b=4,注意有continue,所以后面语句不执行,直接跳转到a++这个语句,所以第一次循环完之后a=2,b=4;进入第二轮循环,b%3==1也是满足的,故再次b=b+3,此轮循环执行之后a=3,b=7,进入下一轮。此后和前面循环同理,都是b%3==1满足,因为每次都是加3,而之后又去模3,且都跳过for后面语句直接执行a++,所以,一直循环到b=22跳出for循环。此时a为8.综合起来就是,每次循环b增加3,a增加1,且当b>22时跳出循环,结束程序。所以b从1增加到22,有(22-1)/3=7,所以a=1+7=8.因此B选项正确。23、有以下程序#includevoidfun(intx,inty,int*c,int*d){*c=x+y;*d=x-y;}main(){inta=4,b=3,c=0,d=0;fun(a,b,&c,&d);printf("%d%d\n",c,d);}程序的输出结果是A、00B、43C、34D、71标准答案:D知识点解析:主函数中首先初始化整型变量a、b、c、d分别为4、3、0、0。调用函数fun,将实参传递给形参。在fun函数内,*c=7、*d=1。返回主函数,最后输出7和1。因此D选项正确。24、有以下程序#includevoidfun(int*p,int*q){intt;t=*p;*p=*q;*q=t;*q=*p;}main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);}程序的输出结果是A、90B、00C、99D、09标准答案:C知识点解析:主函数中定义整型变量a、b,分别赋值0和9。将a和b的地址传递给指针变量p和q,函数fun中将a和b的值互换后,又将a的值赋给b。返回主函数,最后输出9和9。因此C选项正确。25、有以下程序#includemain(){inta[]={2,4,6,8,10},x,*p,y=1;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}程序的输出结果是A、13B、19C、11D、15标准答案:B知识点解析:本题通过语句"p=&a[1]"将指针变量p指向了存储单元a[1],即使得p[0]的值为4,y的初始值为1,然后通过3次for循环,使得y的值分别加上p[0]、p[1]和p[2],那么y=1+4+6+8,所以输出的y的值为19。26、有以下程序#includemain(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",x[i][2-i]);printf("\n");}程序的输出结果是A、1、5、0B、3、5、7C、1、4、7D、3、6、9标准答案:B知识点解析:程序首先初始化二维数组x[3][3],然后通过3次for循环,输出x[0][2]、x[1][1]和x[2][0]的值,即3、5、7。因此B选项正确。27、设有某函数的说明为int*func(inta[10],intn);则下列叙述中,正确的是A、形参a对应的实参只能是数组名B、说明中的a[10]写成a[]或*a效果完全一样C、func的函数体中不能对a进行移动指针(如a++)的操作D、只有指向10个整数内存单元的指针,才能作为实参传给a标准答案:B知识点解析:本题重点考察返回指针值的函数相关知识,返回指针值的函数,一般定义形式为:类型名*函数名(参数列表)。func函数被定义为指针型函数,它的形参inta[10]和intn,分别指一维数组a[0]和整型变量n。28、有以下程序#includecharfun(char*c){if(*c<=’Z’&&*c>=’A’)*c-=’A’-’a’;return*c;}main(){chars[81],*p=s;gets(s);while(*p){*p=fun(p);putchar(*p);p++;}printf("\n");}若运行时从键盘上输入OPENTHEDOOR<回车>,程序的输出结果是A、OPENTHEDOORB、oPENtHEdOORC、openthedoorD、OpenTheDoor标准答案:C知识点解析:字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。首先使指针变量p指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。fun函数的功能是,将字符串中的大写字母变小写字母。将处理结果返回主函数,主函数通过putchar()字符输出函数进行输出。因此C选项正确。29、设有定义语句:char*aa[2]={"abcd","ABCD"};则以下叙述正确的是A、aa[0]存放了字符串"abcd"的首地址B、aa数组的两个元素只能存放含有4个字符的一维数组的首地址C、aa数组的值分别是字符串"abcd"和"ABCD"D、aa是指针变量,它指向含有两个元素的字符型数组标准答案:A知识点解析:本题中定义了一个指针数组,数组中存放的是字符指针,aa数组的两个元素分别包含了5个字符,所以可以存放5个字符的一维数组的首地址,所以B选项错误。aa数组的值是指向那两个字符串的字符指针,而不是那两个字符串,所以C选项错误。aa本身是一个指向两个字符指针的指针,所以D选项错误。30、有以下程序#includeintfun(char*s){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("goodbey!"));}程序的输出结果是A、0B、6C、7D、8标准答案:C知识点解析:本题主要考查了函数定义及调用,以及while循环语句,执行fun函数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,所以本题答案为8。31、有以下程序#includeintfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的输出结果是A、9B、14C、10D、15标准答案:D知识点解析:考查函数的递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)=5+(4+(3+(2+fun(1))))=15,所以答案为D选项。32、有以下程序#includeintd=1;voidfun(intp){intd=5;d+=p++;printf("%d",d);}main(){inta=3;fun(a);d+=a++;printf("%d\n",d);}程序的输出结果是A、84B、96C、94D、85标准答案:A知识点解析:本题主要考查局部变量和全局变量的区别,题目中函数之外定义的d为全局变量,函数fun内定义的d为局部变量,所以执行fun函数后,打印出8,执行完d+=a++;后d变为4,所以答案为A。33、有以下程序#includeintfun(intA){intb=0;staticintc=3;a=(c++,b++);return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=fun(a++);printf("%d\n",k);}程序的输出结果是A、4B、0C、1D、2标准答案:B知识点解析:题目中fun函数被执行了两次,两次执行后,都是返回了函数内部的b值,所以答案为0,即B选项正确。34、有以下程序#includemain(){charc[2][5]={"6934","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&&p[i][j]<=’9’;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序的输出结果是A、693825B、69825C、63825D、6385标准答案:D知识点解析:本题的意图在于将c中两个字符串的偶数位置的数字组成一个新数,找到的四个数字分别为6、3、8、5,组成的数为6385,所以答案为D选项。35、有以下程序#include#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}程序的输出结果是A、0B、1C、9D、10标准答案:B知识点解析:本题考查宏定义,宏定义只是做个简单的替换,执行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m*k+m=15/2,a/=SQR(k+m)/SQR(k+m)的结果为1,选项B正确。36、有以下程序#includemain(){charx=2,y=2,z;z=(y<<1)&(x>>1);printf("%d\n",z);}程序的输出结果是A、1B、0C、4D、8标准答案:B知识点解析:本题考查位运算<<、&。y<<1为4,x>>>1为1,二者与一下为0,所以B选项正确。37、有以下程序#includestructS{inta;intb;};main(){structSa,*p=&a;a.a=99;printf("%d\n",__________);}程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A、a.aB、*p.aC、p->aD、(*p).a标准答案:B知识点解析:本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,p为指针,*p为结构体变量,那么*p.a可以表示为结构体中成员a的数据。38、有以下程序#include#includevoidfun(double*p1,double*p2,double*s){s=(double*)calloc(1,sizeof(double));*s=*p1+*(p2+1);}main(){doublea[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);}程序的输出结果是A、21.10B、11.10C、12.10D、1.10标准答案:D知识点解析:本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1.10,选项D正确。39、若已建立以下链表结构,指针p、s分别指向如图所示结点则不能将s所指结点插入到链表末尾的语句组是A、p=p->next;s->next=p;p->next=s;B、s->next=’\0’;p=p->next;p->next=s;C、p=p->next;s->next=p->next;p->next=s;D、p=(*p).next;(*s).next=(*p).next;(*p).next=s;标准答案:A知识点解析:本题考查向链表中插入节点,A选项语句错误,不能够实现在链表末尾插入。40、若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是A、EOFB、非0C、-1D、0标准答案:D知识点解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共38题,每题1.0分,共38分。)1、下列关于栈和队列的描述中,正确的是()。A、栈是先进先出B、队列是先进后出C、队列允许在队头删除元素D、栈在栈顶删除元素标准答案:D知识点解析:栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。2、已知二又树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是()。A、ABCDEB、ECABDC、EACDBD、CDEAB标准答案:C知识点解析:由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序遍历的首个元素为E,故排除A)和D)选项。由于中序遍历中,元素B在元素根结点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为B,故选项C)为正确选项,即该二叉树的前序遍历序列是EACDB。3、在数据流图中,带有箭头的线段表示的是()。A、控制流B、数据流C、模块调用D、事件驱动标准答案:B知识点解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一一般在旁边标注数据流名。4、结构化程序设计的3种结构是()。A、顺序结构,分支结构,跳转结构B、顺序结构,选择结构,循环结构C、分支结构,选择结构,循环结构D、分支结构,跳转结构,循环结构标准答案:B知识点解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。5、下列方法中,不属于软件调试方法的是()。A、回溯法B、强行排错法C、集成测试法D、原因排除法标准答案:C知识点解析:软件调试主要采用以下三种方法:强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。6、下列选项中,不属于模块间耦合的是()。A、内容耦合B、异构耦合C、控制耦合D、数据耦合标准答案:B知识点解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合一若一组模块都访问同一全局数据结构,则称为公共耦合。外部耦合——若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合——若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。标记耦合一一若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。非直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。7、下列特征中不是面向对象方法的主要特征的是()。A、多态性B、标识惟一性C、封装性D、耦合性标准答案:D知识点解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装件、模块独立性、继承和多态性好。8、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。它包括从E-R图向关系模式转换和逻辑模式规范化及调整、实现。9、在一棵二叉树上,第5层的结点数最多是()。A、8B、9C、15D、16标准答案:D知识点解析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新生儿锁骨骨折护理查房
- 2026年全国妇幼儿童保健技能知识竞赛判断题库及答案
- 2026年秋期部编人教版五年级上册语文全册教案(含二次备课+教学反思 新教材完整版)
- 湖南省邵阳市2027届高三上学期第一次考试政治试题(含答案)
- 医院体格检查培训考核试题及答案
- 2025-2026年咖啡师咖啡豆知识与应用技能测试卷
- 2026年烟花爆竹零售从业人员培训试题(含答案)
- 2025-2026年中医经典著作阅读理解与解析习题
- 2026年考研英语阅读理解专项题库
- 2026年荨麻疹诊疗管理指南
- 2023年全国职业院校技能大赛-智能节水系统设计与安装赛项规程
- HG∕T 4600-2014 化工装置用高温高压套管热电偶
- AQ 1064-2008 煤矿用防爆柴油机无轨胶轮车安全使用规范(正式版)
- 2024年设备监理师之质量投资进度控制题库及答案【各地真题】
- 新闻标题的翻译与技巧课件
- 了解月经周期与女性乳腺健康的关系
- GB/T 7000.201-2023灯具第2-1部分:特殊要求固定式通用灯具
- 《静脉炎的处理》课件
- 教师节师德师风主题演讲PPT
- 通信电子线路习题解答
- 2023年晋城市第二人民医院康复医学与技术岗位招聘考试历年高频考点试题含答案解析
评论
0/150
提交评论