版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷15(共9套)(共300题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、关于C语言的变量,以下叙述中错误的是A、所谓变量是指在程序运行过程中其值可以被改变的量B、变量所占的存储单元地址可以随时改变C、程序中用到的所有变量都必须先定义后才能使用D、由三条下划线构成的符号名是合法的变量名标准答案:B知识点解析:变最是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。2、C源程序中不能表示的数制是A、八进制B、十进制C、二进制D、十六进制标准答案:C知识点解析:在C语言的源程序中,数值可以用十进制、八进制和十六进制来表示。不用二进制来表示。3、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。4、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是A、冒泡排序为n/2B、冒泡排序为nC、快速排序为nD、快速排序为n(n-1)/2标准答案:D知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。5、在数据库设计中,将E—R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:E—R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。6、通常软件测试实施的步骤是()。A、集成测试、确认测试、系统测试B、单元测试、集成测试、确认测试C、确认测试、集成测试、单元测试D、单元测试、集成测试、回归测试标准答案:B知识点解析:软件测试的实施过程主要有4个步骤:单元测试、集成测试、确认测试(验收测试)和系统测试。7、数据库中对概念模式内容进行说明的语言是()。A、数据控制语言B、数据操纵语言C、数据定义语言D、数据并发语言标准答案:C知识点解析:概念模式主要描述数据的概念记录类型以及它们间的关系,它还包括一些数据间的语义约束,对它的描述可用DDL语言(数据定义语言)定义。8、设循环队列的存储空间为Q(1:m),初始状态为front=rear=m。经过一系列正常的操作后,front=1,rear=m。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为A、mB、m-1C、m-2D、1标准答案:C知识点解析:经过一系列止常的操作后,front=1,rear=m,那么最坏情况下需要的比较次数为rear-front-1=m-1-1=m-2。9、以下关于C语言数据类型使用的叙述中错误的是()。A、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型B、若要保存带有多位小数的数据,可使用双精度类型C、若只处理“真”和“假”两种逻辑值,应使用逻辑类型D、整数类型表示的自然数是准确无误差的标准答案:C知识点解析:C语言中没有逻辑类型,所以C错误。若要保存带有多位小数的数据,可以用单精度类型,也可以用双精度类型。处理包含不同类型的相关数据可以定义为结构体类型。整数类型可以无误差地表示自然数。10、若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是A、0B、2C、1D、不知道a的值,不能确定标准答案:C知识点解析:在逻辑表达式中,a‖b,只有在a跟b都为0时,表达式的结果才为0。在题中所给的表达式中a要么等于1,要么不等于1,肯定会有一方的值不为真,表达式值为1。11、有以下程序:#include#definePT3.5;#defineS(x)*x*xmain(){inta=1,b=2;prinff(“%4.1f\n”,S(a+b));}程序运行后的输出结果是()。A、31.5B、7.5C、程序有错无输出结果D、14.0标准答案:C知识点解析:宏定义不是C语句,结尾不加“;”,所以该程序会出现编译错误,答案选C。12、数据库技术的根本目标是要解决数据的A、存储问题B、共享问题C、安全问题D、保护问题标准答案:B知识点解析:数据库中的数据具有“集成”、“共享”之特点,即数据库集中了各种应用的数据,进行统一地构造与存储,而使它们能被不同的应用程序所使用。因而数据库技术的根本目标是解决数据的共享问题。13、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块问互相连接的紧密程度标准答案:B知识点解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于模块的独立性。14、一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程问的联系是A、1:1联系B、1:m联系C、m:1联系D、m:n联系标准答案:D知识点解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程的联系是多对多的联系。15、软件测试的目的是A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程序中的错误。16、有以下程序:#includeintsum(intm){staticintn=1;returnn+=m:}main(){inti;for(i=1;i<=1;i++)prinff(“%d,”,sum(i));prinff(“\n”);}程序运行后的输出结果是()。A、2,B、1,C、4,D、3,标准答案:A知识点解析:在输出函数中,调用sum函数,sum函数的作用是定义一个常数n=1,对n进行叠加主函数传递的m值,随后将和返回给主函数,因此输出为2,。17、有以下程序main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}A、1*1=11*2=21*3=32*1=22*2=43*1=3B、1*1=11*2=22*2=41*3=32*3=63*3=9C、1*1=11*2=21*3=32*2=42*3=63*3=9D、1*1=12*1=22*2=43*1=33*2=63*3=9标准答案:C知识点解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结束。对于外层循环自变量i的每一个值,内层循环的自变量i每次从i开始,每次循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打印i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。18、有以下程序:#includevoidfun(char*c,intd){*c=*c+1:d=d+1:prinff(“%c,%c,”,*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf(“%c,%c\n”,b,a);}程序的运行结果是()。A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:本题重点考查函数的调用。首先要了解字母对应的ASCII码,例如A为65,a为97,字母+1可得到下一个字母。其次是函数形参和实参的问题,运行过程如下:在fun(&b,a)中,*e=‘a’,d=65。*c+1=’b’,d+1=66,prinff(“%c,%c,”,*c,d);输出b,B;因为指针c指向地址的值为b,此时b=*c=’b’;函数返回执行prinff(“%c,%c\n”,b,a);输出b,A,因此A选项正确。19、关于子函数return语句的叙述中正确的是()。A、一个自定义函数中必须至少有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数执行结束时不能返回到调用处标准答案:B知识点解析:return语句主要用于返回函数的返回值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值返回后面的语句不执行。20、以下叙述中错误的是A、用户定义的函数中可以没有return语句B、用户定义的函数中若没有return语句,则应当定义函数为void类型C、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值D、函数的return语句中可以没有表达式标准答案:C知识点解析:函数值通过return语句返回,return语句的形式如下:return表达式或return(表达式);当程序执行到return语句时,程序的流程就返回到调用该函数的地方,并带回函数值。在同一函数内,可以根据需要,在多处出现return语句,在函数体的不同部位退出函数。无论函数体中有多少个return语句,return语句只可能执行一次,返回一个函数值。return语句中也可以不含有表达式,这时必须定义函数为void类型,它的作用只是使流程返回到调用函数,并没有确定的函数值。函数体内可以没有return语句,这时也必须定义函数为void类型,程序的流程就一直执行到函数末尾的“}”,然后返回调用函数,也没有确定的函数值带回。21、有以下程序,在VC6平台上编译运行,程序运行后的输出结果是#includeMain(){ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}A、4,4B、2,4C、4,8D、10,6标准答案:C知识点解析:关键字sizeof用于测试不同类型变量所占的内存空间,返回所占的字节数。在VC编译系统中,整型变量占用4个字节的内存空间,而双精度型变量占用8个字节的内存空间。22、以下叙述中正确的是A、在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式B、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数C、若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4标准答案:A知识点解析:选项B中a=10,在赋值时会把10自动转换为double类型然后赋值,实型变量中不可能存放整型。而选项C中执行a=b后,b的值不变还是9,选项D中执行a=b;b=a;后,a的值为9,b的值也为9。23、工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是多对多的关系。选项A正确。24、有以下程序#includemain(){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”,而j的初值为3,故当外层循环变量i的值为1和2时,内层循环体都不会被执行。只有当i和i都等于3时循环才会执行一次。因为m的值为55对3求余结果为1。25、在函数调用过程中,如果函数如funA调用函数funB,函数funB又调用了函数如funA,则A、称为函数的直接递归调用B、称为函数的间接递归调用C、称为函数的循环调用D、C语言中不允许这样的递归调用标准答案:B知识点解析:本题考查递归的概念,C语言中函数可以直接或间接调用自身,称为递归调用。本题中funA调用funB,然后funB又调用funA,即funA间接调用了自身。26、以下选项中与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,跳出switvch,如果是其他值则a++;选项B)对a=1的结果进行switch判断,如果为0表示a不等于1则a=b,和题目要求不符合;选项C)和选项A)一样;选项D)和选项case条件相反,满足题目要求。27、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A、形参只是形式上的存在,不占用具体存储单元B、函数的形参和实参分别占用不同的存储单元C、同名的实参和形参占同一存储单元D、函数的实参和其对应的形参共占同一存储单元标准答案:B知识点解析:在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。28、以下叙述中错误的是A、C程序在运行过程中所有计算都以二进制方式进行B、所有C程序都需要编译链接无误后才能运行C、C程序在运行过程中所有计算都以十进制方式进行D、C程序中字符变量存放的是字符的ASCII值标准答案:C知识点解析:计算机程序都是编译为二进制的代码,计算机才会执行。29、以下选项中,没有编译错误的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’);B、charstr1[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld":标准答案:A知识点解析:选项A)是定义了字符数组str3[],并对其赋初值。选项B)中语句str2=str1非法,字符数组不能直接赋值。选项C),D)和选项B)一致。30、以下叙述中正确的是A、结构体变量的地址不能作为实参传给函数B、结构体数组名不能作为实参传给函数C、即使是同类型的结构体变量,也不能进行整体赋值D、结构体中可以含有指向本结构体的指针成员标准答案:D知识点解析:一个结构体变量包含若干成员,这些成员可以是数值类型、字符类型、数组类型,也可以是指针类型,甚至可以是正在定义的结构体类型指针。用结构体变量作实参时,采取的是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参数时,采取了“地址传递”的方式,形参须为同类型的结构指针或者形参结构数组。31、以下叙述中正确的是A、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行B、只能在循环体内和switch语句体内使用break语句C、continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环D、在while语句和do-while语句中无法使用continue语句标准答案:B知识点解析:break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体,从而提前结束循环,而当break出现在循环体中的switch语句体内时,其作用只是跳蹦该switch语句体,并不能中止循环体的执行。若想强行终l}=循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出循环体。continue语句的作用是结束本次循环,在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。32、有以下程序#includemain(){charp[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+str1en(q),q);printf("%d\n",str1en(p));}程序运行后的输出结果是A、9B、11C、6D、7标准答案:C知识点解析:字符串连接函数strcat(p,r)的功能是把字符数组p[]和r[]连接起来,此时字符数组p[]的有效字符长度为9,再执行strcpy(p+str1en(q),q)字符串复制函数,把字符数组q[]复制到字符数组p[]从p[3]开始到p[5]数组位置中,由于字符数组q[]中的内容为字符串“abc”复制时把字符串结束标志’\null’也复制到字符数组p[]中,这时字符函数str1en(p)返回字符数组p[]的有效字符长度为6。33、有以下程序#include<stdio.h>#include<string.h>voidmain(){charstr[][20]={"One*World","One*Dream!"),*p=str[1];printf("%d,",strlen(p));printf("%s\11",p);}程序运行后的输出结果是A、9,One*Dream!B、10,One*Dream!C、9,One*WorldD、10,One*World标准答案:B知识点解析:在主函数中定义了二维字符数组str,并对它赋初值。定义字符指针p,并把字符串str[1]的地址赋给它一所以这时字符指针p指向字符串“One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度10和字符串本身。34、下面关于位运算符的叙述,正确的是A、||表示"按位或"的运算B、#表示"按位异或"的运算C、&表示"按位与"的运算D、~表示"按位异或"的运算标准答案:C知识点解析:本题考查位运算。^为按位异或,|为按位或,~表示按位取反。所以C选项正确。35、在软件开发中,需求分析阶段产生的主要文档是()。A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。36、以下程序依次把从终端输入的字符存放到f文件中,用捍作为结束输入的标志,则在横线处应填入的选项是#include<stdio.h>main(){FILE*fp;charch;fp=fopen("fname","w");while((ch=getchar())!=’#’)fputc(_______);fclose(fp);}A、fp,chB、chC、ch,"fname"D、ch,fp标准答案:D知识点解析:fputc()是以字符(字节)为单位的读写函数。每次可从文件读出或向文件写入一个字符。使用格式为“fputc(ch,f.p);”。其中ch是待输出的某个字符,它可以是一个字符常量,也可以是一个字符变量:fp是文件指针。fputc(ch,fp)的功能是将字符ch写到文件指针fp所指的文件中。如果输出成功,fputc函数返回所输出的字符;如果输出失败,则返回一个EOF值。EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1。37、有以下程序#includemain(){inta=2,b;b=a<<2;printf("%d\n",b);}程序运行后的输出结果是()。A、8B、4C、6D、2标准答案:A知识点解析:左移运算符"<<"的运算规则是把左边运算数的各二进制位全部左移n位,n取决于"<<"右边的数值,高位丢弃,低位补0。变量a的值为2,对应二进制数值为0010,左移2位后值为1000,对应十进制数值为8,所以输出结果为8,答案选A。38、以下叙述中错误的是()。A、可以通过typedef增加新的类型B、可以用typedef将已存在的类型用一个新的名字来代表C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名标准答案:A知识点解析:typedef为类型定义符,使用的一般形式为"typedef原类型名新类型名;",它用于给已知类型取别名,作用仅仅是用"新类型名"代替"原类型名",并没有产生新的数据类型,答案选A。39、有以下程序#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选项正确。40、有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)#include#includemain(){chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A、a12xyzB、bc2yzC、a2yzD、12yz标准答案:C知识点解析:本题考查字符串处理函数strcpy和strcat,执行完strcpy(a+1,b+2);后,a变为a2,执行完strcat(a,c+1)后,a变为a2yz,所以答案为C选项。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、算法的空间复杂度是指A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。2、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。3、以下语句中存在语法错误的是()。A、charss[6][20];ss[1]=“right?”;B、charss[][20]={“right?”};C、char*ss[6];ss[1]=“right?”;D、char*ss[]={“right?”};标准答案:A知识点解析:A项错误,数组定义后,不能对数组整体赋值,ss是二维数组,ss[1]是一维字符数组,即字符串,字符串赋值可以使用“strcpy(ss[1],”right”);”的形式,但不能使用赋值的形式。B、D两项正确,在定义时对数组同时进行初始化;C项正确,将常量字符串在内存中的首地址赋给指针数组的一个元素。4、设有以下程序段:intx=2009,y=2010;printf("%d\n",(x,y));则以下叙述正确的是()。A、输出语句中格式说明符的个数少于输出项的个数,不能正确输出B、运行时产生错误信息C、输出值为2009D、输出值为2010标准答案:D知识点解析:程序段中的输出项是一个逗号表达式(x,y),其值就是右边变量y的值,因此输出项的个数和控制转换说明符的个数相等,输出为2010。C语言规定,若输出格式说明符的个数少于输出项的个数时,多余的输出项不予输出;若输出格式说明符的个数多余输出项的个数时,则缺少的输出项输出不定值,并不产生出错信息。5、以下叙述中正确的是A、整型常量和实型常量都是数值型常量B、常量的类型不能从字面形式上区分,需要根据类型名来决定C、预定义的标识符是C语言关键字的一种,不能另作它用D、只能在函数体内定义变量,其他地方不允许定义变量标准答案:A知识点解析:整型常量和实型常最都是数值型常量,选项A)止确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B)错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的变量,选项D)错误。6、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。7、下列选项中不符合良好程序设计风格的是A、源程序要文档化B、数据说明的次序要规范化C、避免滥用goto语句D、模块设计要保证高耦合、高内聚标准答案:D知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一、效率第二”的论点己成为当今主导的程序设计风格。良好的程序设计风格主要应注重和考虑下列几个因素:①源程序文档化,包括下列三个方面:a.符号的命名应具有一定的含义:b.正确的注释能够帮助读者理解程序;c.视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。②数据说明的方法,包括下列三个方面:a.数据说明的次序规范化;b.说明语句中变量安排有序化;c.使用注释来说明复杂数据的结构。③语句的结构应该简单直接,不应该为提高效率而把语句复杂化。④输入和输出方式和风格应尽可能方便用户的使用。8、下列叙述中正确的是A、算法的复杂度是指算法所处理的数据量B、算法的复杂度是指算法程序中指令的数量C、算法的复杂度是指算法控制结构的复杂程度D、算法的复杂度包括时间复杂度与空间复杂度标准答案:D知识点解析:算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。9、若有定义语句:intx=10;则表达式x-=x+x的值为A、-20B、0C、-10D、10标准答案:C知识点解析:表达式x-=x+x等价于x=x.(x+x),整型变量x的初始值等于10,计算题同所求表达式的值时,首先计算x与x的和等于20,然后再用10减去20等于-10,得到该表达式的值。10、以下选项中,值为1的表达式是()。A、1一‘0’B、1一‘\0’C、‘1’一0D、‘\0’一‘0’标准答案:B知识点解析:\0,空值,其.ASCII码值为0,所以B选项的值为1。字符0的ASCⅡ码值为048,所以A、C、D选项的值均不为1。11、下列关于软件工程的描述中正确的是A、软件工程只是解决软件项目的管理问题B、软件工程主要解决软件产品的生产率问题C、软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D、软件工程只是解决软件开发中的技术问题标准答案:C知识点解析:软件工程是建立并使用充善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程主要思想是强调在软件开发过程中需要应用工程化原则。12、软件工程的三要素是()。A、方法、工具和过程B、建模、方法和工具C、建模、方法和过程D、定义、方法和过程标准答案:A知识点解析:软件工程的三要素是方法、工具和过程,答案选A。13、以下选项中不能作为C语言合法常量的是()。A、O.1e+6B、’cd’C、’’\a’’D、’\011’标准答案:B知识点解析:要想表示字符串常量,应该用双引号表示,即’’ed’’,单引号用于表示字符常量,所以B选项中的表示方法错误。14、软件生命周期是指()。A、软件产品从提出、实现、使用、维护到停止使用退役的过程B、软件的需求分析、设计与实现C、软件的开发与管理D、软件的实现和维护标准答案:A知识点解析:软件的生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程,答案选A。15、C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是()。A、冠以关键字externB、位置在函数体外部C、作用范围是全程的D、位置在函数的外部标准答案:D知识点解析:C语言中允许用位置在函数外部的说明来指定变量、函数和其他标识符的特征。16、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。A、(x-y<0||x-y>0)B、(x-y<0)C、(x-y>0)D、(x-y=0)标准答案:A知识点解析:条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。本题中与条件表达式:(x-y)等价的是(x-y<0||x-y>0)。17、有以下程序#includemain(){inta=7;while(a--);printf(“%d\n”,a);}程序运行后的输出结果是A、0B、1C、-1D、7标准答案:C知识点解析:在while语句中,先判断while后面的表达式是否为0,如果为0,则退出循环,否则执行循环体。在本题中,当变量a的值经过几次循环后,其值等于0时,退出while循环语句,变量a再执行自减运算,所以其值等于-1。18、下列关于return语句的叙述中正确的是()。A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值,A选项描述错误。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,C选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,D选项描述错误。因此B选项正确。19、设有如下关系表:则下列操作中正确的是A、T=R∩SB、T=R∪SC、T=R×SD、T=R/S标准答案:B知识点解析:关系代数的并运算是指:设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组组成的集合,记为R∪S。形式定义为:R∪S≡{t|t∈R∧t∈S},式中t是元组变量。本题中关系T是由属于关系R的或者属于关系S的元组组成,所以T是R∪S的结果。20、下列程序段中完全正确的是()。A、int*p;scanf(’’%d’’,&p);B、int*p;scanf(’’%d’’,p);C、intk,*p=&k;scanf(’’%d’’,p);D、intk,*p;*p=&k;scanf(’’%d’’,p);标准答案:C知识点解析:A选项中错在没有对指针进行初始化,无效指针,并且在scanf(’’%d’’,&p)中无须再进行取地址操作;B选项中没有对指针进行初始化,无效指针;D选项中语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。C选项正确。21、以下选项中合法的实型常量是A、.914B、3.13e-2.1C、0D、2.0*10标准答案:A知识点解析:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式:①小数形式:小数形式是由数字和小数点组成的一种实数表示形式。例如0.345、.123、0.0等是合法的实数。这种表示形式必须要有小数点。②指数形式:在C语言中,用“e”或“E”后跟一个整数来表示以10为底的幂数。注意:字母“e”或“E”之前必须要有数字,后面的指数必须为整数。选项B)中e后必须为整数,选项C)没有小数点,而选项D)则出现非法字符。22、能够减少相同数据重复存储的是A、数据库B、字段C、文件D、记录标准答案:A知识点解析:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库主要特点:实现数据共享、减少数据的冗余度、数据的独立性、数据实现集中控制、数据一致性和可维护性,以确保数据的安全性和可靠性和故障恢复。23、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。24、表示关系式x≤Y≤z的C语言表达式的是A、(x<=y)‖(y<=x)B、(x<=y<=z)C、(x<=y)&&(y<=x)D、(x<=y)!(y<=x)标准答案:C知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。25、有以下程序main(){inta=2,c=5:printf("a=%%d,b=%%d\n",a,c);}程序的输出结果是A、a=%2,b=%5B、a=%d,b=%dC、a=2,b=5D、a=%%d,b=%%d标准答案:B知识点解析:输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,而没有%表示格式符的开始,%%d不能表示格式符,因此仅输出:a=%d,b=%d。26、以下选项中能表示合法常量的是A、\007B、1.5E2.0C、’\’D、1,200标准答案:A知识点解析:选项D,1200中间不能有逗号,否则编译时会认为是1或出错。选项B,2.0错误,必须为整数。选项C,要表示字符斜杠常量’\’,应该在反斜杠的前面再加上一个反斜杠。选项A为字符串常量,为正确选项。27、有以下程序#includemain(){intn,*p=NULL;*p=&n;pr*ntf("Inputn:");scanf("%d",&p);printf("outputn:");printf("%d\n",p);}该程序试图通过指针P为变量n读入数据并输出,但程序有多处错误,以下语句正确的是A、intn,*p=NULL;B、*p=&n;C、scanf(“%d”,&p)D、printf(“%d\n",p);标准答案:A知识点解析:选项A)表示在程序中,声明定义变最语句“intn,*p=NULL;”定义了整型变量n和指针变量p,并且指针变量p初始化为空。其他的语句都是错误的。其中选项B),&n的地址应存放到指针变量p中,而选项C)中数据输入项错误.选项D)输出地址信息。28、有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)#include<stdio.h>#include<string.h>main(){chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A、bc2yzB、a2yzC、a12xyzD、12yz标准答案:B知识点解析:程序执行“sfrcpy(a+1,b+2)”后,字符数组a的值为“a2”,再进行字符串的连接“strcat(a,c+1)”,此时字符数组a的值为“a2vz”。29、有以下程序#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、8B、10C、9D、7标准答案:A知识点解析:考查break和continue的用法。break语句用于循环体,其作用是跳出当前层循环,continue语句是跳过当前循环层余下未执行的语句,继续执行下一次循环。该程序中的for语句的循环条件是a小于等于100,当b的值大于等于20的时候就跳出循环并输出当前a的值。b值的变化逻辑是每次判定"b%3"的值若为1,则b自增3,否则,b自减5。其实该程序中,选择语句"if(b%3==1)"的判定条件一直为真,所以b的值为"1+a*3",易求得满足跳出条件的a值为8,答案选A。30、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C、只有简单算法才能在有限的操作步骤之后结束D、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。31、有以下程序段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、当产生的随机数n为4时结束循环操作B、当产生的随机数n为1和2时不做任何操作C、当产生的随机数n为0时结束程序运行D、for循环语句固定执行8次标准答案:C知识点解析:rand()函数功能为产生一个随机数,rand()%5,则产生0~4之间的任意随机数,当产生的随机数n为0时,执行“case0:exit(0)”这条语句,结束程序的运行。32、若有以下程序#include#include#includetypedefstructstu{char*name,gender;intscore;}STU;voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");}main(){STUa={NULL,’m’,290},b;=(char*)malloc(10);strcpy(,"Zhao");b=a;f();b.gender=’f’;b.score=350;printf("%s,%c,%d,",,a.gender,a.score);printf("%s,%c,%d\n",,b.gender,b.score);}则程序的输出结果是A、Zhao,m,290,Qian,f,350B、Zhao,m,290,Zhao,f,350C、Qian,f,350,Qian,f,350D、Qian,m,290,Qian,f,350标准答案:B知识点解析:本题考查结构体变量中的引用,其中a的name为Zhao,b执行函数f()后b的name并没有改变,还是Zhao,所以答案为B选项。33、若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是A、*pB、x[5]C、*(p+1)D、*x标准答案:B知识点解析:本题考查数组和指向数组的指针。x是一个二维double类型的数组,长度为5,下标范围是0-4,指针p指向数组x。选项A)中*p是取数组首元素x[0]的值:选项B)下标超出范围:选项C),p+1表示x[1]的地址,因此*(p+1)是取x[1]元素值;选项D)中,数组名x本身代表数组的首地址,因此*x表示取元素x[0]的值。34、以下叙述中正确的是A、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行B、只能在循环体内和switch语句体内使用break语句C、continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环D、在while语句和do-while语句中无法使用continue语句标准答案:B知识点解析:break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体,从而提前结束循环,而当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体,并不能中止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出循环体。continue语句的作用是结束本次循环,在while和do—while循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。35、有以下程序main(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",**k);}程序运行后的输出结果是A、44B、24C、22D、46标准答案:B知识点解析:主函数中指针变量p指向数组a中下标为0的元素,k指向p,那么*(p++)的值为2,p指向数组中下标为1的元素,k指向p,所以**k的值为4。36、设有以下定义chars1[]="0123";chars2[]={’0’,’1’,’2’,’3’};则以下叙述正确的是()。A、数组s1的长度大于s2的长度B、数组s1和s2的长度相同C、数组s1的长度小于s2的长度D、数组s1和s2完全等价标准答案:A知识点解析:字符数组s2的末尾字符不为?\0?,所以存放的并不是字符串,所以s2的字符个数为4,数组长度也为4;C语言中,若直接把一个字符串赋值给字符数组,系统会自动在末尾加上结束标识符?\0?并放置到该字符数组中,所以s1中的字符个数为5,数组长度也为5,答案选A。37、有以下程序voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是A、abc,123B、123,abeC、321,cbaD、1bc,a23标准答案:D知识点解析:函数voidswap(char*x,char*y)的功能是交换两个字符*x和*y中的内容。在主函数中字符指针s1指向字符串’abc’,s2指向字符串’123’。所以函数swap(s1,s2)的执行结果就是字符’a’和’1’相互交换。38、有以下程序#includemain(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是(以下□代表空格,代表回车)A、12□a□34□bB、12,a,34,bC、12a34bD、12□a34□b标准答案:C知识点解析:本题考查scanf语句。scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。其调用格式为:scanf("<格式化字符串>",<地址表>)格式化字符串包括以下3类不同的字符;①格式化说明符:格式化说明符与前面用的printf()函数中的格式说明符基本相同。②空白字符:空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。③非空白字符:一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。由于在scanf函数中,几个变量之间没有39、以下叙述中正确的是A、指针变量只能通过求地址运算符(&)来获得地址值B、语句p=NULL;与p=\0;是等价的语句C、int*p1;int*p2;int*p3;都是合法的定义指针变量的语句D、语句p=NULL;执行后,指针P指向地址为0的存储单元标准答案:C知识点解析:指针变量定义形式为:类型*指针变量名;其中*号的个数决定了几级指针,指针变量赋地址值的方式有3种方式:①通过求地址运算符(&)获得地址值;②通过指针变量获得地址值;③通过标准函数获得地址值。另外NULL是在stdio.h头文件中定义的预定义符。NULL的代码值为0。可以给指针变量赋NULL值。例如p=NULL;赋值语句,称p为空指针。这条语句等价于p=’\0’;或p=0;这时,指针p并不是指向地址为0的存储单元,而是具有一个确定的值——“空”。40、下列叙述中正确的是A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、对于循环队列,下列叙述中正确的是A、队头指针是固定不变的B、队头指针一定大于队尾指针C、队头指针一定小于队尾指针D、队头指针可以大于队尾指针,也可以小于队尾指针标准答案:D知识点解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。2、按照“后进先出”原则组织数据的数据结构是A、队列B、栈C、双向链表D、二叉树标准答案:B知识点解析:栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。即栈是按照“后进先出”(LastInFirstOut,简称LIFO)或“先进后出”(FirstInLastOut,简称FILO)的原则组织数据的。因此,栈也称为“后进先出表”或“先进后出”表。3、关于C语言中数的表示,以下叙述正确的是A、只要允许范围内整型数和实型数都能精确的表示B、只有整型数在允许范围内能精确无误的表示,实型数会有误差C、只有实型数在允许范围内能精确无误的表示,整型数会有误差D、只有用八进制表示的数才不会有误差标准答案:C知识点解析:本题考查c语言基本数据类型,整型数是有范围的,只在允许的范围内才能精确无误的表示,实型数由于存储长度限制存在误差。4、对长度为n的线性表做快速排序,在最坏情况下,比较次数为()。A、nB、n-1C、n(n一1)D、n(n一1)/2标准答案:D知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此称为快速排序法。最坏情况下快速排序退化为冒泡排序。5、下面程序的输出是()。main(){inti=9;for(;i>0;i--){if(i%3==0){printf("%d",--i);continue;}}}A、741B、852C、963D、875421标准答案:B知识点解析:本题考查continue的应用。程序中for循环体内有一个continue语句,它的功能是提前结束本次循环体(即循环体的后半部分不执行了),直接来到下一次循环的条件判断。本题中,当i值为3的倍数(9,6,3)时,表达式i%3值为0,输出--i(8,5,2),否则无输出。第6次循环结束后,i--使i得0,此时i>0为假,循环结束。6、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)A、printf("%c\n",’a’-32);B、printf(%d\n",’A’);C、printf("%c\n",65);D、printf("%c\n",’B’-1);标准答案:B知识点解析:在选项B的输出函数中,大写字符’A’以整型数据的形式输出。7、设二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为A、HGFEDCBAB、ABCDEFGHC、ABCDHGFED、DCBAHGFE标准答案:A知识点解析:前序遍历(DLR)是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右;中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游,可记做左根右:后序遍历(LRD)是二叉树遍历的一种,也叫做后根遍历、后序周游,可记做左右根。根据题中前序和中序序列均为ABCDEFGH,可画出二叉树,该二叉树是一个子结点全部在右侧二叉树,然后根据后序遍历方法,可得出后序遍历为HGFEDCBA。8、下面描述中正确的是()。A、预处理命令可以放在程序中的任何位置B、预处理命令结尾需要加分号C、C语言中预处理是指完成宏替换和文件包含指定的文件的调用D、预处理指令只能位于C源程序文件的首部标准答案:A知识点解析:本题考查C语言编译预处理命令的相关知识。C语言中的预处理命令完成文件读入和宏替换等任务,另外还可以完成对编译的一部分控制,如强行中断编译过程以及条件编译等过程。故选项C)错误。在程序的任何位置都可以使用预处理命令,故答案D)也错误。预处理命令都必须以“撑”号开始,结尾不加分号,故答案B)也错误。9、设二叉树的后序序列为DGHEBIJFCA,中序序列为DBGEHACIFJ。则前序序列为A、ABDEGHCFIJB、JIHGFEDCBAC、GHIJDEFBCAD、ABCDEFGHIJ标准答案:A知识点解析:后序遍历中,最后一个字母是根结点,也就是A是根结点;在中序遍历中,根结点前面的是左子树、后面的是右子树。后序中C在A前面、中序中C在A的后面,说明C是A的右结点;后序中F在C的前面、中序中在C后面,且后序和中序中,I均在F前面由此可确定,I为F的左结点,F为C的右结点。同C理J为F的右结点。后续中B为左子树的根结点,因此B为A的左结点,以此划分,在中序中B前面的D为左结点,后面的GEH为右子树,后序中,E在最后,应为剩下3个结点的根结点,也就是B的右子树,再根据中序中的顺序,可得出G为E的左结点,H为E的右结点。由此可画出这个二叉树,然后根据二叉树可的前序序列为ABDEGHCFIJ。10、阅读下面程序,程序执行后的结果为()。#include"stdio.h"main(){char*str="abcdefghijklmnopq";while(*str++1=’e’);printf("%c\n",*str);}A、fB、aC、eD、q标准答案:A知识点解析:本题考查的是取内容运算符“*”和自加运算符“++”的优先级问题。由于“++”的优先级高于“*”,所以题干中“*str++!=’e’”,即“*(str++)!=’e’”,当str指向字符“’e’”时,while循环的条件不成立,但“str”已经进行了自加指向了字符“’f’”,所以“*str”输出字符“’f’”。11、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的性能需求C、需求规格说明书评审D、制定软件集成测试计划标准答案:D知识点解析:需求分析阶段的工作可分为4个阶段:需求获取、需求分析、编写需求规格说明书、需求评审。12、有以下程序main(){inta=2,c=5;printf("a=%%d,b=%%dha",a,c);}程序的输出结果是A、a=%2,b=%5B、a=%d,b=%dC、a=2,b=5D、a=%%d,b=%%d标准答案:B知识点解析:输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,而没有%表示格式符的开始,%%d不能表示格式符,因此仪输出:a=%d’b=%d。13、若有定义inta;floatb;doublec;程序运行时输入:345能把值3输入给变量a、4输入给变量b、5输入给变量C的语句是A、scanf("%d%lf%If",&a,&b,&c);B、scanf("%d%f%If",&a,&b,&c);C、scanf("%d%f%f",&a,&b,&c);D、scanf("%1f%lf%If",&a,&b,&c);标准答案:B知识点解析:scanf函数进行输入的时候,默认的输入间隔为空格、跳格和回车,变量a、b和c均为数值型数据,输入时问隔为空格,因此seanf函数的第一个表示格式的参数之间不用加入分隔符,而要输入double型数据,格式控制必须用%If(或%le)。否则,数据不能正确输入。14、表达式(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选项。15、下面属于整数类Ⅰ的实例的是A、229B、0.229C、2.29E+00D、229标准答案:A知识点解析:整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数系。整数不包括小数、分数。选项A是整数;选项B是小数;选项C是科学计数法;选项D是字符串。16、有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序的运行结果是()。A、1,1,2,0B、0,0,0,3C、编译有错D、0,1,2,0标准答案:C知识点解析:本题中if(a=1)b=1;与elsed=3;之间多了语句c=2;,所以会出现else语句的位置错误的编译失败提示。17、有以下程序:#include<stdio.h>main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf(’’%d’’,i);}printf(’’\n’’);}程序的运行结果是()。A、5B、24C、32D、40标准答案:C知识点解析:本题的含义是在1~40的整数范围中,只有当i的值能被5整除,且i+2的值能被8整除时,打印i的值,满足这个条件的只有32,所以选择C选项。18、以下选项中不能用作C程序合法常量的是A、’\123’B、1,234C、123D、\X7D标准答案:B知识点解析:选项B)中的1,234在两侧加双引号才是C程序的合法字符串常量。19、有以下程序#includefun(inta,intb){intstaticm=0,i=2;i=i+m+1:m=i+a+b:returnm;}main(){intk=4,m=1,p;p=fun(k,m);printf("%d,",p);p=fun(k,m);printf("%d\n",p);}程序运行后的输出结果是A、8,17B、7,16C、8,8D、7,17标准答案:A知识点解析:本题考查了静态变量以及局部变量的同名问题。主函数中调用fun函数两次,第一次调用fun(4,1),形参a和b接收以后。i值为3,m的值为8,调用结束返回8存放到p中并且输出p的值为8,除了静态变量m和i,变量a,b撤销。第二次调用fun(4,1),接收实参值以后,i为3+8+1,而m为12+4+1,即输出函数值17。20、若程序中有宏定义行:#defineN100,则下列叙述中正确的是()。A、宏定义行中定义了标识符N的值为整数100B、在编泽程序对C源程序进行预处理时用100替换标识符NC、上述宏定义行实现将100赋给标识符ND、在运行时用100替换标识符N标准答案:B知识点解析:本题考查预编译相关知识,宏定义在编译程序时做了一个简单的替换,所以B选项正确。21、有以下程序#includemain(){printf("%d\n",NULL);}程序运行后的输出结果是()。A、0B、变量无定义,输出不确定C、-1D、1标准答案:A知识点解析:NULL为一个符号常量,对应的ASCII码值为0,答案选A。22、有以下程序#includemain(){inta=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序运行后输出结果是A、0,2B、0,3C、1,3D、1,2标准答案:D知识点解析:本题重点考察while语句,变量a和b分别赋初值为-2和1,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。a++即a参与运算后,a的值再自增1。++b即b自增1后再参与其它运算。当表达式的值为0时,退出循环,最后输出a和b的值为1和2。因此D选项正确。23、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、并C、交D、差标准答案:D知识点解析:关系T中的元组是关系R中有而关系S中没有的元组的集合,即从关系R中除去与关系S中相同元组后得到的关系T。所以做的是差运算。24、以下叙述中正确的是()。A、在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵B、语句inta[4][3]={1,2,4,5};是错误的初始化形式C、语句inta[][3]={1,2,4,5};是错误的初始化形式D、语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式标准答案:A知识点解析:考查二维数组的初始化。初始化二维数组的时候可以对其部分元素赋初值,选项B)错。还可以对数组的全部元素赋初值,此时第一维的元素个数可以不指定,也可以分行赋值,只对部分元素赋初值,选项C)、D)错。A)的描述正确,答案选A)。25、以下选项中,不合法的C语言用户标识符是A、AaBcB、a-bC、a_bD、_1标准答案:B知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项A中出现了非法的字符--。26、有以下程序voidfun(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(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序的运行结果是A、876543B、321678C、1098765D、345678标准答案:B知识点解析:函数fun(inta[],intn)的功能是实现整型数组a[]元素的逆置操作。在主函数中当执行fhn(k,5)时,对k[10]中的子数组k[5]={1,2,3,4,5}的首尾元素进行逆置,此时k[10]={5,4,3,2,1,6,7,8,9,10}。所在循环语句中输出从第2~7个数组元素时,其值分别为321678。27、有以下程序#include<stdio.h>intfun(chars[]){char*p=s;while(*p=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序运行后的输出结果是A、6B、7C、1D、0标准答案:B知识点解析:函数fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用。fun得到结果为7。28、下列语句组中,正确的是A、char*s;s="Olympic";B、chars[7];s="Olympic";C、char*s;s={"Olympic"};D、chars[7];s={"Olympic"};标准答案:A知识点解析:选项A)中定义了指针变量s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。29、若有以下程序#include#defineN4voidfun(inta[][N],intb[],intflag){inti,j;for(i=0;ia[i][j]):(b[i]<a[i][j]))b[i]=a[i][j];}}main(){intx[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},y[N],i;fun(x,y,1);for(i=0;iA、1,5,9,13,4,8,12,16,B、4,8,12,16,1,5,9,13,C、1,2,3,4,13,14,15,16,D、13,14,15,16,1,2,3,4,标准答案:A知识点解析:考查数组名作为函数参数。函数fun()的作用是如果flag为1则用b[i]记录a[i][0]至a[i][3](即当前行)中最小的值,若flag为0,则用b[i]记录a[i][0]至a[i][3](即当前行)中最大的值。所以答案选A。30、有以下程序#includemain(){inti=0;i=~i;printf("%d\n",i);}程序运行后的输出结果是A、8B、0C、1D、-1标准答案:D知识点解析:本题考查位运算中按位取反,0按位取反就是-1,所以选项D正确。31、设有某函数的说明为int*func(inta[10],intn);则下列叙述中,正确的是A、说明中的a[10]写成a[]或*a效果完全一样B、形参a对应的实参只能是数组名C、func的函数体中不能对a进行移动指针(如a++)的操作D、只有指向10个整数内存单元的指针,才能作为实参传给a标准答案:A知识点解析:函数func为返回值为指针的函数,有两个形参,形参数组a为指针变量,保存实参数组的首地址,其元素个数由实参数组决定,因此说明中的a[10]写成a[]或*a效果完全一样。32、以下选项中有语法错误的是A、charstr[3][10];str[1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术服务与培训协议
- 大米销售合同样式
- 标准招标文件材料范例
- 校园网络工程招标通知
- 倡导文明饮酒新风尚
- 解除合同协议中英版
- 抗菌棉纱购销合同
- 托管转让合同法律依据
- 招标费用结算办法
- 车辆借用合同样本范本
- 新华通讯社招聘笔试真题2023
- 《追求有效教学》课件
- 报废物资回收保密协议书
- 《跨境电商直播(双语)》课件-4.1跨境直播脚本设计
- 教师职业病教育
- 2024年云南省公务员录用考试《行测》真题及答案解析
- 2024-2030年中国粉末冶金制造行业“十四五”发展动态与发展方向建议报告
- 2024-2030年中国小苏打行业发展前景预测及投资潜力分析报告
- 17 难忘的泼水节(第一课时)公开课一等奖创新教学设计
- 一年级数学20以内加减法口算混合练习题
- 矿山安全生产培训
评论
0/150
提交评论