1、计算机等级考试二级(C+)32 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.下列选项中不属于软件生命周期开发阶段任务的是_。(分数:2.00)A.软件测试B.概要设计C.软件维护D.详细设计2.以下 C+语言中用于单行注释的是( )。(分数:2.00)A./B./ *C.* /D.|3.若有说明语句:double *p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是_。 (分数:2.00)A.*p= scanf(“%lf“,p);B.*p= scanf(“%f“,p);C.p= sc
2、anf(“%lf“,*p);D.p= scanf(“%lf“,p);4.以下能正确定义字符串的语句是_。 (分数:2.00)A.char str=/064;B.char str=“/x43“;C.char str=;D.char str=“/0“;5.以下 for 语句中不是死循环的是( )。(分数:2.00)A.for(int i=0;i1;+i;B.for(int i=0;+i;C.for(int i=1;i0;+i;D.for(;);6.下面程序的运行结果为( )。 #includeiostreamh void main( ) char a=,3; switch(a) case3:cou
3、t “3“; case2:cout “2“;break; default:cout “1“; (分数:2.00)A.3B.321C.31D.327.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。 (分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系8.下面程序的运行结果是( )。 #ncludeiostream.h int fun(inta,int n) int result=1; for(int i=1;in;+) result=result*ai; return resu
4、lt; void main( ) int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.12B.15C.20D.609.对于下面的程序 ifstreamfin(c:/testtxt); if(fin) cout“ok“; else cout“wrong“; 对于 if 语句中的内容可以换为( )。 (分数:2.00)A.classB.privateC.extendsD.public10.以下程序的输出结果是( )。 #includeiostreamh void main( ) inti,j,x=0; for(i=0;i 2;i+) x+; for(j=0;j
5、3;j+) if (j% 2)continue; x+; x+; cout “x=“ x; (分数:2.00)A.若干个二维表B.一个 DBF 文件C.一个 DBC 文件D.若干个 DBC 文件11.C+中运算符优先级由高到低排列正确的是( )。(分数:2.00)A.B.fun( );19.C+语言函数中不能由系统自动生成的是( )。(分数:2.00)A.析构函数B.构造函数C.内联函数D.拷贝构造函数20.有如下程序 #include using namespace std; int i=1; class Fun public; static int i; int value()return
6、 i-1 int value ()constreturn i+1; ; int Fun;i=2; int main() int i=3; Fun Fun1 const Fun fun2; return 0; 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是_。(分数:2.00)A.cout0;-j) if(t=aj-1)break; aj:aj-1; aj=t; protected: int*a,n;指针 a 用于存放数组首地址,n 用于存放数组元素个数 ; (分数:2.00)填空项 1:_44.已知字符 A 的 ASCII 代码值为 65,以下程序运行时若从键盘输入 B33,则 输
7、出结果是 1。 #include main2 char a,b; a=getchar3;scanf(“%d“, a=a-A+0;b=b*2; printf(“%c %c/n“,a,b); (分数:2.00)填空项 1:_45.静态成员函数可以直接访问类的 1 成员,不能直接访问类的 2 成员。(分数:2.00)填空项 1:_46.重载的运算符保持其原有的 1、优先级和结合性不变。(分数:2.00)填空项 1:_47.将 x+y 中的+运算符用友元函数重载应写为 1。(分数:2.00)填空项 1:_48.C+语言的基本控制结构为顺序结构、选择结构和 1。(分数:2.00)填空项 1:_49.下列
8、程序的执行结果为 1。 #includeiostream.h void main2 cout.fill( * ); cout.width(10); cout“hello“endl; (分数:2.00)填空项 1:_50.以下程序运行后的输出结果是 1 。 ; main2 struct NODE s3=1,/0,2,/0,3,/0,*p,*q,*r; int sum=0; s0.next=s+1; s1.next=s+2; s2.next=s; p=s; q=p-next; r=q-next; sum+=q-next-num; sum+=r-next-next-num; printf(“%d/n
9、“,sum); (分数:2.00)填空项 1:_计算机等级考试二级(C+)32 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.下列选项中不属于软件生命周期开发阶段任务的是_。(分数:2.00)A.软件测试B.概要设计C.软件维护D.详细设计解析:2.以下 C+语言中用于单行注释的是( )。(分数:2.00)A./ B./ *C.* /D.|解析:本题考查 C+浯言中的注释问题。C+语言中的注释与 C 语言不同,C 语言的注释符号只有/* */,而 C+在此基础上又加上了/,此注释用于单行注释。3.若有
10、说明语句:double *p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是_。 (分数:2.00)A.*p= scanf(“%lf“,p);B.*p= scanf(“%f“,p);C.p= scanf(“%lf“,*p);D.p= scanf(“%lf“,p); 解析:p=”,它等效于:int *p; p=, scanf()语句的格式是“scanf(格式控制,地址表列)”, 在选项 D 中,“p”本身就代表着一个地址,故选项 D 正确。4.以下能正确定义字符串的语句是_。 (分数:2.00)A.char str=/064;B.char str=“/x43“;C.char str
11、=;D.char str=“/0“; 解析:C 语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存放,故选项 A、C 不属 于字符串, 选项 B 定义的是一个字符变量 str,却用来存放字符串,显然也不正确,所以选项 D 正确。5.以下 for 语句中不是死循环的是( )。(分数:2.00)A.for(int i=0;i1;+i; B.for(int i=0;+i;C.for(int i=1;i0;+i;D.for(;);解析:本题考查循环语句 for 的使用。for 循环的一般格式为 for(初始化部分;终止条件判断部分;迭代部分) 循环体;。 说明如下:for 循环开始时,首
12、先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。注意:在for 语句中,如果省略了终止条件判断部分,并且在语句中没有 break,或者是终止条件判断部分始终没有终止,都将出现死循环。6.下面程序的运行结果为( )。 #includeiostreamh void main( ) char a=,3; switch(a) case3:cout “3“; case2:cout “2“;break; default:cout “1“; (分数:2.00)A.3B.321C.31D.32 解析:本题主要考查的是 switch
13、 语句的使用,在第一个 case 处,因为满足 条件所以输出字符 3,但这个分支没有 break 语句终止,所以会继续执行下面的分支语 句,即输出字符 2,这时出现 break 语句,结束整个语句,即输出 32。7.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。 (分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMS D.没有任何关系解析:数据库系统由如下几部分组成:数据库、数据库管理系统、数据库管理员、系统平台(硬件平台和 软件平台)。8.下面程序的运行结果是( )。 #ncludeiost
14、ream.h int fun(inta,int n) int result=1; for(int i=1;in;+) result=result*ai; return result; void main( ) int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.12B.15C.20 D.60解析:for 循环执行 2 次,所以第一次 for 循环为 result=1 * a1=4,第 二次 for 循环为 result=4 * a2=20。9.对于下面的程序 ifstreamfin(c:/testtxt); if(fin) cout“ok“; else co
15、ut“wrong“; 对于 if 语句中的内容可以换为( )。 (分数:2.00)A.classB.private C.extendsD.public解析:Static 关键字用于指定局部变量在内存中的存储方式。变量的存储方式有两种:静态的和自动的。静态存储方式是指当过 程运行完毕后,变量所占的内存单元不释放,而变量的值被保存下来,该变量为静态变量。Static 型变量所占存储控件只初始化一次,且变量 的值在整个程序运行期间都存在;Static关键字对过程之外定义的变量没有影响;Static 关键字是定义该过程中定义的局部变量为静态变量。10.以下程序的输出结果是( )。 #includeio
16、streamh void main( ) inti,j,x=0; for(i=0;i 2;i+) x+; for(j=0;j 3;j+) if (j% 2)continue; x+; x+; cout “x=“ x; (分数:2.00)A.若干个二维表 B.一个 DBF 文件C.一个 DBC 文件D.若干个 DBC 文件解析:在 Access 数据库中表之间的关系也一般为一对多型。11.C+中运算符优先级由高到低排列正确的是( )。(分数:2.00)A. B.fun( );解析:如果在于类中要访问父类的函数应用“:”运算符。19.C+语言函数中不能由系统自动生成的是( )。(分数:2.00)A
17、.析构函数B.构造函数C.内联函数 D.拷贝构造函数解析:本题考查一个类中由系统自动生成的函数。一个类中由系统自动生成的函数有构造函数,析构函数,拷贝构造函数。注意:内联函数只能由用户自己定义。20.有如下程序 #include using namespace std; int i=1; class Fun public; static int i; int value()return i-1 int value ()constreturn i+1; ; int Fun;i=2; int main() int i=3; Fun Fun1 const Fun fun2; return 0; 若程
18、序的输出结果是: 123 则程序中下划线处遗漏的语句是_。(分数:2.00)A.cout0;-j) if(t=aj-1)break; aj:aj-1; aj=t; protected: int*a,n;指针 a 用于存放数组首地址,n 用于存放数组元素个数 ; (分数:2.00)填空项 1:_ (正确答案:j=n-l)解析:给变量 j 赋初值。44.已知字符 A 的 ASCII 代码值为 65,以下程序运行时若从键盘输入 B33,则 输出结果是 1。 #include main2 char a,b; a=getchar3;scanf(“%d“, a=a-A+0;b=b*2; printf(“%
19、c %c/n“,a,b); (分数:2.00)填空项 1:_ (正确答案:1 B)解析:C 语言使字符型数据和整型数据之间可以通用。题中执行“a=getchar-|_|-;”后,a 的值 B,在内存中的表现形式为 ASCII 码 66 ;执行“scanf(“%d“, ”后,b 在内存中的表现形式为 33 ,然后经过“a=a-A+0;b=b*2;”运算,得出 a 的值为字符1,b 的值为 ASCII 码 66,最后以字符型输出为 1 B。45.静态成员函数可以直接访问类的 1 成员,不能直接访问类的 2 成员。(分数:2.00)填空项 1:_ (正确答案:静态)解析:静态成员函数可以直接访问该类
20、中的静态数据成员,而不能访问该类中的非静态数据成员。46.重载的运算符保持其原有的 1、优先级和结合性不变。(分数:2.00)填空项 1:_ (正确答案:操作符个数)解析:本题考查的是运算符重载的概念,用户重新定义的运算符不改变原运算符的优 先性和结合性,也不改变运算符的语法结构,也就是说重载运算符不会产生新的运算符。 47.将 x+y 中的+运算符用友元函数重载应写为 1。(分数:2.00)填空项 1:_ (正确答案:operator+(x,y))解析:C+中用成员函数重载 x+y 为 xoperator+(y);,用友元函数重载 x+y 为 operator+(x,y)。 48.C+语言的
21、基本控制结构为顺序结构、选择结构和 1。(分数:2.00)填空项 1:_ (正确答案:循环结构)解析:C+语言 3 种基本结构就是顺序结构,选择结构,循环结构。 49.下列程序的执行结果为 1。 #includeiostream.h void main2 cout.fill( * ); cout.width(10); cout“hello“endl; (分数:2.00)填空项 1:_ (正确答案:* * * * * hello)解析:本题考查的是 C+语言的流输出操作,cout 中包括的函数 fill-|_|-和 width-|_|-分 别实现填充和设定显示长度的功能。50.以下程序运行后的输
22、出结果是 1 。 ; main2 struct NODE s3=1,/0,2,/0,3,/0,*p,*q,*r; int sum=0; s0.next=s+1; s1.next=s+2; s2.next=s; p=s; q=p-next; r=q-next; sum+=q-next-num; sum+=r-next-next-num; printf(“%d/n“,sum); (分数:2.00)填空项 1:_ (正确答案:5)解析:程序通过语句“s0.next=s+1; s1.next=s+2; s2.next=s;”将结构体变量 s 中各结点链接成了一个 循环链表,即最后一个结点的指针域指向了头结点(s2.next=s;),整个链表形成一个环,并通过语句“p=s; q=p-next; r=q-next;”将结构体指针变量 p、q、r 指向了各结点,故本题输出的 sum=3+2=5。