国家二级C++机试(运算符重载、模板和C++流)模拟试卷7
2020年全国计算机等级考试二级C语言上机模拟训练题库(共50套)
2020 年全国计算机等级考试二级 C 语言上机模拟训练题库(共50 套)第一套1 程序填空给定程序中,函数fun 的功能是:计算下式s=1/22+3/42+5/62+(2 ×n-1)/(2 ×n) 2 2 -3 并把计算结果作直到︱( 2×n-1 )/ (2×n)︱《 10为函数值返回。
例如,若形参 e 的值 le -3,函数值的返回值为 2.735678。
第 1 处 i=0;第 2 处 i++;第 3 处 x=(2.0*i-1) / ((2.0*i)* (2.0*i));2程序修改给定程序 MODI1.C中函数 fun 的功能是:将 s 所指字符串的正序和反序进行连接,形成一个新串放在 t 所指的数组中。
/**found**/void fun(char*s, char *t)/**found**/t[2*d]= 0’;3程序设计函数 fun 的功能是:将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在 t 所指的数组中。
viod fun(char*s, chat t[]){int i,j=0;for(i=1;i<strlen(s);i+=2)if(s[i]%2)t[j++]=s[i];t[j]=0;}第二套1程序填空给定程序中,函数 fun 的功能是:在 3× 4 的矩阵中找出在行上最大,列上最小的那个元素,若没有符合条件的元素则输出相应信息。
第 1 处 max=a[i][j];c=j;}第 2 处 find=0;第 3 处 i++;2 程序修改给定程序 MODI1.C中函数 fun 的功能是:根据整形形参 m 的值:计算如下公式的值 ?例如 : 若 m中的值为 5,则应输出: 0.536389 。
/**found**/for(i=2;i<=m;i++)/**found**/y-=1.0/(i*i);3 程序设计m个人的成绩存放在 score 数组中,请编写函数 fun ,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below 所指的数组中。
国家二级C语言机试(操作题)模拟试卷7(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷7(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:将形参S所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s 所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h>#include <ctype.h>int fun(char *s){ int sum=0;while(*s) {/**********found**********/if(isdigit(*s))sum+=*s____1____;/**********found**********/____2____;}/**********found**********/return____3____;}main( ){ char s[81];int n;printf(“\nEnter a string:\n\n”);gets(s);n=fun(s);printf(“\nThe result is:%din\n”,n);}正确答案:(1)48或’0’(2)s++(3)sum解析:第一空:“if(isdigit(*s)) sum+=*s-___1___;”如果木s是数字字符的话,sum累加其对应的数字的和,第一空处是将*s转化为对应的数字,由审题分析可知,第一空为“‘0’”或“48”,’0’的ASCII码值为48。
第二空:“while(*s)”循环的终止条件是达到s字符串的结束,因此在循环体内s应该不断往字符串尾移动,故第二空处应为“s++”。
国家二级C语言机试(选择题)模拟试卷107(题后含答案及解析)
国家二级C语言机试(选择题)模拟试卷107(题后含答案及解析) 题型有:1. 选择题选择题1.下列选项中不属于结构化程序设计原则的是( )。
A.可封装B.自顶向下C.模块化D.逐步求精正确答案:A解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
知识模块:选择题2.有两个关系R和T如下:则由关系R得到关系T的操作是( )。
A.投影B.交C.选择D.并正确答案:A解析:从表图中可以看出,关系T是从关系R中选取一部分字段(A和C)及其值构成新的关系,是一种纵向操作产生新列,属于投影,正确选项为A。
知识模块:选择题3.有以下程序:#include <stdio.h>main( ){printf(″%d\n”,NULL);}程序运行后的输出结果是( )。
A.1B.变量无定义,输出不确定C.—1D.0正确答案:D解析:NULL为一个符号常量,对应的ASCⅡ码值为0,答案选D。
知识模块:选择题4.有以下程序:#include<stdio.h>#define f(x)x*x*xmain( ){int a=3,s,t;s=f(a+1);t=f((a+1));printf(″%d,%d\n″,s,t);}程序运行后的输出结果是( )。
A.10,64B.10,10D.64,64正确答案:A解析:C语言中带参数的宏可以理解为用参数直接替代定义式中的变量,而不经过任何修改。
所以s=f(a+1)=a+1*a+1*a+1,t=f((a+1))=(a+1)*(a+1)*(a+1),所以有无括号的运算结果是不同的。
知识模块:选择题5.有以下程序:#include<stdio.h>int f(int x,int y){return((y—x) * x);}void main( ){int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(″%d\n″,d);}程序运行后的输出结果是( )。
国家二级C语言机试C语言基础知识模拟试卷7_真题-无答案
国家二级C语言机试(C语言基础知识)模拟试卷7(总分60,考试时间90分钟)1. 选择题1. DOS文件系统的组织结构属于A. 星形结构B. 网星结构C. 环形结构D. 树形结构2. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A. C语言程序仅可以编译执行B. C语言程序仅可以解释执行C. C语言程序既可以编译执行又可以解释执行D. 以上说法都不对3. 以下叙述中错误的是A. C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件B. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中C. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令D. C语言源程序经编译后生成后缀为.obj的目标程序4. 下列叙述中错误的是A. C程序可以由多个程序文件组成B. 一个C语言程序只能实现一种算法C. C程序可以由一个或多个函数组成D. 一个C函数可以单独作为一个C程序文件存在5. 以下叙述中错误的是A. 结构化程序由顺序、分支、循环三种基本结构组成B. C语言是一种结构化程序设计语言C. 使用三种基本结构构成的程序只能解决简单问题D. 结构化程序设计提倡模块化的设计方法6. 以下叙述中错误的是A. 算法正确的程序最终一定会结束B. 算法正确的程序可以有零个输入C. 算法正确的程序可以有零个输出D. 算法正确的程序对于相同的输入一定有相同的结果7. 以下选项中关于程序模块化的叙述错误的是A. 把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B. 可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C. 把程序分成若干相对独立的模块,可便于编码和调试D. 可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序8. C语言源程序名的后缀是A. .exeB. .objC. .cD. .cp9. 关于算法,以下叙述中错误的是A. 同一个算法对于相同的输入必能得出相同的结果B. 一个算法对于某个输入的循环次数是可以事先估计出来的C. 某个算法可能会没有输入D. 任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕10. 以下不能用于描述算法的是A. 程序语句B. E-R图C. 伪代码和流程图D. 文字叙述11. 以下叙述中正确的是A. 程序的算法只能使用流程图来描述B. N—S流程图只能描述简单的顺序结构的程序C. 计算机可以直接处理C语言程序,不必进行任何转换D. 结构化程序的三种基本结构是循环结构、选择结构、顺序结构12. 以下叙述中正确的是A. 在C语言程序设计中,所有函数必须保存在一个源文件中B. 在算法设计时,可以把复杂任务分解成一些简单的子任务C. 只要包含了三种基本结构的算法就是结构化程序D. 结构化程序必须包含所有的二三种基本结构,缺一不可13. 以下叙述中正确的是A. 每个后缀为.c的C语言源程序都应该包含一个main函数B. 在C语言程序中,main函数必须放在其他函数的最前面C. 每个后缀为.c的C语言源程序都可以单独进行编译D. 在C语言程序中,只有main函数才可单独进行编译14. 有以下程序,在VC6平台上编译运行,程序运行后的输出结果是#include<stdio.h>main(){int s,t,A=10;double B=6:s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}A. 4,4B. 2,4C. 4,8D. 10,615. 对于一个正常运行的C程序,以下叙述中正确的是A. 程序的执行总是从程序的第一个函数开始,在main函数结束B. 程序的执行总是从main函数开始,在程序的最后一个函数中结束C. 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束D. 程序的执行总是从main函数开始16. 计算机能直接执行的程序是A. 目标程序B. 可执行程序C. 汇编程序D. 源程序17. 以下叙述中正确的是A. 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行B. C语言程序将从源程序中第一个函数开始执行C. main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等D. C语言规定必须用main作为主函数名,程序将从此开始执行18. 以下叙述中错误的是A. C程序在运行过程中所有计算都以二进制方式进行B. 所有C程序都需要编译链接无误后才能运行C. C程序在运行过程中所有计算都以十进制方式进行D. C程序中字符变量存放的是字符的ASCII值19. 下列叙述中正确的是A. 在C程序中main函数的位置是固定的B. C程序中所有函数之间都可以相互调用C. 每个C程序文件中都必须要有一个main函数D. 在C程序的函数中不能定义另一个函数20. 以下叙述正确的是A. C语言程序是由过程和函数组成的B. C语言函数可以嵌套调用,例如:fun(fun(x))C. C语言函数不可以单独编译D. C语言中除了main函数,其他函数不可作为单独文件形式存在21. C语言程序的模块化通过以下哪个选项来实现A. 变量B. 程序行C. 函数D. 语句22. 以下叙述中正确的是A. 程序的主函数名除main外,也可以使用Main或mainB. 在C程序中,模块化主要是通过函数来实现的C. 程序可以包含多个主函数,但总是从第一个主函数处开始执行D. 书写源程序时,必须注意缩进格式,否则程序会有编译错误23. 以下叙述中正确的是A. C语言程序总是从最前面的函数开始执行B. C语言程序总是从main函数开始执行C. C语言程序中main函数必须放在程序的开始位置D. C语言程序所调用的函数必须放在main函数的前面24. C语言主要是借助以下哪种手段来实现程序模块化A. 定义常量和外部变量B. 使用丰富的数据类型C. 使用三种基本结构语句D. 定义函数25. 以下四个程序中,完全正确的是A. #include<stdio.h>main();{/*/1Programming /*/printf("programming!\n");}B. #include<stdio.h>main();{/*programming*/printf("programming!\n");}C. #include<stdio.h>main() {/*/*programming*/*/printf("programming!\n");}D. include<stdio.h>main() {/*programming*/printf("programming!\n");}26. 以下关手结构化程序设计的叙述中正确的是A. 结构化程序使用goto语句会很便捷B. 一个结构化程序必须同时由顺序、分支、循环三种结构组成C. 由三种基本结构构成的程序只能解决小规模的问题D. 在C语言中,程序的模块化是利用函数实现的27. 以下叙述中正确的是A. C程序中的每一行只能写一条语句B. 简单C语句必须以分号结束C. C语言程序中的注释必须与语句写在同一行D. C语句必须在一行内写完28. 以下叙述中正确的是A. C程序书写格式严格,要求一行内只能写一个语句B. C程序书写格式自由,一个语句可以写在多行上C. C程序中的注释只能出现在程序的开始位置和语句的后面D. 用C语言编写的程序只能放在一个程序文件中29. 以下关于C语言的叙述中正确的是A. C语言中的变量可以在使用之前的任何位置进行定义B. 在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致C. C语言的数值常量中夹带空格不影响常量值的正确表示D. C语言中的注释不可以夹在变量名或关键字的中间30. 有以下程序#include<stdio.h>main(){int a=0,b=0;/*给a赋值a=10;b=20;给b赋值*/printf("a+b=%d\n",a+b);/*输出计算结果*/}程序运行后的输出结果是A. a+b=30B. a+b=10C. 出错D. a+b=0。
全国计算机二级《C语言》考试题库与答案
全国计算机二级《C语言》考试题库与答案全国计算机二级《C语言》考试题库与答案在学习、工作中,我们都离不开试题,借助试题可以检验考试者是否已经具备获得某种资格的基本能力。
什么样的试题才能有效帮助到我们呢?以下是店铺为大家收集的全国计算机二级《C语言》考试题库与答案,欢迎大家分享。
全国计算机二级《C语言》考试题库与答案篇1(1)下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除(2)下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法都不正确某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。
A.3B.4C.6D.7软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( ):A.学生成绩管理系统B.c语言编译程序C.UNIX操作系统D.数据库管理系统(5)结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构(6)下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是( )。
A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言一个教师可讲授多门课程,一门课程可由多个教师讲授。
则实体教师和课程间的联系是( )。
A.1:1联系B.1:m联系C.m:1联系D.m:n联系(9)已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。
以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。
国家二级C++机试(运算符重载、模板和C++流)模拟试卷6
国家二级C++机试(运算符重载、模板和C++流)模拟试卷6(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.若在表达式y/x中,''/''是作为成员函数重载的运算符,则该表达式还可以表示为( )。
(分数:2.00)A.x.operator/(y)B.operator/(x,y)C.y.operator/(x) √D.operator/(y,x)解析:解析:运算符函数的函数名是由运算符前加关键字operator构成的。
所以当“/”作为运算符重载后,其格式为operator/。
所以其作为成员函数调用时的格式为y.operator/(x)。
2.有类定义如下: class Type{ public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int val; };若有对象定义Type c1;则下列语句序列中,错误的是( )。
(分数:2.00)A.Type(3)+c1;B.e1+Type(3);C.3-c1:√D.c1-3;解析:解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。
3.若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
(分数:2.00)A.Data+(Data);B.Data operator+{Data};√C.Data+operator{Data};D.operator+(Data,Data);解析:解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。
运算符函数的函数名是由运算符前加关键字operator构成的。
4.若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。
国家二级C++机试(运算符重载、模板和C++流)模拟试卷1
国家二级C++机试(运算符重载、模板和C++流)模拟试卷1(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.运算符重载是对已有的运算符赋予多重含义,因此( )。
(分数:2.00)A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载C++中已经有的运算符,不能定义新运算符√D.C++中已经有的所有运算符都可以重载解析:解析:此题考查的是运算符重载。
运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。
2.关于运算符重载,下列表述中正确的是( )。
(分数:2.00)A.C++已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型√D.可以通过运算符重载来创建C++中原来没有的运算符解析:解析:此题考查的是运算符重载的概念。
C++语言规定,“.”、''*''、''->*''、“::”和“?:”这五个运算符不能被重载,故选项A错误;运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项B说法是错误的:运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项D错误。
3.通过运算符重载,可以改变运算符原有的( )。
(分数:2.00)A.操作数类型√B.操作数个数C.优先级D.结合性解析:解析:此题考查的是运算符重载。
运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。
故本题选项A正确。
4.下列运算符中,不能被重载的是( )。
(分数:2.00)A.&&B.!=C..√D.++解析:解析:此题考查的是运算符重载。
在C++中,只有.、*、->*、::、?:这五个运算符不能重载。
5.下列关于运算符重载的描述中,正确的是( )。
国家二级C语言机试(操作题)模拟试卷781(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷781(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
在此程序中,通过定义学生结构体数组,存储若干名学生的学号、姓名和三门课的成绩。
函数fun的功能是:将存放学生数据的结构体数组,按姓名的字典序(从小到大)排序。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#inclucle<stdio.h >#include<string.h>struct student{long srlo;char name[10];float score[3];};void fun(struct student a[],int n){/*********found*********/【1】t;int i,j;/*********found*********/for(i=0;i<【2】;i++)for(j=i+1;j<n;j++)/*********found*********/if(strcmp(【3】)>0){t=a[i];a[i]=a[j];a[j]=t;}}main( ){struct students[4]={{10001,”ZhangSan”,95,80,88},{10002,”LiSi”,85,70,78},{10003,”CaoKai”,75,60,88},{10004,”FangFang”,90,82,87}};int i,j;printf(“\n\nThe original data:\n\n”);for(j=0;j<4;j++){printf(“\nNo:%ld Name:%﹣8s Scores:”,s[j].sno,s[j].name);for(i=0;i<3;i++)printf(“%6.2f”,s[j].score[i]);printf(“\n”);}fun(s,4);printf(“\n\nThe data after sorting:\n\n”);for(j=0;j<4;j++){printf(“\nNo:%ld Name:%一8sScores:”,s[j].sno,s[j].name);for(i=0;i<3;i++)printf(“%6.2f”,s[j].score[i]);printf(“\n”);}}正确答案:(1)struct student(2)n﹣1(3)a[i].name,a[j].name解析:填空1:变量t是中间变量,用来存放结构体数组中的元素,因此应定义为结构体类型。
2022年计算机等级考试二级C语言模拟试卷及其答案
(2)【2】软件开发
评析:基于软件工程旳目旳,软件工程旳理论和技术性研究旳内容重要包括:软件开发技术和软件工程管理。
软件开发技术包括:软件开发措施学、开发过程、开发工具和软件工程环境,其主体内容是软件开发措施学。
软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。
(5)A
评析:确认测试旳任务是验证软件旳功能和性能及其他特性与否满足了需求规格阐明中确实定旳多种需求,以及软件配置与否完全、对旳。
(6)D
评析:常见旳需求分析措施有:构造化分析措施和面向对象旳分析措施。构造化分析旳常用工具有:数据流图(DFD)、数据字典(DD)、鉴定树和鉴定表等。
(7)C
评析:在软件设计过程中,必须遵照软件工程旳基本原则:这些原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可靠性。
(8)B
评析:内模式(Internal Schema)又称物理模式(Physical Schema),它给出了数据库物理存储构造与物理存取措施,如数据存储旳文献构造、索引、集簇及hash等存取方式与存取途径。
(9)D
评析:在关系数据库中,用二维表来表达实体之间元组所构成,因此关系可视为元组旳集合,将E-R图转换到关系模式时,实体与联络都可以表到达关系。
(7)【7】1.0/(i*i) 或 (double)1/(i*i)
评析:体现式1+1/(2*2)+1/(3*3)+...+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)
n
即:∑1÷(i×i)
i=1
对应旳C语言旳体现式s = s + 1.0/(i*i)。注:必须要写成1.0旳形式,否则 1/(i*i)返回值为其值截尾取整,即恒为0。
计算机二级《C语言》模拟试题及答案3篇
计算机二级《C语言》模拟试题及答案第一篇:C语言基础知识1. C语言的发明人是谁?简要介绍一下他的背景。
2. int型变量的取值范围是多少?unsigned int呢?3. 请问下面这段代码输出的结果是什么?char str1[] = "hello";char str2[] = "world";strcat(str1, str2);printf("%s", str1);4. 以下哪些数据类型可以用来存储浮点数?A. floatB. doubleC. long doubleD. char5. 下列代码的输出结果是什么?int a = 1;long b = 2;float c = 3.0;printf("%ld\n", a + b + c);答案:1. C语言的发明人是丹尼斯·里奇(Dennis Ritchie)。
他于1941年出生在美国,是贝尔实验室研究员和计算机科学家。
在20世纪70年代,他和肯·汤普逊(Ken Thompson)合作,发明了UNIX操作系统和C语言。
C语言是一种高级计算机程序语言,在操作系统、编译器、数据库、游戏等领域被广泛使用。
丹尼斯·里奇因发明了C语言,被誉为“计算机编程之父”。
2. int型变量的取值范围是-2147483648到2147483647,unsigned int的取值范围是0到4294967295。
3. 输出结果为“helloworld”。
strcat是C语言的字符串拼接函数,将两个字符串连接成一个字符串。
在拼接之前,需要保证第一个字符串的数组足够大,以容纳两个字符串的内容。
如果第一个字符串不够大,程序会出现内存溢出等问题。
4. A、B、C三个数据类型可以用来存储浮点数。
5. 输出结果为“6”。
在printf函数中,%ld表示输出长整型数据,而c是一个float型变量。
2023年计算机等级二级考试C语言试题及答案
一、选择题在下列各题旳A)、B)、C)、D)四个选项中,只有一种选项是对旳旳,请将对旳旳选项涂写在答题卡对应位置上,答在试卷上不得分。
(1)程序流程图中带有箭头旳线段体现旳是CA)图元关系B)数据流C)控制流D)调用关系(2)下面不属于软件设计原则旳是 CA)抽象B)模块化C)自底向上D)信息隐蔽(3)下列选项中,不属于模块间耦合旳是 CA)数据耦合B)标识耦合C)异构耦合D)公共耦合(4)下列论述中,不属于软件需求规格阐明书旳作用旳是DA)便于顾客、开发人员进行理解和交流B)反应出顾客问题旳构造,可以作为软件开发工作旳基础和根据C)作为确认测试和验收旳根据D)便于开发人员进行需求分析(5)算法旳时间复杂度是指CA)执行算法程序所需要旳时间B)算法程序旳长度C)算法执行过程中所需要旳基本运算次数D)算法程序中旳指令条数(6)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用旳算法是BA)堆排序B)直接插入排序C)迅速排序D)B)和C) (7)栈底至栈顶依次寄存元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列也许是BA)ABCED B)DCBEA C)DBCEA D)CDABE(8)数据库设计包括两个方面旳设计内容,它们是AA)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)构造特性设计和行为特性设计(9)关系表中旳每一横行称为一种AA)元组B)字段C)属性D)码(10)设有体现学生选课旳三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC旳关键字(键或码)为 CA)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)如下不对旳旳论述是DA)在C程序中,逗号运算符旳优先级最低B)在C程序中,APH和aph是两个不同样旳变量C)若a和b类型相似,在计算了赋值体现式a=b后b中旳值将放入a中,而b中旳值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(12)请选出可用作C语言顾客标识符旳是BA)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,CaseD)2a,Do,Sizeof(13)如下选项中,不能作为合法常量旳是BA)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 (14)在C语言中,运算对象必须是整型数旳运算符是AA)% B)\ C)%和\D)**(15)若变量均已对旳定义并赋值,如下合法旳C语言赋值语句是AA)x=y==5; B)x=n%2.5; C)x+n=i; D)x=5=4+1;(16)有如下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a旳ASCII码值为97,则执行上述程序段后输出成果是DA)因变量类型与格式描述符旳类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12 D)a,97,k=12(17)已知字母A旳ASCII代码值为65,若变量kk为char型,如下不能对旳判断出kk中旳值为大写字母旳体现式是BA)kk>=′A′&&kk<=′Z′ B)!(kk>=′A′||kk<=′Z′) C)(kk+32)>=′a′&&(kk+32)<=′Z′ D)isa lpha(kk)&&(kk<91)(18)当变量c旳值不为2、4、6时,值也为"真"旳体现式是BA)(c==2)||(c==4)||(c==6) B)(c>=2&& c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若有条件体现式(exp)?a++:b--,则如下体现式中能完全等价于体现式(exp)旳是BA)(exp==0) B)(exp!=0) C)(exp==1) D)(exp!=1)(20)如下不对旳旳定义语句是BA)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9}; C)char c1[]={′1′,′2′,′3′,′4′,′5′}; D)char c2[]={′\x10′, ′xa′, ′\x8′};(21)下列程序执行后旳输出成果是Bmain(){ int a[3][3], *p,i;p=&a[0][0];for(i=1; i<9; i++)p[i]=i+1;printf("%d\n",a[1][2];)A)3 B)6 C)9 D)随机数(22)设有如下程序段Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中旳控制体现式是非法旳D)程序段执行无限次(23)下面程序段旳运行成果是Cchar *s="abcde";s+=2;printf("%d",s);A)cde B)字符′c′ C)字符′c′旳地址D)无确定旳输出成果(24)阅读下列程序,则执行后旳成果为A#include "stdio.h"main(){ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}A)3e,6 B)62,5 C)56,5 D)3E,6(25)下面判断对旳旳是CA)char *a="china";等价于char *a;*a="china"; B)char str[5]={"china"};等价于char str[]={"china"};C)char *s="china";等价于char *s;s="china"; D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";(26)若有定义:int a[2][3];,如下选项中对a数组元素对旳引用旳是DA)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1](27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误旳输入语句是DA)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)有如下程序(29)#include <stdio.h>#define N 5#define M N+1#define f(x) (x*M)main(){ int i1,i2;i1=f(2);i2=f(1+1);printf("%d %d\n",i1,i2);}程序旳运行成果是BA)12 12 B)11 7 C)11 11 D)12 7(29)若有如下阐明和定义union dt{ int a; char b; double c;}data;如下论述中错误旳是DA)data旳每个组员起始地址都相似B)变量data所占内存字节数与组员c所占字节数相等C)程序段:data.a=5;printf("%f\n",data.c);输出成果为5. D)data可以作为函数旳实参(30)有如下程序#include<stdio.h>main(){FILE *fp;int k,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后旳输出成果是DA)1 2 B)1 4 C)123 4 D)123 456 (31)若已定义int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中则对a数组元素不对旳旳引用是DA)a[p-a] B)*(&a[i]) C)p[i] D)a[10](32)有如下程序#include <stdio.h>void fun(int *s,int n1,int n2){ int i,j,t;i=n1; j=n2;while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3); fun(a,4,9); fun(a,0,9);for(k=0;k<l0;k++)printf("%d",a[k]); printf("\n");}程序旳运行成果是CA) B) C) D)(33)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为A#include <stdio.h>#include <ctype.h>#include <string.h>int fun (char *str){ int i,j=0;for(i=0;str[i]!=′ \0′;i++)if(str[i]!=′ ′)str[j++]=str[i];str[j]= ′\0′;}main(){char str[81];int n;printf("Input a string : ");gets(str);puts(str);fun(str);printf("%s\n",str);}A)asdafaaz67 B)asd af aa z67 C)asd D)z67(34)有如下程序int fun(int n){if(n==1)return 1;elsereturn(n+fun(n-1));}main(){int x;scanf("%d",&x); x=fun(x);printf("%d\n",x)}执行程序时,给变量x输入10,程序旳输出成果是AA)55 B)54 C)65 D)45(35)下面程序段中,输出*旳个数是 Cchar *s="\ta\018bc";for(;*s!='\0';s++)printf("*");A)9 B)5 C)6 D)7(36)C语言构造体类型变量在程序运行期间BA)TC环境在内存中仅仅开辟一种寄存构造体变量地址旳单元B)所有旳组员一直驻留在内存中C)只有最开始旳组员驻留在内存中D)部提组员驻留在内存中(37)已知函数旳调用形式为fread(buf,size,count,fp),参数buf旳含义是CA)一种整型变量,代表要读入旳数据项总数B)一种文献指针,指向要读旳文献C)一种指针,指向要读入数据旳寄存地址D)一种存储区,寄存要读旳数据项(38)设有如下语句char x=3,y=6,z;则z旳二进制值是BA) B) C) D)(39)在C语言中,只有在使用时才占用内存单元旳变量,其存储类型是AA)auto和register B)extern和register C)auto和static D)static和register (40)设有定义语句int (*f)(int);,则如下论述对旳旳是BA)f是基类型为int旳指针变量B)f是指向函数旳指针变量,该函数具有一种int类型旳形参C)f是指向int类型一维数组旳指针变量D)f是函数名,该函数旳返回值是基类型为int类型旳地址二、填空题请将每一种空旳对旳答案写在答题卡序号旳横线上,答在试卷上不给分。
最新全国计算机等级考试二级c++题库7(共17套)
第七套1、数据库管理系统是______。
A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。
故本题答案为B。
2、对于循环队列,下列叙述中正确的是______。
A、队头指针是固定不变的B、队头指针一定大于队尾指针C、队头指针一定小于队尾指针D、队头指针可以大于队尾指针,也可以小于队尾指针所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。
循环队列主要有两种基本运算:入队运算与退队运算。
每进行一次入队运算,队尾指针就进一。
每进行一次退队运算,排头指针就进一。
当rear或front的值等于队列的长度+1时,就将rear或front的值置为1。
一般情况下,rear大于front,因为入队的元素肯定比出队的元素多。
特殊的情况是rear到达数组的上限之后又从数组的低端开始,此时,rear是小于front的。
故本题答案为D。
3、算法的空间复杂度是指______。
A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
故本题答案为A。
4、下列数据结构中,能够按照"先进后出"原则存取数据的是______。
A、循环队列B、栈C、队列D、二叉树在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。
栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
即栈是按照"先进后出"或"后进先出"的原则组织数据的。
全国计算机二级C语言考试模拟题
全国高校计算机等级考试(二级C)模拟一试题一、选择题1、设有语句:int k, *p; 以下能正确执行的赋值语句是(D )。
A、k=pB、k=&pC、P=KD、p=&k2、以下运算符中优先级最高的运算符是(A)。
A、!B、&&C、||D、<3、求字符串长度的函数是( D )。
A、strcatB、strcpyC、strcmpD、strlen4、下面程序段的运行结果是(A)。
char x[5]=“ab\0c\0”;printf("%s",x);说明:“\0”中的“0”是数字零。
A、abB、abcC、ab\0D、ab\0c\05、若有说明语句: int a[2][4]; 则对数组a元素的正确引用是( D )。
A、a[2]B、a[4]C、a[2][4]D、a[1][3]6、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。
A、float型B、int型C、long型D、double型7、用数组名作为函数调用的实参时,传递给虚参的是(A)。
A、数组的首地址B、数组第一个元素的值C、数组中全部元素的值D、数组元素的个数8、以下程序的输出结果是( D )。
#include<stdio.h>#define F(y) 8-yvoid main(void){int x,y;y=F(2);printf(“y=%d”,y);}A、2B、y=2C、6D、y=69、以下程序的输出结果是(A)。
#include<stdio.h>struct{int x,y;} a;void main(void){int x,y=50,z;a.x=10;a.y=20;z=a.x+y;printf(“%d”,z);}A、60 B 、10 C、0 D、2010、语句fopen(“file.dat”,”r”); 的功能是(A)。
A、按照“读”方式打开文件B、按照“写”方式打开文件C、按照“读写”方式打开文件D、按照“追加”方式打开文件11、关闭文件的语句是( D )。
国家二级C语言(公共基础知识)机试模拟试卷7(题后含答案及解析)
国家二级C语言(公共基础知识)机试模拟试卷7(题后含答案及解析)题型有:1. 选择题选择题1.下列叙述中正确的是( )。
A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上3种说法都不对正确答案:D解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A选项错误。
设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
知识模块:公共基础知识2.算法的有穷性是指( )。
A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用正确答案:A解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
有穷性是指算法程序的运行时间是有限的。
知识模块:公共基础知识3.算法的空间复杂度是指( )。
A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数正确答案:A解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,所以选择A选项。
知识模块:公共基础知识4.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。
A.一369B.369C.0.369D.整数集合{1,2,3,4,5}正确答案:B解析:只有B选项369可以用无符号整数来表示和存储。
A选项一369有负号,C选项0.369是小数,都不能用无符号整数类存储。
D选项是一个整数集合,得用数组来存储。
知识模块:公共基础知识5.下列叙述中正确的是( )。
A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上说法均错误正确答案:A解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。
知识模块:公共基础知识6.下列叙述中正确的是( )。
国家二级C++机试(运算符重载、模板和C++流)模拟试卷7(题后含答案及解析)
国家二级C++机试(运算符重载、模板和C++流)模拟试卷7(题后含答案及解析)题型有:1. 选择题选择题1.下列关于函数模板的描述中,正确的是( )。
A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数正确答案:D解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。
数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。
知识模块:模板2.有如下函数模板定义:template<typename T1,Typename T2>T1 Fun(T2 n){ return n*5.0;} 若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
A.FUN(9)B.FUN<9>C.FUN<double>[9]D.FUN<9>(double)正确答案:C解析:根据函数模板的定义,在选项C的调用中,把double类型传递给T1,int型传递给T2。
知识模块:模板3.下列关于模板的描述中,错误的是( )。
A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字typename声明正确答案:D解析:同一模板的声明和定义中,模板形参的名字不必相同。
每个模板类型形参前面必须带上关键字typename/class,每个非类型形参前面必须带上类型名字。
知识模块:模板4.已知主函数中通过如下语句序列实现对函数模板swap的调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是( )。
A.template<typename T>void swap(T a[],T b[],int size);B.template<typename T>void swap(int size,T a[],T b[]);C.template<typename T1,typename T2>void swap(T1 a[],T2 b[],int size};D.template<class T1,class T2>void swap(T1 a[],T2 b[],int size);正确答案:B解析:由题目中函数swap(a,b,10)调用语句可知,在对函数模板swap的声明语句中,应将第一、二个参数设为数组变量,第三个参数为整型变量。
全国计算机等级考试二级C语言笔试模拟试题(7)-中大网校
全国计算机等级考试二级C语言笔试模拟试题(7)总分:100分及格:60分考试时间:120分每小题1分,共40分(1)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A. e3,e1,e4,e2B. e4,e3,e2,e1C. e3,e4,e1,e2D. 任意顺序(2)下列关于标识符的说法中错误的是A. 合法的标识符是由字母、数字和下划线组成B. C语言的标识符中,大写字母和小写字母被认为是两个不同的字符C. C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符D. 用户标识符与关键字不同时,程序在执行时将给出出错信息(3)下列常量中,为不合法的实型常量表示的是A. .0032B. 0.0C. 0.3242E8D. .E3(4)字符型数据在机器中是用ASCII码表示的,字符"5"和"7"在机器中表示为A. 10100011和01110111B. 01000101和01100011C. 00110101和00110111D. 01100101和01100111(5)以下说法错误的是A. 一个算法应包含有限个步骤B. 在计算机上实现的算法是用来处理数据对象的C. 算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现D. 算法的目的是为了求解(6)下列程序执行后的输出结果是main(){ int a[3][3], *p,i; p=&a[0][0]; for(i=1; i<9; i++)p[i]=i+1; printf("%d\n",a[1][2]);}A. 3B. 6C. 9D. 随机数(7)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是A. 数据库系统B. 文件系统C. 人工管理D. 数据项管理(8)下列程序执行后的输出结果是void func(int *a,int b[]){ b[0]=*a+6; } main(){int a,b[5]; a=0; b[0]=3; func(&a,b); printf("%d\n",b[0]); }A. 6B. 7C. 8D. 9(9)数据处理的最小单位是A. 数据B. 数据元素C. 数据项D. 数据结构(10)数据库系统的核心是A. 数据库B. 数据库管理系统C. 模拟模型D. 软件工程(11)下列关于C语言数据文件的叙述中正确的是A. 文件由ASCII码字符序列组成,C语言只能读写文本文件B. 文件由二进制数据序列组成,C语言只能读写二进制文件C. 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D. 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(12)下面程序的文件名为t.exe,在DOS下输入的命令行参数如下:t to meet me<回车> 则程序输出的结果是#include "stdio.h" main(argc,argv)int argc;char*argv[]; {int i; printf("%d\n",argc);}A. 3B. 4C. 2D. 以上答案都不正确(13)在单链表中,增加头结点的目的是A. 方便运算的实现B. 使单链表至少有一个结点C. 标识表结点中首结点的位置D. 说明单链表是线性表的链式存储实现(14)以下程序的输出结果是main(){ int x=1,y=3; printf("%d,",x++); { int x=0;x+=y*2; printf("%d,%d, ",x,y); } printf("%d,%d\n",x,y); }A. 1,6,3,1,3B. 1,6,3,6,3C. 1,6,3,2,3D. 1,7,3,2,3(15)在计算机中,算法是指A. 加工方法B. 解题方案的准确而完整的描述C. 排序方法D. 查询方法(16)数据库的故障恢复一般是由A. 数据流图完成的B. 数据字典完成的C. DBA完成的D. PAD图完成的(17)有如下定义struct person{char name[9];int age;}; struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,}; 根据上述定义,能输出字母M的语句是A. printf("%c\n",class[3].name);B. printf("%c\n",class[3].name[1]);C. printf("%c\n",class[2].name[1]);D. printf("%c\n",class[2].name[0]);(18)请选出可用作C语言用户标识符的是A. void,define,WORDB. a3_b3,_123,IFC. FOR,--abc,CaseD. 2a,Do,Sizeof(19)下列语句中,错误的是(x,y,a,b假设已经定义好)A. while(x=y)5;B. dox++while(x==10);C. while(0);D. do2;while(a==b);(20)以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(21)若有以下调用语句,则不正确的fun函数的首部是main(){ …int a [50],n; …fun(n, &a[9]); …}A. voidfun(intm,intx[])B. voidfun(ints,inth[41])C. voidfun(intp,int*s)D. voidfun(intn,inta)(22)下列叙述中,不属于软件需求规格说明书的作用的是A. 便于用户、开发人员进行理解和交流B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据C. 作为确认测试和验收的依据D. 便于开发人员进行需求分析(23)栈通常采用的两种存储结构是A. 线性存储结构和链表存储结构B. 散列方式和索引方式C. 链表存储结构和数组D. 线性存储结构和非线性存储结构(24)若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include <stdio.h> main(){char c; int v0=1,v1=0,v2=0; do{switch(c=getchar()){case ′a′:case ′A′: case ′e′:case ′E′: case ′i′:case ′I′: case ′o′:case ′O′: case ′u′:case ′U′:v1+=1; default:v0+=1;v2+=1; } }while(c!=′\n′); printf ("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}A. v0=7,v1=4,v2=7B. v0=8,v1=4,v2=8C. v0=11,v1=4,v2=11D. v0=13,v1=4,v2=12(25)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。
全国计算机c语言二级试题及答案
全国计算机c语言二级试题及答案全国计算机C语言二级试题及答案一、单选题(每题2分,共20分)1. 在C语言中,以下哪个选项是正确的整型常量表示方法?A. 0x1AB. 0.123C. 1.23e10D. 1.23E+10答案:A2. 下列关于C语言中数组的描述,错误的是?A. 数组可以存储相同类型的元素B. 数组的元素必须在编译时确定C. 数组的元素可以是任意数据类型D. 数组的大小在运行时可以改变答案:D3. 在C语言中,以下哪个关键字用于定义函数?A. classB. structC. functionD. void答案:D4. C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B5. 下列哪个选项不是C语言中的控制结构?A. 循环B. 选择C. 跳转D. 继承答案:D6. 在C语言中,以下哪个选项是合法的变量名?A. 2variableB. variable2C. _variableD. variable$答案:C7. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A8. 在C语言中,以下哪个选项是正确的结构体定义?A. struct {int a;float b;};B. struct {int a;float b;} myStruct;C. struct {int a;float b;} myStruct;D. struct myStruct {int a;float b;};答案:D9. C语言中,以下哪个选项是正确的文件操作函数?A. fopenB. fcloseC. fwriteD. All of the above答案:D10. 在C语言中,以下哪个选项是正确的指针类型声明?A. int *p;B. *int p;C. int *p;D. int p*;答案:A二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“与”的运算符是________。
国家二级C++机试(运算符重载、模板和C++流)模拟试卷3
国家二级C++机试(运算符重载、模板和C++流)模拟试卷3(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.下列关于函数模板的描述中,正确的是( )。
(分数:2.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数√解析:解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。
数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。
2.有如下函数模板定义: template<typename T1,Typename T2> T1 Fun(T2 n){ return n*5.0;} 若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
(分数:2.00)A.FUN(9)B.FUN<9>C.FUN<double>[9] √D.FUN<9>(double)解析:解析:根据函数模板的定义,在选项C的调用中,把double类型传递给T1,int型传递给T2。
3.下列关于模板的描述中,错误的是( )。
(分数:2.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字typename声明√解析:解析:同一模板的声明和定义中,模板形参的名字不必相同。
每个模板类型形参前面必须带上关键字typename/class,每个非类型形参前面必须带上类型名字。
4.已知主函数中通过如下语句序列实现对函数模板swap的调用: int a[10],b[10]; swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是( )。
(分数:2.00)A.template<typename T> void swap(T a[],T b[],int size);B.template<typename T> void swap(int size,T a[],T b[]);√C.template<typename T1,typename T2> void swap(T1 a[],T2 b[],int size};D.template<class T1,class T2> void swap(T1 a[],T2 b[],int size);解析:解析:由题目中函数swap(a,b,10)调用语句可知,在对函数模板swap的声明语句中,应将第一、二个参数设为数组变量,第三个参数为整型变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家二级C++机试(运算符重载、模板和C++流)模拟试卷7(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.下列关于函数模板的描述中,正确的是( )。
(分数:2.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数√解析:解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。
数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。
2.有如下函数模板定义: template<typename T1,Typename T2> T1 Fun(T2 n){ return n*5.0;} 若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
(分数:2.00)A.FUN(9)B.FUN<9>C.FUN<double>[9] √D.FUN<9>(double)解析:解析:根据函数模板的定义,在选项C的调用中,把double类型传递给T1,int型传递给T2。
3.下列关于模板的描述中,错误的是( )。
(分数:2.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字typename声明√解析:解析:同一模板的声明和定义中,模板形参的名字不必相同。
每个模板类型形参前面必须带上关键字typename/class,每个非类型形参前面必须带上类型名字。
4.已知主函数中通过如下语句序列实现对函数模板swap的调用: int a[10],b[10]; swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是( )。
(分数:2.00)A.template<typename T> void swap(T a[],T b[],int size);B.template<typename T> void swap(int size,T a[],T b[]);√C.template<typename T1,typename T2> void swap(T1 a[],T2 b[],int size};D.template<class T1,class T2> void swap(T1 a[],T2 b[],int size);解析:解析:由题目中函数swap(a,b,10)调用语句可知,在对函数模板swap的声明语句中,应将第一、二个参数设为数组变量,第三个参数为整型变量。
5.在定义函数模板或类模板时,开头的保留字是( )。
(分数:2.00)A.typenameB.template √C.classD.typedef解析:解析:定义函数模板或类模板时,开头的保留字是template。
6.若有函数模板mySwap和一些变量定义如下:( )。
template<class T>void mySwap(T x,T y);double d1,d2;int i1,i2;下列对mySwap的调用中,错误的是(分数:2.00)A.mySwap(i1,i2)B.mySwap(d1,d2)C.mySwap(i1,d 1) √D.mySwap<int>(i2,d2)解析:解析:按照函数模板mySwap的定义,变量x和y应该是同一类型,而在选项C的定义中变量i1和d1属于不同的数据类型。
7.模板对类型的参数化提供了很好的支持,因此( )。
(分数:2.00)A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类√C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值解析:解析:此题考查了类模板的概念。
在定义对象的过程中,系统会自动地根据需要生成相应的类定义,这种依据类模板生成具体类的过程称为类模板的实例化。
8.关于关键字class和typename,下列表述中正确的是( )。
(分数:2.00)A.程序中的typename都可以替换为class √B.程序中的class都可以替换为typenameC.在模板形参表中只能用typename来声明参数的类型D.在模板形参表中只能用class或typename来声明参数的类型解析:解析:此题考查的是class和typename两个关键字。
关键字class除了能用来定义类以外还能用来声明模板的虚拟类型参数。
在用作声明虚拟类型参数时typename与class可以互换,但不能使用typename 来定义类;在模板形参表中除了可以用typename和Class声明虚拟类型参数外,还可以使用普通类型声明常规函数,故选项C错误。
9.下列关于类模板的模板参数的叙述中,错误的是( )。
(分数:2.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型√解析:解析:此题考查的是模板参数。
模板参数是一种参数化的数据模型,在模板类或模板函数中,只要使用数据类型的地方都能使用模板参数来代表一种未知的数据类型。
所以,模板参数可以作为成员函数的局部变量类型。
10.下列模板声明中,有语法错误的是( )。
(分数:2.00)A.template<typename T>T fun(T x){return x;}B.template<typename T>T fun(T x,int n){return x*n;}C.template<class T>T fun(T*p){return*p;}D.template<class T>T classA{T n;};√解析:解析:第四个选项是定义类模板的,但是class前面的T是多余的。
对于第二个选项,同一个类的对象相乘还是同一个类的对象,但是可能要考虑溢出的问题。
11.在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是( )。
(分数:2.00)A.( )B.[ ]C.<>√D.{ )解析:解析:声明一个类模板的格式是:template<<模板形参声明>><类声明>。
12.有如下模板声明: template<typename T 1,typename T2>ClaSS A;下列声明中,与上述声明不等价的是( )。
(分数:2.00)A.template<class T1,class T2>class A;B.template<class T1,typename T2>class A;C.template<typename T1,class T2>class A;D.template<typename T1,T2>class A;√解析:解析:在类模板中,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。
声明一个类模板的格式是:template<<模板形参表声明>><类声明>,<模板形参表声明>是由一个或多个模板形参组成。
对于本题来说,模板形参表中包括类型T1和T2两个类型参数,而在选项D)中T1说明其类型,而T2没有说明其类型,与题干中的模板说明不一致。
13.若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列 MyTemp<double>p2; MyTemp <long>p3[2];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是( )。
(分数:2.00)A.1B.2C.3 √D.0解析:解析:p2是一个double型的MyTemp,p3[2]是一个long.型MyTemp数组,其中包括两个元素。
所以共有3个MyTemp的实例。
14.下列关于模板的叙述中,错误的是( )。
(分数:2.00)A.调用模板函数时,有时可以省略模板实参B.函数模板的每个实例就是一个函数定义C.类模板的每个实例就是一个类定义D.类模板的实例是一个类对象√解析:解析:在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。
类模板实例化所生成的每一个类定义就是相应类模板的一个实例。
15.下列类模板的定义中语法格式错误的是( )。
(分数:2.00)A.template<class T>class Buffer{/*…*/};B.template<typename T>class Buffer{/*…*/};C.template<class T1,class T2>class Buffer{/*…*/};D.template<T>class Buffer{/*…*/}; √解析:解析:定义类模板的一般形式是: template<类型名参数名1,类型名参数名2,…> class类名{类声明体};模板的类型参数由关键字class或关键字typename及其后的标识符构成。
在模板参数表中关键字class和typename的意义相同。
16.下列关于C++流的说明中,正确的是( )。
(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现√B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin是一个预定义的输入流类D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象解析:解析:此题考查的是C++流的概念。
从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项B错误;cin是一个预定义的输入流对象而不是流类,故选项C错误;输入输出流中没有open成员函数,故选项D错误。
17.在语句cin>>data;中,cin是( )。
(分数:2.00)A.C++的关键字B.类名C.对象名√D.函数名解析:解析:此题考查的是预定义流对象。
C++有4个预定义的流对象:cin一标准输入;cout-一标准输出;cerr一标准出错信息输出;clog一带缓冲的标准出错信息输出。
18.如果利用C++流进行输入输出,下面的叙述中正确的是( )。
(分数:2.00)A.只能借助于流对象进行输入输出√B.只能进行格式化输入输出C.只能借助于cin和tout进行输入输出D.只能使用运算符>>和<<进行输入输出解析:解析:此题考查的知识点是C++流。
利用C++流既可以进行有格式输入输出,也可以进行无格式输入输出,所以选项B错误;C++的4个预定义的流对象为:cin一标准输入,cout一标准输出,cerr-一标准出错信息输出,clog一带缓冲的标准出错信息输出,选项C错误;C++流除了可以使用提取“>>”插入“<<”进行输入输出外,还可以通过流对象的一些成员函数进行输入输出,故选项D错误。