2024年4月21日发(作者:骆令)
国家计算机二级(C++)89
(总分460, 做题时间120分钟)
选择题(每小题2分,共70分) 下列各题四个选项中,有一个是正确的,请选
择正确答案。
1.
以下哪个基类中的成员函数表示纯虚函数?
SSS_SINGLE_SEL
A virtual void vf(int)
B void vf(int)=0
C virtual void vf(=0)
D virtual void yf(int){ }
分值: 2
答案:B
C++中纯虚函数的定义与虚函数的关键字一样,在函数末尾要加上“=0”。
2.
要想使23.78965421的输出为23.7887应用的语句是( )。
A 一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出
现二义性
B 解决二义性可以用对成员名的限定法
C 父类和子类中同时出现同名函数,也可能存在二义性
D 一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,
对该父类成员进行访问时,可能出现二义性
分值: 2
答案:C
多线程不是同时执行几个事件,在某个时间上,计算机还是在执行一个事件,
只是多线程将程序分为几个并行的子任务,由它们并发交叉执行。在宏观上
看,好像是同时执行几个事件。
3.
数据库设计的根本目标是要解决______。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A 数据共享问题
B 数据安全问题
C 大量数据存储问题
D 简化数据维护
分值: 2
答案:A
由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,
数据库与网络的结合 扩大了数据关系的应用范围。数据的共享本身又可极大地
减少数据冗余性,不仅减少了不必要的存储空间, 更为重要的是可以避免数据
的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。
4.
已知枚举类型声明语句为: enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=
10};则下列说法中错误的是
A 枚举常量YELLOW的值为1
B 枚举常量RED的值为6
C 枚举常量BLACK的值为10
D 枚举常量WHITE的值为1
分值: 2
答案:D
枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值;枚举元素本
身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。所以
枚举函数中对象的值应从。开始,依次加1,如果有的对象已赋值,则后面也
按照前面的值依次加1的原则。
5.
有如下说明
int a[10]:{ 1,2,3,4,5,6,7,8,9,10 },* p=a;
则数值为9的表达式是( )。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A *p+9
B *(p+8)
C *p+=9
D p+8
分值: 2
答案:B
在C++语言的数组元素的引用方法,如数组元素a[0],可以用表达式*(p+0),
即*p来引用,对于数组元素a[1],可以用表达式*(P+1)来引用,在这里,p+1
的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就
代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则
可以用表达式*(p+2)来引用…,对于数组元素a[9],可以用表达式*(P+9)来引
用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素
a[i]可以用*(p+i]。
6.
决定C++语言中函数的返回值类型的是( )。
A return语句中的表达式类型
B 调用该函数时系统随机产生的类型
C 调用该函数时的主调用函数类型
D 在定义该函数时所指定的数据类型
分值: 2
答案:D
C++语言中,在定义该函数时所指定的数据类型决定函数的返回值类型。
7.
下列运算符不能重载为友元函数的是【 】
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A = ( ) [ ] ->
B + - ++--
C > < >= <=
D +=- =*= /=
分值: 2
答案:A
一般运算符重载可以采用成员函数方式或友元方式。但成员运算符(.),指向成
员的指针->,赋值运算符,( )和[ ]是不能够重载为友元函数的运算符。对双
目运算符,友元函数有两个参数;对单目运算符,友元函数有一个参数。
8.
下列描述中,抽象类的特性是( )。
SSS_SINGLE_SEL
A class B {
}
B class B extends A {
}
C class B extends A {
B( ){n("="+i);}
}
D class A {
}
分值: 2
答案:A
局部变量在使用前必须进行初始化,而代码中的变量k在使用前 没有进行初始
化。
9.
以下能正确定义字符串的语句是______。
A char str[]={'064'};
B char str="x43";
C char str='';
D char str[]="0";
分值: 2
答案:D
C 语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存
放,故选项 A、C 不属 于字符串, 选项 B 定义的是一个字符变量 str,却用
来存放字符串,显然也不正确,所以选项 D 正确。
10.
不能重载的运算符是( )。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A
B
C
D
new
sizeof
.*
++
分值: 2
答案:C
C++语言规定.* 运算符是不能被重载的。
11.
使用输入输出操作符setw,可以控制
SSS_SINGLE_SEL
A 输出精度
B 输出宽度
C 对齐方式
D 填充字符
分值: 2
答案:B
setw操作符可以控制输出宽度。
12.
以下叙述中错误的是______。
A 用户所定义的标识符允许使用关键字
B 用户所定义的标识符应尽量做到“见名知意”
C 用户所定义的标识符必须以字母或下划线开头
D 用户定义的标识符中,大、小写字母代表不同标识
分值: 2
答案:A
C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符
必须是字母或下划线。 大写字母和小写字母被认为是两个不同的字符,用户在
定义标识符时应做到“见名知意”,且不允许使用 关键字作标识符。
13.
有如下程序:
#include<iostream.h>
long fib(int n)
{ if(n > 2) return(fib(n-1)+fib(n-2) );
else return(2);}
void main( )
{ cout < < fib(3);}
该程序的输出结果是( )。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A 2
B 4
C 6
D 8
分值: 2
答案:B
fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故
输出的fib(3)的值为4。
14.
在公有继承的情况下,允许派生类直接访问的基类成员包括【 】
SSS_SINGLE_SEL
A 公有成员
B 公有成员和保护成员
C 公有成员、保护成员和私有成员
D 保护成员
分值: 2
答案:B
派生类从基类公有继承时,派生类中的成员不能访问基类中的私有成员,可以
访问基类中的公有成员和保护成员。
15.
设有如下三个关系表下列操作中正确的是
SSS_SINGLE_SEL
A T=R∩S
B T=R∪S
C T=R×S
D T=R/S
分值: 2
答案:未知
16.
如果类A被说明成类B的友元,则( )。
A 类A的成员即类B的成员
B 类B的成员即类A的成员
C 类A的成员函数不得访问类B的成员
D 类B不一定是类A的友元
分值: 2
答案:D
本题考查的是友元类的定义:类A为类B的友元类,则类A的所 有成员函数都
是类B的友元函数,但反之则不一定成立。
17.
下面关于数组的初始化正确的是( )。
A char str[ ]:{'a','b','c'}
B char str[2]={'a','b','c'}
C char str[2][3]={{'a','b',},{'c','d'},{'e','f'}}
D char str( )={'a','b','c'}
分值: 2
答案:A
本题考查的是字符数组的初始化。选项B)中用3个元素初始化大小为2的数
组,越界了;选项C)中应该是2行3列的数组,题中使用3行2列初始化;选
项D)中数组合后应用方括号。
18.
SSS_SINGLE_SEL
SSS_SINGLE_SEL
如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是
( )。
SSS_SINGLE_SEL
A 一元运算符
B 二元运算符
C 选项A)和选项B)都可能
D 重载错误
分值: 2
答案:D
C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,
重载二目运算符要有两个参数。
19.
在位运算中,操作数每右移一位,其结果相当于( )。
SSS_SINGLE_SEL
A 2
B 4
C 6
D 0
分值: 2
答案:A
此题是有关KeyDown事件的题目,KeyDown是当一个键被按下时所产生的事
件,而KeyUp是松开被按的键时产生的事件,如果要判断是否按下了某个转换
键,可以用逻辑运算符And。例如:先定义了下面3个符号常量:Const
Shift=1.ConstCtrl;2,Const Alt=4;然后用下面的语句判断是否按下
Shift,Ctrl,Alt键。
如果Shift And Shift>0,则按下了Shift键;
如果Shift And Ctrl>0,则按下了Ctrl键;
如果Shift And Alt>0,则按下了Alt键;
这里的Shift时KeyDown的第二个参数;此事件过程中的If后的条件语句
如果为真,则是按下了Alt+F2,而本题目中是按下了Shift+F2,所以不执行
Then语句,即在文本框中的内容不发生变化。
20.
有以下结构体说明和变量定义,如图所示:
SSS_SINGLE_SEL
A P->next=q->next;
B p->next=p->next->next;
C p->next=r;
D p=q->next;
分值: 2
答案:D
要想将 q 所指结点从链表中删除,同时保持链表的连续,必需使 p 结点的
next 指向 r,在四个选项 中,只有选项 D 不能做到。
21.
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是
访问控制属性的是( )。
SSS_SINGLE_SEL
A 公有类型
B 私有类型
C 保护类型
D 友元类型
分值: 2
答案:D
所谓的访问控制只包含公有类型、私有类型和保护类型3种,友元可以是一个
函数,也可以是一个类。
22.
下列描述中哪个是正确的?
A 私有派生的子类无法访问父类的成员
B 类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类
A的成员对类C是不可访问的
C 私有派生类不能作为基类派生子类
D 私有派生类的所有子孙类将无法继续继承该类的成员
分值: 2
答案:B
C++语言中一个派生类能不能继承基类的所有数据成员受继承方式的限制。
23.
以下程序的功能是:给 r 输入数据后计算半径为 r 的圆面积 s,程序在编译
时出错。
main()
/* Beginning */
{int r; float s;
scanf("%d",&r);
s=*∏*r*r; printf("s=%fn",s);
}
出错的原因是______。
A 注释语句书写位置错误
B 存放圆半径的变量 r 不应该定义为整型
C 输出语句中格式描述符非法
D 计算圆面积的赋值语句中使用了非法变量
分值: 2
答案:D
本题并未对变量“∏”作任何定义,所以编译时会出现非法字符的错误信息。
24.
有三个关系R、S和T如下:
SSS_SINGLE_SEL
SSS_SINGLE_SEL
由关系R和S通过运算得到关系T,则所使用的运算为
SSS_SINGLE_SEL
A 并
B 自然连接
C 笛卡尔积
D 交
分值: 2
答案:D
在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有
相同的度n,且相对应的属性值取自同一个域,则R1∩R2为交运算,结果仍为
度等于n的关系,其中,交运算的结果既属于R1又属于R2。
25.
假定int类型变量占用两个字节,其有定义int x [l0]={ 0,2,4 };,则数
组x在内存中所占字节数是( )。
SSS_SINGLE_SEL
A 3
B 6
C 10
D 20
分值: 2
答案:D
x数组共有10个元素,在花括弧内只提供3个初值,这表示只给前面的3个成
员赋值,后7个元素的值为0,所以,一共有20个字节。
26.
有以下程序:
#include
main()
{ char p[]={''a'',''b'',''c''},q[10]={''a'',''b'',''c''};
printf("%d %dn",strlen(p),strlen(q));
}
以下叙述中正确的是______。
A 在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度
都为 3
B 由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符长度为
3
C 由于 q 数组中没有字符串结束符,长度不能确定;但 p 数组中字符长度为
3
D 由于 p 和 q 数组中没有字符串结束符,故长度都不能确定
分值: 2
答案:B
strlen 是计算以“0”结束的字符串的长度的函数,函数的值为字符串中实际
长度,不包括“0”。 题中“q[10]={'a','b','c'}”虽然给出了数组大小,
即数组实际分配的存储空间,但此字符串只占用前 3 个存 储单元,其余存储
SSS_SINGLE_SEL
2024年4月21日发(作者:骆令)
国家计算机二级(C++)89
(总分460, 做题时间120分钟)
选择题(每小题2分,共70分) 下列各题四个选项中,有一个是正确的,请选
择正确答案。
1.
以下哪个基类中的成员函数表示纯虚函数?
SSS_SINGLE_SEL
A virtual void vf(int)
B void vf(int)=0
C virtual void vf(=0)
D virtual void yf(int){ }
分值: 2
答案:B
C++中纯虚函数的定义与虚函数的关键字一样,在函数末尾要加上“=0”。
2.
要想使23.78965421的输出为23.7887应用的语句是( )。
A 一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出
现二义性
B 解决二义性可以用对成员名的限定法
C 父类和子类中同时出现同名函数,也可能存在二义性
D 一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,
对该父类成员进行访问时,可能出现二义性
分值: 2
答案:C
多线程不是同时执行几个事件,在某个时间上,计算机还是在执行一个事件,
只是多线程将程序分为几个并行的子任务,由它们并发交叉执行。在宏观上
看,好像是同时执行几个事件。
3.
数据库设计的根本目标是要解决______。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A 数据共享问题
B 数据安全问题
C 大量数据存储问题
D 简化数据维护
分值: 2
答案:A
由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,
数据库与网络的结合 扩大了数据关系的应用范围。数据的共享本身又可极大地
减少数据冗余性,不仅减少了不必要的存储空间, 更为重要的是可以避免数据
的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。
4.
已知枚举类型声明语句为: enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=
10};则下列说法中错误的是
A 枚举常量YELLOW的值为1
B 枚举常量RED的值为6
C 枚举常量BLACK的值为10
D 枚举常量WHITE的值为1
分值: 2
答案:D
枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值;枚举元素本
身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。所以
枚举函数中对象的值应从。开始,依次加1,如果有的对象已赋值,则后面也
按照前面的值依次加1的原则。
5.
有如下说明
int a[10]:{ 1,2,3,4,5,6,7,8,9,10 },* p=a;
则数值为9的表达式是( )。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A *p+9
B *(p+8)
C *p+=9
D p+8
分值: 2
答案:B
在C++语言的数组元素的引用方法,如数组元素a[0],可以用表达式*(p+0),
即*p来引用,对于数组元素a[1],可以用表达式*(P+1)来引用,在这里,p+1
的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就
代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则
可以用表达式*(p+2)来引用…,对于数组元素a[9],可以用表达式*(P+9)来引
用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素
a[i]可以用*(p+i]。
6.
决定C++语言中函数的返回值类型的是( )。
A return语句中的表达式类型
B 调用该函数时系统随机产生的类型
C 调用该函数时的主调用函数类型
D 在定义该函数时所指定的数据类型
分值: 2
答案:D
C++语言中,在定义该函数时所指定的数据类型决定函数的返回值类型。
7.
下列运算符不能重载为友元函数的是【 】
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A = ( ) [ ] ->
B + - ++--
C > < >= <=
D +=- =*= /=
分值: 2
答案:A
一般运算符重载可以采用成员函数方式或友元方式。但成员运算符(.),指向成
员的指针->,赋值运算符,( )和[ ]是不能够重载为友元函数的运算符。对双
目运算符,友元函数有两个参数;对单目运算符,友元函数有一个参数。
8.
下列描述中,抽象类的特性是( )。
SSS_SINGLE_SEL
A class B {
}
B class B extends A {
}
C class B extends A {
B( ){n("="+i);}
}
D class A {
}
分值: 2
答案:A
局部变量在使用前必须进行初始化,而代码中的变量k在使用前 没有进行初始
化。
9.
以下能正确定义字符串的语句是______。
A char str[]={'064'};
B char str="x43";
C char str='';
D char str[]="0";
分值: 2
答案:D
C 语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存
放,故选项 A、C 不属 于字符串, 选项 B 定义的是一个字符变量 str,却用
来存放字符串,显然也不正确,所以选项 D 正确。
10.
不能重载的运算符是( )。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A
B
C
D
new
sizeof
.*
++
分值: 2
答案:C
C++语言规定.* 运算符是不能被重载的。
11.
使用输入输出操作符setw,可以控制
SSS_SINGLE_SEL
A 输出精度
B 输出宽度
C 对齐方式
D 填充字符
分值: 2
答案:B
setw操作符可以控制输出宽度。
12.
以下叙述中错误的是______。
A 用户所定义的标识符允许使用关键字
B 用户所定义的标识符应尽量做到“见名知意”
C 用户所定义的标识符必须以字母或下划线开头
D 用户定义的标识符中,大、小写字母代表不同标识
分值: 2
答案:A
C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符
必须是字母或下划线。 大写字母和小写字母被认为是两个不同的字符,用户在
定义标识符时应做到“见名知意”,且不允许使用 关键字作标识符。
13.
有如下程序:
#include<iostream.h>
long fib(int n)
{ if(n > 2) return(fib(n-1)+fib(n-2) );
else return(2);}
void main( )
{ cout < < fib(3);}
该程序的输出结果是( )。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A 2
B 4
C 6
D 8
分值: 2
答案:B
fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故
输出的fib(3)的值为4。
14.
在公有继承的情况下,允许派生类直接访问的基类成员包括【 】
SSS_SINGLE_SEL
A 公有成员
B 公有成员和保护成员
C 公有成员、保护成员和私有成员
D 保护成员
分值: 2
答案:B
派生类从基类公有继承时,派生类中的成员不能访问基类中的私有成员,可以
访问基类中的公有成员和保护成员。
15.
设有如下三个关系表下列操作中正确的是
SSS_SINGLE_SEL
A T=R∩S
B T=R∪S
C T=R×S
D T=R/S
分值: 2
答案:未知
16.
如果类A被说明成类B的友元,则( )。
A 类A的成员即类B的成员
B 类B的成员即类A的成员
C 类A的成员函数不得访问类B的成员
D 类B不一定是类A的友元
分值: 2
答案:D
本题考查的是友元类的定义:类A为类B的友元类,则类A的所 有成员函数都
是类B的友元函数,但反之则不一定成立。
17.
下面关于数组的初始化正确的是( )。
A char str[ ]:{'a','b','c'}
B char str[2]={'a','b','c'}
C char str[2][3]={{'a','b',},{'c','d'},{'e','f'}}
D char str( )={'a','b','c'}
分值: 2
答案:A
本题考查的是字符数组的初始化。选项B)中用3个元素初始化大小为2的数
组,越界了;选项C)中应该是2行3列的数组,题中使用3行2列初始化;选
项D)中数组合后应用方括号。
18.
SSS_SINGLE_SEL
SSS_SINGLE_SEL
如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是
( )。
SSS_SINGLE_SEL
A 一元运算符
B 二元运算符
C 选项A)和选项B)都可能
D 重载错误
分值: 2
答案:D
C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,
重载二目运算符要有两个参数。
19.
在位运算中,操作数每右移一位,其结果相当于( )。
SSS_SINGLE_SEL
A 2
B 4
C 6
D 0
分值: 2
答案:A
此题是有关KeyDown事件的题目,KeyDown是当一个键被按下时所产生的事
件,而KeyUp是松开被按的键时产生的事件,如果要判断是否按下了某个转换
键,可以用逻辑运算符And。例如:先定义了下面3个符号常量:Const
Shift=1.ConstCtrl;2,Const Alt=4;然后用下面的语句判断是否按下
Shift,Ctrl,Alt键。
如果Shift And Shift>0,则按下了Shift键;
如果Shift And Ctrl>0,则按下了Ctrl键;
如果Shift And Alt>0,则按下了Alt键;
这里的Shift时KeyDown的第二个参数;此事件过程中的If后的条件语句
如果为真,则是按下了Alt+F2,而本题目中是按下了Shift+F2,所以不执行
Then语句,即在文本框中的内容不发生变化。
20.
有以下结构体说明和变量定义,如图所示:
SSS_SINGLE_SEL
A P->next=q->next;
B p->next=p->next->next;
C p->next=r;
D p=q->next;
分值: 2
答案:D
要想将 q 所指结点从链表中删除,同时保持链表的连续,必需使 p 结点的
next 指向 r,在四个选项 中,只有选项 D 不能做到。
21.
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是
访问控制属性的是( )。
SSS_SINGLE_SEL
A 公有类型
B 私有类型
C 保护类型
D 友元类型
分值: 2
答案:D
所谓的访问控制只包含公有类型、私有类型和保护类型3种,友元可以是一个
函数,也可以是一个类。
22.
下列描述中哪个是正确的?
A 私有派生的子类无法访问父类的成员
B 类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类
A的成员对类C是不可访问的
C 私有派生类不能作为基类派生子类
D 私有派生类的所有子孙类将无法继续继承该类的成员
分值: 2
答案:B
C++语言中一个派生类能不能继承基类的所有数据成员受继承方式的限制。
23.
以下程序的功能是:给 r 输入数据后计算半径为 r 的圆面积 s,程序在编译
时出错。
main()
/* Beginning */
{int r; float s;
scanf("%d",&r);
s=*∏*r*r; printf("s=%fn",s);
}
出错的原因是______。
A 注释语句书写位置错误
B 存放圆半径的变量 r 不应该定义为整型
C 输出语句中格式描述符非法
D 计算圆面积的赋值语句中使用了非法变量
分值: 2
答案:D
本题并未对变量“∏”作任何定义,所以编译时会出现非法字符的错误信息。
24.
有三个关系R、S和T如下:
SSS_SINGLE_SEL
SSS_SINGLE_SEL
由关系R和S通过运算得到关系T,则所使用的运算为
SSS_SINGLE_SEL
A 并
B 自然连接
C 笛卡尔积
D 交
分值: 2
答案:D
在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有
相同的度n,且相对应的属性值取自同一个域,则R1∩R2为交运算,结果仍为
度等于n的关系,其中,交运算的结果既属于R1又属于R2。
25.
假定int类型变量占用两个字节,其有定义int x [l0]={ 0,2,4 };,则数
组x在内存中所占字节数是( )。
SSS_SINGLE_SEL
A 3
B 6
C 10
D 20
分值: 2
答案:D
x数组共有10个元素,在花括弧内只提供3个初值,这表示只给前面的3个成
员赋值,后7个元素的值为0,所以,一共有20个字节。
26.
有以下程序:
#include
main()
{ char p[]={''a'',''b'',''c''},q[10]={''a'',''b'',''c''};
printf("%d %dn",strlen(p),strlen(q));
}
以下叙述中正确的是______。
A 在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度
都为 3
B 由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符长度为
3
C 由于 q 数组中没有字符串结束符,长度不能确定;但 p 数组中字符长度为
3
D 由于 p 和 q 数组中没有字符串结束符,故长度都不能确定
分值: 2
答案:B
strlen 是计算以“0”结束的字符串的长度的函数,函数的值为字符串中实际
长度,不包括“0”。 题中“q[10]={'a','b','c'}”虽然给出了数组大小,
即数组实际分配的存储空间,但此字符串只占用前 3 个存 储单元,其余存储
SSS_SINGLE_SEL