全国计算机二级c++模拟卷07
- 格式:doc
- 大小:34.50 KB
- 文档页数:8
2007年9全国计算机等级考试二级笔试试卷一、选择题(每小题2分,共70分)(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 AA autoB extemC registerD static(12)对于一个类定义,下列叙述中错误的是BA 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是 DA public和publicB public和protectedC protected 和publicD protected 和protected(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是DA int operator-(FunNumber)B FunNumber operator-()C FunNumber operator-(int)D int operator – (FunNumber)(15)C++中的模板包括CA 对象模板和函数模板B 对象模板和类模板C 函数模板和类模板D 变量模板和对象模板(16)如果调用C++流进行输入输出,下面的叙述中正确的是AA 只能借助于流对象进行输入输出B 只能进行格式化输入输出C 只能借助于cin和cout进行输入输出D 只能使用运算符》和《进行输入输出(17)下列符号中不属于C++关键字的是DA friendB namespaceC continueD byte(18)下列各组的量申明中,含义相同的一组是 BA unsigned long int 和longB signed short int 和shortB unsigned short 和short D short int 和int(19) 必须用一对打括号括起来的程序段是DA switch 语句中的case标号语句B if 语句的分支C 循环语句的循环体D 函数的函数体(20)语句的int*p=&k定义于指针P,于这个语句等效的语句序列是AA int*p;p=&kB int*p;p=kC int*p;*p=&kD int*p;*p=k(21)关于函数重载,下列叙述中错误的是CA 重载函数的函数名必须相同B 重载函数必须在函数个数或类型上有所不同C 重载函数的返回值类型必须相同D 重载函数的函数体可以有所不同(22)有如下头文件Int f1();Static int f2();Class MA{PublicInt f3();Static int f4();(静态函数)};在所描述的函数中,具有隐含的this指针的是 CA f1B f2C f3D f4(23)派生类的成员函数不能访问基类的CA 共有成员和保护成员B 共有成员C 私有成员D 保护成员(24)下列关于运算符重载的描述中,正确的是 AA 运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符B 一元运算符只能作为成员函数重载C 二元运算符重载为非成员函数时,参数表中有一个参数D C++中可以重载所有的运算符(25)下列关于类模板的模板参数的叙述中,错误的是 DA 模板参数可以作为数据成员的类型B 模板参数可以作为成员函数的返回类型C 模板参数可以作为成员函数的参数类型D 模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是BCout<<setw(10)<<setfill(*)<<1234则此操作的输出结构是A 1234B ******1234C **********1234D 1234******(27)有如下程序#include <iostrcam>Using namespace std;Class myclass{Public:MyClass(){++count;}~MyClass(){--count;}Static int getcount(){return count;}PrivateStatic int count;};Int MyClass::count=0;Int main(){Myclass obj;Cout<<obj,getCount();MyClass*ptr=new MyClass;Cout<<MyClass::getcount();Delete ptr;Cout<<MyClass::gercount();Return();}程序的输出结果是 AA 121B 232C 221D 122程序的输出结果是CA val=10 const:val=20B const:val=10 const:val=20C const:val=10 val=20D val=10 val=20(29)有如下程序#include <iostream>Using namespace std;Class part{Public;Part(int x=(\):val(x){cout<<val;}-part(){cout<<val;}Private;Int val;};Class whole{Public;Whole(int x,int y,int z=0):p2(x),p1(y),val(z){cout<<val;}Whole(){count<<val;}Private;Part p1,p2;Int val;};Int maint{Whole obj(1,2,3);Resturn();}程序输出的结果是DA 123321B 213312C 213(30) 有如下程序:#include <iostream>Using namespace std;Class base{Public:Base(int x=0){cout<<x;}};Class derived : public base{Public:Derivedrin(x=y){cout<<x;}Priblic:Base val;};Int main(){Derived d(!);Return();}程序的输出结果是CA 0B 1C 01D 001(31)若有如下类定义:Classs B {Void fun1(){}Protected;Double varl;Public:Void fun2(){}};Class D:public B{Protected;Void fun3(){}};已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是CA obj.fun1();B obj.var1;C obj.fun2();D obj.fun3();(32)有如下程序:#include<iostream>Using namespace sid;Class base{Public;Void output(){cout<<1;}Virtual void print() {cout<<B;}};Class derived:public base{Public:Void output(){cout<<2;}Void pri nt(){cout<<’D’;}};Int main()Base * passnew derived;Ptr->output();Ptr->print();Delete ptr;Return();}程序的输出结果是DA 1B B 1DC 2BD 2D33.下列是重载乘法运算的函数原型声明,其中错误的是AA myclass operator*(double,double);B myclass operator*(double,myclass);C myclass operator*(myclass,double);D myclass operator*( myclass , myclass);*是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的34.A(35) 有如下程序:#include <iostream>using namespace std;class B{public:virtual void show(){cout<<"b";}};class D:public B {public:void show(){cout<<"D";}};void fun1(B*ptr){ptr->show();}void fun2(B &ref){ref.show();}void fun3(B b){b.show();}void main(){B b,*p=new D;D d;fun1(p);fun2(b);fun3(d);}程序的输出结果是DA DBDB BBDC DBBD Dbb二、填空题(每空2分,共三十分)(6).在有定义语句:int a=3,b=2,c=1;则表达式a<b?a:b的值是_____(7).执行下列语句后,变量sum的值是____.Int sum =0;For (int j=I;j<=I;j++)For (int j=I;j<=I;j++)Sum++;(8).已知有函数f的定义如下:Int f(){Static int -6;s-2;return s}则在某程序中第二次执行函数用语句f();时,函数f的返回值是_____.(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。
2007年4月全国计算机等级考试二级C语言笔试试卷(含答案解析)一、选择题((1)—(10)每小题2分,(11)—(50)每题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)算法的效率只与问题的规模有关,而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关(2)在结构化程序设计中,模块划分的原则是A)各模块应包括尽量多的功能B)各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度、模块间具有低耦合度(3)下列叙述中正确的是A)软件测试的主要目的是发现程序中的错误B)软件测试的主要目的是确定程序中错误的位置C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误(4)下面选项中不属于面向对象程序设计特征的是A)继承性 B)多态性C)类比性D)封装性(5)下列对队列的叙述正确的是A)队列属于非线性表B)队列按“先进后出”原则组织数据C)队列在队尾删除数据D)队列按“先进先出”原则组织数据(6)对下列二叉树进行前序遍历的结果为A) DYBEAFCZX B) YDEBFZXCAC) ABDYECFXZ D) ABCDEFXYZ(7) 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为A) n+1 B) n-1 C) 2n D) n/2(8) 在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是A) 并B)交C)投影D)笛卡儿乘积(9) 在E-R图中,用来表示实体之间联系的图形是A) 矩形B)椭圆形C)菱形 D)平行四边形(10)下列叙述中错误的是A) 在数据库系统中,数据的物理结构必须与逻辑结构一致B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持(11)算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的A)正当性 B)可行性 C)确定性D)有穷性(12)下列叙述中错误的是A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行(13)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A)大写字母 B)连接符C)数字字符 D)下划线(14)以下叙述中错误的是A)C语言是一种结构化程序设计语言B)结构化程序有顺序、分支、循环三种基本结构组成C)使用三种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法(15)对于一个正常运行的C程序,以下叙述中正确的是A)程序的执行总是从main函数开始,在main 函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束(16)设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。
2007年9月全国计算机等级考试二级C语言(答案附在后面)(考试时间120分钟,满分100分)一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分)) 下列各题A)、B)、C)、D)四个选项中,只有一个是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。
(1)软件是指A)程序 B)程序和文档C)算法加数据结构 D)程序、数据和相关文档的集合(2)软件调试的目的是A)发现错误 B)改正错误C)改善软件的性能 D)验证软件的正确性(3)在面向对象方法中,实现信息隐蔽是依靠A)对象的继承 B)对象的多态C)对象的封装 D)对象的分类(4)下列叙述中,不符合良好程序设计风格的是A)程序的效率第一,清晰第二 B)程序的可读性好C)程序中有必要的注释 D)输入数据前要有提示信息(5)下列叙述中正确的是A)程序执行的效率与数据的存储结构密切相关B)程序执行的效率只取决于程序的控制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(6)下列叙述中正确的是A)数据的逻辑结构与存储结构必定是一一对应的B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线线结构D)以上三种说法都不对(7)冒泡排序在最坏情况下的比较次数是A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2 (8)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A)219 B)221 C)229 D)231(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是A)为了建立一个关系,首先要构造数据的逻辑关系B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项C)一个关系的属性名表称为关系模式A).exe B).C C).obj D).cp(12)可在C程序中用做用户标识符的一组标识符是A)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl(13)以下选项中,合法的一组C语言数值常量是A)028 B)12. C).177 D)0x8A. 5e-3 OXa23 4c1.5 10,000-0xf 4.5e0 Oabc 3.e5(14)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数(15)若在定义语句:int a,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);(16)以下关于long、int和short类型数据占用内存大小的叙述中正确的是A)均占4个字节 B)根据数据的大小来决定所占内存的字节数C)由用户自己定义 D)由C语言编译系统决定(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1; (18)有以下程序段int j; float y; char name[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入55566 7777abc后,y的值为A)55566.0 B)566.0 C)7777.0 D)566777.0 (19)若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环(20)有以下计算公式算上述公式的程序段是A)if(x>=0) y=sqrt(x); B)y=sqrt(x)else y=sqrt(-x); if(x<0) y=sqrt(-x);C)if(x>=0)y=sqrt(x); D)y=sqrt(x>=0?x:-x);If(x<0)y=sqrt(-x);(21)设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)(22)有以下程序#include<stdio.h>main(){int y=9;for( y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)875421(23)已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c) B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’ D)c<=(‘2’-32)&&(‘a’-32)<=c(24)有以下程序#include<stdio.h>main(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)3(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(26)已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。
全国高校计算机等级考试(二级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 、60B 、10 C、0 D、2010、语句fopen(“file.dat”,”r”); 的功能是( A )。
A、按照“读”方式打开文件B、按照“写”方式打开文件C、按照“读写”方式打开文件D、按照“追加”方式打开文件11、关闭文件的语句是(D )。
全国计算机等级考试《二级C语言程序设计》历年真题精选及详解一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,按照题目上的内容进行答题。
作答选择题时键盘被封锁,使用键盘无效,考生须使用鼠标答题。
选择题部分只能进入一次,退出后不能再次进入。
选择题部分不单独计时。
)1.下列叙述中正确的是()。
A.所有数据结构必须有根结点B.所有数据结构必须有终端结点(即叶子结点)C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构D.没有根结点或没有叶子结点的数据结构一定是非线性结构【答案】D【解析】D项正确,线性结构的特点是:①集合中必存在“第一个元素”且惟一;②集合中必存在“最后一个元素”且惟一;③除最后一个元素外,其他数据元素均有惟一的“后继”;④除第一个元素外,其他数据元素均有惟一的“前驱”。
所以没有根结点或没有叶子结点的数据结构一定是非线性结构。
AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。
答案选择D选项。
2.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B.C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D.C语言源程序经编译后生成后缀为.obj的目标程序【答案】A【解析】A项错误,注释语句不会被翻译成二进制的机器指令。
C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。
答案选择A选项。
3.C语言主要是借助以下()功能来实现程序模块化的。
A.定义函数B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型【答案】A【解析】C程序的模块化主要通过函数来实现。
计算机二级《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型变量。
全国计算机等级考试二级C++ 模拟试题及解析(1)一、选择题1. 算法的有穷性是指()。
答案:AA )算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用2. 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n —1)/2的排序方法是()。
答案:DA )快速排序B)冒泡排序C)直接插入排序D)堆排序3. 下列关于栈的叙述正确的是()。
答案:BA)栈按"先进先出"组织数据B)栈按"先进后出"组织数据C)只能在栈底插入数据D)不能删除数据4. 一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。
答案:B A)12345ABCDEB)E DCBA54321C)ABCDE12345D)54321EDCBA5. 下列叙述中正确的是()。
答案:DA)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D )循环队列中元素的个数是由队头指针和队尾指针共同决定6. 在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
答案:CBJ 阪0阪*)#> 03廟汕)*D7. 下列叙述中正确的是()。
答案:AA)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间8. 在数据管理技术发展的三个阶段中,数据共享最好的是()。
答案:CA)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同9. 下列叙述中正确的是()。
答案:DA)栈是先进先出”的线性表B)队列是先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构10. 支持子程序调用的数据结构是()。
下半年全国计算机二级C语言考前模拟试题及答案无论是在学校还是在社会中,我们最不陌生的就是试题了,试题是命题者根据一定的考核需要编写出来的。
什么样的试题才是好试题呢?以下是我收集整理的2023下半年全国计算机二级C语言考前模拟试题及答案,仅供参考,大家一起来看看吧。
下半年全国计算机二级C语言考前模拟试题及答案11). 关于C语言的变量,以下叙述中错误的是( )A.所谓变量是指在程序运行过程中其值可以被改变的量B.变量所占的存储单元地址可以随时改变C.程序中用到的所有变量都必须先定义后才能使用D.由三条下划线构成的符号名是合法的变量名正确答案:B答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。
在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。
变量命名要符合标识符的规定,其中下划线是标识符的组成字符。
程序中所有变量都必须先定义后使用。
2). 当变量c的值不为2、4、6时,值也为″真″的表达式是( )A.(c==2)||(c==4)||(c==6)B.(c>=2 选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。
9). 以下结构体类型说明和变量定义中正确的是( )A.typedefstruct { int n; char c; } REC; REC t1,t2;B.structREC ; { int n; char c; }; REC t1,t2;C.typedefstruct REC; { int n=0; char c=′A′; } t1,t2;D.struct{ int n; char c; } REC; REC t1,t2;正确答案:A答案解析:定义结构体类型的一般形式为:struct 结构体名{成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D 中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。
(1)最简单的交换排序⽅法是 A)快速排序B)选择排序 C)堆排序D)冒泡排序(2)栈通常采⽤的两种存储结构是 A)线性存储结构和链表存储结构 B)散列⽅式和索引⽅式 C)链表存储结构和数组 D)线性存储结构和⾮线性存储结构(3)线性表的顺序存储结构和线性表的链式存储结构分别是 A)顺序存取的存储结构、顺序存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构 C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构(4)完全不考虑程序的内部结构和内部特征,⽽只是根据程序功能导出测试⽤例的测试⽅法是 A)⿊箱测试法 B)⽩箱测试法 C)错误推测法 D)安装测试法(5)在结构化设计⽅法中,⽣成的结构图(SC)中,带有箭头的连线表⽰ A)模块之间的调⽤关系 B)程序的组成成分 C)控制程序的执⾏顺序 D)数据的流向(6)下列选项中,不属于模块间耦合的是 A)数据耦合 B)同构耦合 C)异构耦合 D)公⽤耦合(7)⼀个关系中属性个数为1时,称此关系为 A)对应关系 B)单⼀关系 C)⼀元关系 D)⼆元关系(8)为⽤户与数据库系统提供接⼝的语⾔是 A)⾼级语⾔B)数据描述语⾔(DDL) C)数据操纵语⾔(DML)D)汇编语⾔(9)相对于数据库系统,⽂件系统的主要缺陷有数据关联差、数据不⼀致性和 A)可重⽤性差 B)安全性差 C)⾮持久性 D)冗余性(10)需求分析阶段的任务是确定 A)软件开发⽅法 B)软件开发⼯具 C)软件开发费⽤ D)软件系统功能(11)下列关于C语⾔的说法不正确的是 A)C语⾔既具有⾼级语⾔的⼀切功能,也具有低级语⾔的⼀些功能 B)C语⾔中的每⼀条执⾏语句都必须⽤分号结束,分号不是C语⾔的⼀部分,是语句之间的分隔符号 C)注释可以出现在程序中任意合适的地⽅ D)命令⾏后⾯不能加分号,命令⾏不是C语⾔的语句(12)下列关于标识符的说法中错误的是 A)合法的标识符是由字母、数字和下划线组成 B)C语⾔的标识符中,⼤写字母和⼩写字母被认为是两个不同的字符 C)C语⾔的标识符可以分为三类,即关键字、预定义标识符和⽤户标识符 D)⽤户标识符与关键字不同时,程序在执⾏时将给出出错信息(13)下列合法的整型常量的表⽰是 A)098 B)oXde C)32767 D)0xDG(14)现在有以下定义,int a;double b;float c;char k;则下⾯的表达式a/b+c-k值的类型为: A)int B)double C)float D)char(15)假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为 A)17 B)16 C)15 D)14(16)下列关于复合语句和空语句的说法错误的是 A)复合语句是由“{”开头,由“}”结尾的 B)复合语句在语法上视为⼀条语句 C)复合语句内,可以有执⾏语句,不可以有定义语句部分 D)C程序中的所有语句都必须由⼀个分号作为结束(17)关于printf()函数的返回值叙述正确的是 A)通常是本次调⽤中输出字符的个数 B)通常是输出的第⼀个数值 C)通常返回布尔值真 D)通常返回⾮零值(18)现有格式化输⼊语句,scanf("x=%dц,sumцy=%d,lineцz=%dL",&x,&y,&z);,现在已知在输⼊数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输⼊格式的是 A)12,34,45 B)x=12,y=34,z=45 C)x=12C,sumy=34,z=45 D)x=12],sum]y=34,line]z=45 [注]:“ц”表⽰空格, 表⽰回车(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则执⾏这个语句后t的值为 A)2 B)1 C)0 D)不定值(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在 #include main() { int a=30,b=40,c=50,d; d=a>30?b:c; switch(d){case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c); default:printf("#");}} A)default:printf("#");这个语句 B)d=a>30?b:c;这个语句 C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句 D)switch(d)这个语句(21)下列语句中,错误的是(x,y,a,b假设已经定义好) A)while(x=y)5; B)do x++ while(x==10); C)while(0); D)do 2;while(a==b);(22)若i,j已经定义为整型,则以下程序段中,内循环体的执⾏次数是 for(i=6;i;i--) for(j=0;j<5;j++){……} A)40 B)35 C)30 D)25(23)下列说法中错误的是 A)只能在循环体内使⽤break语句 B)在循环体内使⽤break语句可以使流程跳出本层循环体,从⽽提前结束本层循环 C)在while和do…while循环中,continue语句并没有使整个循环终⽌ D)continue的作⽤是结束本次循环,即跳过本次循环体中余下尚未执⾏的语句,接着再⼀次进⾏循环判断(24)阅读如下程序段 #include "stdio.h" main() { int x,a,b; scanf("%d",&x); a=b=x; for(;x!=0;) { if(x if(x>a)a=x; scanf("%d",&x);} printf("a=%d,b=%d\n",a,b);} 现输⼊如下。
2020年全国计算机二级等级考试全真模拟试卷及答案(第七套)1.在最坏情况下A)快速排序的时间复杂度比冒泡排序的时间复杂度要小B)快速排序的时间复杂度比希尔排序的时间复杂度要小C)希尔排序的时间复杂度比直接插入排序的时间复杂度要小D)快速排序的时间复杂度与希尔排序的时间复杂度是一样的参考答案: C2.在深度为 7的满二叉树中,度为 2的结点个数为A)64B)63C)32D)31参考答案: B3.设栈的顺序存储空间为 S(1: m) ,初始状态为 top=m+1。
现经过一系列入栈与退栈运算后, top=20 ,则当前栈中的元素个数为A)30B)20C)m-19D)m-20参考答案: C4.算法空间复杂度的度量方法是A)算法程序的长度B)算法所处理的数据量C)执行算法所需要的工作单元D)执行算法所需要的存储空间参考答案: D5.下面不属于软件开发阶段任务的是A)测试B)可行性研究C)设计D)实现参考答案: B6.下面属于字符类的实例是A)'518'B)"5"C)'nmD)'\n'参考答案: D7.某系统结构图如下图所示该系统结构图的最大扇出数是A)nB) 1C) 3D) 4参考答案: A8.一个兴趣班可以招收多名学生,而一个学生可以参加多个兴趣班。
则实体兴趣班和实体学生之间的联系是A)1:1 联系B)1:m联系C)m:1联系D)m:n联系参考答案: D9.有三个关系表 R、S和T如下,其中三个关系对应的关键字分别为 A,B和复合关键字( A,B)。
表T的记录项( b,q,4)违反了A)实体完整性约束B)参照完整性约束C)用户定义的完整性约束D)关系完整性约束参考答案: B10.在数据库系统中,给出数据模型在计算机上物理结构表示的是A)概念数据模型B)逻辑数据模型C)物理数据模型D)关系数据模型参考答案: C11.若有定义语句: int a=12; ,则执行语句: a+= a-= a*a; 后, a的值是A)-264B)552C)144D)264参考答案: A12.若在程序中变量均已定义成 int类型,且已赋大于 1的值,则下列选项中能正确表示代数式的表达式是A) 1.0/a/b/cB)1/(a*b*c)C) 1.0/a*b*cD)1/a/b/(double)c参考答案: A13.有以下程序#include <stdio.h>main(){int x=010, y=10;printf("%d,%d\n", ++x, y--);}程序运行后的输出结果是A)9,10B)11,10C)010,9D)10,9参考答案: A14.以下选项中叙述正确的是A)C语言的标识符可分为关键字、预定义标识符和用户标识符三类B)C语言的标识符可分为语句、变量和关键字三类C)C语言的标识符可分为函数名、变量和预定义标识符三类D)C语言的标识符可分为运算符、用户标识符和关键字三类参考答案: A15.以下选项中叙述正确的是A)函数体必须由 { 开始B)C程序必须由 main语句开始C)C程序中的注释可以嵌套D)C程序中的注释必须在一行完成参考答案: A16.已知 a=5,b=6,c=7,d=8,m=2,n=2 ,执行(m=a>b)&&(n=c<d)后n的值为A) 2B)0C) 1D)-1参考答案: A17.有以下程序#include <stdio.h>main(){int x=23;do{printf("%2d\n", x--);} while( !x );}程序的执行结果是A)输出 23B)输出 321C)不输出任何内容D)陷入无限循环参考答案: A18.有以下程序#include <stdio.h>main(){char c;while( ( c=getchar() )!= '\n' ){switch( c-'2' ){case 0 :case 1 : putchar( c+4 );case 2 : putchar( c+4 ); break;case 3 : putchar( c+3 );default : putchar( c+2 ); break;}}printf( "\n" );}程序运行后从第一列开始输入以下数据2473<回车 >程序的输出结果是A)668977B)4444C)6677877D)68766参考答案: A19.有以下程序#include <stdio.h>main(){ int i=0, sum=1;do{sum +=i++ ; }while( i<6 );printf("%d \n",sum);}程序的输出结果是A)16B)18C)20D)22参考答案: A20.有以下程序段,若变量已正确定义并赋值if(a>b)printf("x=%d,", x);else printf("y=%d,", y);if(a<=b)i++;else j++;则与此程序段功能相同的选项是A)if(a>b){printf("x=%d,", x);j++;}else {printf("y=%d,", y);i++;}B)if(a>b){printf("x=%d,", x);i++;}else {printf("y=%d,", y);j++;}C)if(a<=b){printf("x=%d,", x);i++;}else {printf("y=%d,", y);j++;}D)if(a>=b){printf("x=%d,", x);i++;}else {printf("y=%d,", y);j++;}参考答案: A21.以下程序的功能是判断输入的一个整数是否能被 3或7整除,若能整除,输出 YES,否则输出 NO。
一、改错题
使用VC6打开考生文件夹下的工程kt7_1,此工程包含一个源程序文件kt7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Constructor1
Constructor1
Constructor1
Destructor
Constructor2
Destructor
x=0
x=5
Destructor
Destructor
源程序文件kt21_1.cpp清单如下:
#include<iostream.h>
classB
{intx;
B(){x=0;cout<<"Constructor1"<<endl;}
B(inti){x=i;cout<<"Constructor2"<<endl;}
~B(){cout<<"Destructor"<<endl;}
/**********found**********/
~B(inti){cout<<i<<"beDestructor"<<endl;} voidprint(){cout<<"x="<<x<<endl;}};
voidmain()
{B*ptr;
ptr=newB[2];
/**********found**********/
ptr[0]=B(0);
ptr[1]=B(5);
/**********found**********/
for(inti=0;i<2;)
ptr[i].print();
delete[]ptr;}
【参考答案】
(1)将~B(int i){cout<<i<<" be Destructor"<<endl;}删除
(2)将ptr[0]=B(0);改为:ptr[0]=B();
【试题解析】
(1)主要考查对析构函数特性的掌握,析构函数不能带参数也不能重载,一个类中只能定义一个析构函数,因为析构函数在删除对象的时候被默认调用,如果含有多个析构函数则可能引起多次删除产生的意外错误;
(2)主要考查对构造函数与函数重载的掌握,由输出结果可知其应该调用不带参数的构造函数B();
(3)主要考查对for循环语句的使用,如果在for循环中不写第三个表达式就意味着该循环一直会执行下去,因为i的值总是小于2。
二、简单应用题
编写一个函数intcharnum(charfn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。
注意:部分源程序已存在文件kt7_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。
文件kt7_2.cpp的内容如下:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
intcharnum(charfn[10]);
voidmain()
{intnum;
num=charnum("abc.txt");
(3)将for (int i=0;i<2;)改为:for(int i=0;i<2;i++) cout<<"num="<<num<<endl;}
intcharnum(charfn[10])
{
}
【参考答案】
int charnum(char fn[10])
{fstream file;
file.open(fn,ios::in);
if(!file)
{cout<<"abc.txt can't open"<<endl;
abort();}
char ch;
int i=0;
while(!file.eof())
{file.get(ch);
i++;}
file.close();
return i-1;}
【试题解析】
本题主要考查对文件相关操作的熟练程度。
首先定义文件流类的变量,然后使用该对象的open方法打开一个文件,接着使用while循环和getch方法每次读入一个字符并统计字符个数,最后使用close方法关闭文件,返回i值。
三、综合应用题
使用VC6打开考生文件夹下的工程kt7_3,此工程包含一个源程序文件kt7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。
请按要求完成下列操作,将类Circle 的定义补充完整。
(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。
将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。
请在注释“//**1**”之后添加适当的语句。
(2)为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序
Circlec;
c.SetRadius(5);
c.Print();
将输出:Thecirclehasradiusof5!
请在注释“//**2**”之后添加适当的语句。
(3)完成友元函数voidCompareR(Circle*c1,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if-else结构完成。
请在注释“//**3**”之后添加适当的语句。
输出结果如下:
Thecirclehasradusof5!
Thecirclehasradiusof10!
c1<c2
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt7_3.cpp清单如下:
#include<iostream.h>
classCircle{
public:
Circle():radius(5){}
//**1**
voidSetRadius(intr){radius=r;}
intGetRadius(){returnradius;}
friendvoidCompareR(Circle*c1,Circle*c2);
private:
intradius;};
voidCompareR(Circle*c1,Circle*c2)
{//**3**
cout<<"c1>c2"<<endl;
else
if((c1->GetRadius())==(c2->GetRadius())) cout<<"c1=c2"<<endl;
else
if((c1->GetRadius())<(c2->GetRadius()))
cout<<"c1<c2"<<endl;}
voidmain()
{Circlec1;
c1.SetRadius(5);
c1.Print();
Circlec2(10);
CompareR(&c1,&c2);}
【参考答案】
(1)Circle(int rad):radius(rad){}
(2)void Print(){cout<<"The circle has radius of "<<radius<<"!\n";}
(3)if ((c1->GetRadius())>(c2->GetRadius()))
【试题解析】
本题考查成员函数的定义与实现,友元函数,if分支语句等知识点。
友元函数的类体外的定义与一般函数一样,其中if-else的使用,else总是与其最近的那个if配对使用的,书写时最好使用缩进格式,将配对的if-else对齐,以免出错。