【计算机类职业资格】二级C++-98及答案解析.doc

上传人:rimleave225 文档编号:1324175 上传时间:2019-10-17 格式:DOC 页数:21 大小:80KB
下载 相关 举报
【计算机类职业资格】二级C++-98及答案解析.doc_第1页
第1页 / 共21页
【计算机类职业资格】二级C++-98及答案解析.doc_第2页
第2页 / 共21页
【计算机类职业资格】二级C++-98及答案解析.doc_第3页
第3页 / 共21页
【计算机类职业资格】二级C++-98及答案解析.doc_第4页
第4页 / 共21页
【计算机类职业资格】二级C++-98及答案解析.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、二级 C+-98 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.有如下程序: #includeiostream using namespace std; int main() int i,s=0; for(i=1;s20;i+=2)s+=i*i; coutiendl; return 0; 运行这个程序的输出结果是_。(分数:2.00)A.3B.5C.7D.92.要定义一个具有 5 个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是_。(分数:2.00)A.int vect=30

2、,50,-88;B.int vect=30,50,-88,0,0;C.int vect5=(30,50,-88;D.int vect5=30,50,-88,0,0;3.已知有数组定义 char a34; 下列表达式中错误的是_。(分数:2.00)A.a2=“WIN“B.strcpy(a2,“WIN“)C.a23=“w“D.a01=a014.已知数组 arr 的定义如下: int arr5=1,2,3,4,5; 下列语句中输出结果不是 2 的是_。(分数:2.00)A.cout*arr+1endl;B.cout*(arr+1)endl;C.coutarr1endl;D.cout*arrendl;

3、5.有如下类定义: ciass A char*a; public: A():a(0) A(char*aa)/把 aa 所指字符串拷贝到 a 所指向的存储空间 a=_; strcpy(a,aa); A()(deletea; ; 横线处应填写的表达式是_。(分数:2.00)A.new charstrlen(aa)+1B.charstrlen(aa)+1C.charstrlen(aa)D.new charsizeof(aa)-16.要定义整型数组 x,使之包括初值为 0 的三个元素,下列语句中错误的是_。(分数:2.00)A.int x3=0,0,0);B.int x=0;C.static int

4、x3=0;D.int x=0,0,0;7.有如下语句序列: char str10;cinstr; 当从键盘输入”I love this game”时,str 中的字符串是_。(分数:2.00)A.“I love this game“B.“I love thi“C.“I love“D.“I“8.字符串“a+b=12/n/t”的长度为_。(分数:2.00)A.12B.10C.8D.69.下列有一维数组 a 的定义中,语法正确的是_。(分数:2.00)A.int a(10);B.int n=7,an;C.int n;cinn;int an;D.const int size=10;int asize;

5、10.有如下程序: #includeiostream using namespace std; int main() int*p; *p=9; cout“The value at p:“*p; return 0; 编译运行程序将出现的情况是_。(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错11.下列语句中,错误的是_。(分数:2.00)A.const int buffer=256;B.const double*point;C.int const buffe

6、r=256;D.double*const point;12.有如下说明 int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9 的表达式是_。(分数:2.00)A.*p+9B.*(p+8)C.*p+=9D.p+813.语句 int*p=p=B.int*p;p=k;C.int*p:*p=D.int*p;*p=k14.有如下定义: int a5=1,3,5,7,9,*p=a; 下列表达式中不能得到数值 5 的是_。(分数:2.00)A.a2B.a3C.*(p+2)D.*p+415.下列语句中,正确的是_。(分数:2.00)A.char*myString=“Hello-W

7、orld!“;B.char myString=“Hello-World!“;C.char myString11=“Hello-World!“;D.char myString12=“Hello-World!“;16.下列定义语句中,错误的是_。(分数:2.00)A.int px*;B.char*acp10;C.char(*pac)10;D.int(*p)();17.有如下语句序列: int x=100, coutx“-“rendl: 己知其中变量 x 的地址为 0012FF7C,则执行该语句序列的输出结果为_。(分数:2.00)A.100-100B.100-0012FF7CC.0012FF7C-

8、100D.0012FF7C-0012FFTC18.若字符指针 p 所指向的字符串为“abcdefg“,在执行语句_。 char*ap=new charstrlen(p)+1; 之后,ap 指向的字符数组的元素个数为(分数:2.00)A.9B.8C.7D.619.有如下程序段: int i=0,j=1; int / r=j; / int *P= / *p= / 其中会产生编译错误的语句是_。(分数:2.00)A.B.C.D.20.下列关于函数的描述中,错误的是_。(分数:2.00)A.函数可以没有返回值B.函数可以没有参数C.函数可以是一个类的成员D.函数不能被定义为模板21.下列关于 C+函数

9、的说明中,正确的是_。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式22.若有下面的函数调用: fun(a+b,3,max(n-1,b) 则 fun 的实参个数是_。(分数:2.00)A.3B.4C.5D.623.有如下程序: #includeiostream using namespace std; void function2(int n); void function1(int n) if(n=0)retu

10、rn; function2(n-2); void function2(int n) if(n=0)return; function1(n-1); int main() function1(5); return 0; 下列关于程序运行情况的描述中,正确的是_。(分数:2.00)A.function1 运行 1 次,function2 运行 2 次B.function1 运行 2 次,function2 运行 1 次C.function1 运行 2 次,function2 运行 3 次D.function1 运行 2 次,function2 运行 2 次24.假设函数 fun 已经定义,其原型为“

11、void fun(int a,int b=7,char*p=“*“);”下列函数调用中错误的是_。(分数:2.00)A.fun(5)B.fun(5,8)C.fun(6,“#“)D.fun(0,0,“=“)25.已知函数 FA 调用 FB,若要把这两个函数定义在同一个文件中,则_。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前26.下列函数原型声明中,错误的是_。(分数:2.00)A.int functio

12、n(int m,int n);B.int function(int,int);C.int function(int m=3,int n);D.int function(int27.在对函数进行原型声明时,下列语法成分中,不需要的是_。(分数:2.00)A.函数返回类型B.函数参数列表C.函数名D.函数体28.关于函数中的返回类型,下列表述中错误的是_。(分数:2.00)A.返回类型中有可能包含关键字 intB.返回类型中有可能包含自定义标识符C.返回类型中有可能包含字符*D.返回类型中可能包含29.若一个函数的原型为“int*Xfun1(int x,int ”,则该函数的返回值类型为_。(分数

13、:2.00)A.int *B.intC.int classA public: static int a; void init()a=1; A(int a=2)int();a+; ; int A:a=0; A obj; int main() coutobj.a; return 0; j 运行时输出的结果是_。(分数:2.00)A.0B.1C.2D.331.有如下程序: #includeiostream void fun(intx=y;y=t; int main() int a2=23,42; fun(a1,a0); std:couta0“,“a1std:endl; return 0; 执行后的输

14、出结果是_。(分数:2.00)A.42,42B.23,23C.23,42D.42,2332.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数33.有如下函数定义: void func(int a,in

15、tb+; 若执行代码段: int x=0,y=1; func(x,y); 则变量 x 和 y 的值分别是_。(分数:2.00)A.0 和 1B.1 和 1C.0 和 2D.1 和 234.已知函数 f 的原型是 void f(int *a,long ,变量 v1、v2 的定义是: int v1;loong v2; 下列调用语句中正确的是_。(分数:2.00)A.f(v1,B.f(v1,V2);C.f(D.f(35.在下列原型所示的 C+函数中,按“传值”方式传递参数的是_。(分数:2.00)A.void f1(int x);B.void f2(int*x);C.void f3(const in

16、t*x);D.void f4(int36.下列关于函数参数的叙述中,正确的是_。(分数:2.00)A.在函数原型中不必声明形参类型B.函数的实参和形参共享内存空间C.函数形参的生存期与整个程序的运行期相同D.函数的形参在函数被调用时获得初始值37.有如下程序: #includeiostream using namespace std; void f1(intx=y;y=z; void f2(int x,int y)int z=x;x=y;y=z; int main() int x=10,y=26; f1(x,y); f2(x,y); coutyendl; return 0; 运行时的输出结果是

17、_。(分数:2.00)A.10B.16C.26D.3638.已知函数 f 的原型是“void f(int *x,int ”,变量 v1、v2 的定义是“int v1,v2;”,下列调用语句中,正确的是_。(分数:2.00)A.f(v1,v2);B.f(v1,C.f(D.f(39.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10,y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结果是_。(分数:3.00

18、)A.22B.23C.24D.2540.有如下程序: #includeiostream using namespace std; class AA int n; public: AA(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() AAa(5); const AA b(6); couta.get()b.get(); return 0; 执行后的输出结果是_。(分数:3.00)A.55B.57C.75D.7741.下面是重载为非成员函数的运算符函数原型,其中错误的是_。(分数:3.00)A.Fractio

19、n operator+(Fraction,Fraction);B.Fraction operator-(Fraction);C.FractionD.Fraction42.关于函数重载,下列叙述中错误的是_。(分数:3.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的返回值类型必须相同D.重载函数的函数体可以有所不同43.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass(int x):val(x) void Print()constcout“const:v

20、al=“val“/t“; void Print()cout“val=“val“t“; private: int val; ; int main() const MyClass obj1(10); MyClass obj2(20); obj1.Print(); obj2.Print(); return 0; 程序的输出结果是_。(分数:3.00)A.val=10 const:val=20B.const:val=10 const:val=20C.const:val=10 val=20D.val=10 val=2044.下列有关函数重载的叙述中,错误的是_。(分数:3.00)A.函数重载就是用相同的

21、函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同D.重载函数的参数可以带有默认值45.若已经声明了函数原型“void fun(int a,double b=0.0);”,则下列重载函数声明中正确的是_。(分数:3.00)A.void fun(int a=90,double b=0.0);B.int fun(int a,double );C.void fun(double a,int );D.bool fun(int a,double b=0.0);46.对 C+编译器区分重载函数无任何意义的信息是_。(分数:3.00)A.参数类型B.参数个数C.返回值类型D.常

22、成员函数关键字 const二级 C+-98 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.有如下程序: #includeiostream using namespace std; int main() int i,s=0; for(i=1;s20;i+=2)s+=i*i; coutiendl; return 0; 运行这个程序的输出结果是_。(分数:2.00)A.3B.5C.7 D.9解析:解析 在这段程序中 for 循环共执行 3 次,每次循环变量 i 的值增 2,在执行第三次循环语句时,变量 s 的值等于 25,大于 20 而退出循环

23、,此时再执行循环变量 i 加 2 运算,所以最后变量 i 的值等于7。2.要定义一个具有 5 个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是_。(分数:2.00)A.int vect=30,50,-88; B.int vect=30,50,-88,0,0;C.int vect5=(30,50,-88;D.int vect5=30,50,-88,0,0;解析:解析 此题考查的是一维数组定义时的初始化。当数组声明时没有给出数组的大小但是有初始化列表时,数组的大小就由列表中元素的个数来确定。所以选项 A 中数组只定义 3 个元素,不符合

24、题目。3.已知有数组定义 char a34; 下列表达式中错误的是_。(分数:2.00)A.a2=“WIN“ B.strcpy(a2,“WIN“)C.a23=“w“D.a01=a01解析:解析 本题主要是对字符数组的考查。选项 A 中 a2为一个地址,所以不能用等号进行赋值操作。4.已知数组 arr 的定义如下: int arr5=1,2,3,4,5; 下列语句中输出结果不是 2 的是_。(分数:2.00)A.cout*arr+1endl;B.cout*(arr+1)endl;C.coutarr1endl;D.cout*arrendl; 解析:解析 因为一维数组 arr5的首地址是第一数组元素

25、的地址,所以选项 D 中,输出*arr 的值就是数组 arr5中第一数组元素 1。其他选项都输出数组 arr5的第二元素 2。5.有如下类定义: ciass A char*a; public: A():a(0) A(char*aa)/把 aa 所指字符串拷贝到 a 所指向的存储空间 a=_; strcpy(a,aa); A()(deletea; ; 横线处应填写的表达式是_。(分数:2.00)A.new charstrlen(aa)+1 B.charstrlen(aa)+1C.charstrlen(aa)D.new charsizeof(aa)-1解析:解析 函数 strlen(aa)返回字符

26、串 aa 中字符的个数,不包括末尾的空字符。所以在内存空间创建字符数组 a 时,需要字符数组的长度是 strlen(aa)+1。6.要定义整型数组 x,使之包括初值为 0 的三个元素,下列语句中错误的是_。(分数:2.00)A.int x3=0,0,0);B.int x=0; C.static int x3=0;D.int x=0,0,0;解析:解析 当数组声明时没有给出数组的大小,但是有初始化列表时,数组的大小就由列表中元素的个数来确定。对于选项 B 定义数组 x 时,没有给出数组的大小,初始化时只给出了一个元素 0。所以数组x 只包含一个元素为 0 的元素。7.有如下语句序列: char

27、str10;cinstr; 当从键盘输入”I love this game”时,str 中的字符串是_。(分数:2.00)A.“I love this game“B.“I love thi“C.“I love“D.“I“ 解析:解析 由于字符/0 作为字符串的结束标志,所以当从键盘上输入“I love this game”时,只把字母 I 输入字符串 str。8.字符串“a+b=12/n/t”的长度为_。(分数:2.00)A.12B.10C.8 D.6解析:解析 题目给出的字符串含有 7 个字符,再加字符串的结束字符,所以共 8 个字符。9.下列有一维数组 a 的定义中,语法正确的是_。(分数

28、:2.00)A.int a(10);B.int n=7,an;C.int n;cinn;int an;D.const int size=10;int asize; 解析:解析 定义一维数组的一般格式为: 类型标识符数组名常量表达式; 常量表达式的值表示元素的个数,即数组长度。常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。也就是说,C+不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。10.有如下程序: #includeiostream using namespace std; int main() int*p; *p=9; cout“The value a

29、t p:“*p; return 0; 编译运行程序将出现的情况是_。(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错 解析:解析 此题考查的是指针的使用。本题中,在给*p 赋值前,指针 p 并没有指向一个具体的对象。此时可以通过编译,但运行时由于 p 中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。11.下列语句中,错误的是_。(分数:2.00)A.const int buffer=256;B.const double*point;

30、C.int const buffer=256;D.double*const point; 解析:解析 此题考查的是常指针和指针常量的概念。常指针是指向一个常量的指针变量,指针自身的内容可以改变但指针指向的内容不可以改变;指针常量是一个常量,即不能修改指针自身的内容,但可以通过指针修改其所指向的内容。D 选项中指针常量 point 没有初始化,编译无法通过。12.有如下说明 int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9 的表达式是_。(分数:2.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:解析 此题考查的是指针的运用。选项 A 中,*p

31、 返回的是数组元素 a0的值,所以最后结果是1+9=10;选项 B 是指针 p 后移 8 个单位位置处的值,即 a8其值为 9;选项 C 中表达式的值和选项 A 相同;选项 D 的值是一个地址值,该值无法确定。13.语句 int*p=p= B.int*p;p=k;C.int*p:*p=D.int*p;*p=k解析:解析 此题考查的是指针的赋值。题目中的语句 int *p=定义了一个 int 类型的指针 p,并将变量 k 的地址p=。14.有如下定义: int a5=1,3,5,7,9,*p=a; 下列表达式中不能得到数值 5 的是_。(分数:2.00)A.a2B.a3 C.*(p+2)D.*p

32、+4解析:解析 此题考查的是指针引用数组元素。B 选项中,a3是数组的第四个元素,即 7;其它选项的引用均可得到 5。15.下列语句中,正确的是_。(分数:2.00)A.char*myString=“Hello-World!“; B.char myString=“Hello-World!“;C.char myString11=“Hello-World!“;D.char myString12=“Hello-World!“;解析:解析 对于 B 来说,会造成溢出,对于 C 和 D 来说同样如此,因为“Hello-world!”一个是 12 个字符组成,加上空字符一共 13 个,所以都会造成溢出,只

33、有 A 是将字符串的地址赋给字符型指针。16.下列定义语句中,错误的是_。(分数:2.00)A.int px*; B.char*acp10;C.char(*pac)10;D.int(*p)();解析:解析 指针变量声明的一般形式为:数据类型*变量名,在选项 A 中,*放在变量名的后面,所以是错误的。17.有如下语句序列: int x=100, coutx“-“rendl: 己知其中变量 x 的地址为 0012FF7C,则执行该语句序列的输出结果为_。(分数:2.00)A.100-100 B.100-0012FF7CC.0012FF7C-100D.0012FF7C-0012FFTC解析:解析 在

34、语句 int x=100,中声明 r 初始化对 x 的引用,所以 x 和 之后,ap 指向的字符数组的元素个数为(分数:2.00)A.9B.8 C.7D.6解析:解析 字符指针 p 所指向的字符串为“abcdefg“,所以函数 strlen(p)的值等于 7,再加 1,等于8。19.有如下程序段: int i=0,j=1; int / r=j; / int *P= / *p= / 其中会产生编译错误的语句是_。(分数:2.00)A. B.C.D.解析:解析 此题考查的是指针和引用。本题中,语句是一条合法的引用声明语句,使得变量 i 被 r引用;语句通过引用 r 将变量 j 的值赋给变量 i;语

35、句声明了指针变量 p,并初始化指向变量 i;语句中*p 代表了变量 i 的值,要将 void function2(int n); void function1(int n) if(n=0)return; function2(n-2); void function2(int n) if(n=0)return; function1(n-1); int main() function1(5); return 0; 下列关于程序运行情况的描述中,正确的是_。(分数:2.00)A.function1 运行 1 次,function2 运行 2 次B.function1 运行 2 次,function2

36、运行 1 次C.function1 运行 2 次,function2 运行 3 次D.function1 运行 2 次,function2 运行 2 次 解析:解析 在主函数中执行 function1(5)时,会调用 function2(3),function2(3)又会调用function1(2),function1(2)又会调用 function2(0),到此相互调用结束。所以 function1()和function2()各执行了 2 次。24.假设函数 fun 已经定义,其原型为“void fun(int a,int b=7,char*p=“*“);”下列函数调用中错误的是_。(分数:

37、2.00)A.fun(5)B.fun(5,8)C.fun(6,“#“) D.fun(0,0,“=“)解析:解析 根据函数 fun()的定义,其前两个形参为整型变量,第三个形参为字符型变量。所以在调用时,必须符合形参的数据类型,而选项 C 的第二个实参的数据类型为字符串,不符合第二个形参的数据类型。25.已知函数 FA 调用 FB,若要把这两个函数定义在同一个文件中,则_。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA

38、 的定义之前 解析:解析 在 C+中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本题中,当函数 FA 调用 FB 时,函数 FB 可以定义在 FA 的后面,但是 FB 的原型必须出现在 FA 的定义之前,因而选项 D 为正确答案。26.下列函数原型声明中,错误的是_。(分数:2.00)A.int function(int m,int n);B.int function(int,int);C.int function(int m=3,int n); D.int function(int解析:解析 在 C+中,函数在使用之

39、前要预先声明。这种声明在标准 C+中称为函数原型,函数原型给出了函数名、返回类型以及在调用函数时必须提供的参数个数和类型。其语法为:返回类型函数名(形参列表);使用函数原型说明有两种形式:直接使用函数定义的头部,并在后面加上一个分号;在函数原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及次序。在选项C 中,给出了形参变量 m 的初值。27.在对函数进行原型声明时,下列语法成分中,不需要的是_。(分数:2.00)A.函数返回类型B.函数参数列表C.函数名D.函数体 解析:解析 在 C+中函数在使用之前要预先声明,这种声明在标准 C+中称为函数原型。函数给出了函数名、返回类

40、型以及在调用函数时必须指明参数个数和类型。28.关于函数中的返回类型,下列表述中错误的是_。(分数:2.00)A.返回类型中有可能包含关键字 intB.返回类型中有可能包含自定义标识符C.返回类型中有可能包含字符*D.返回类型中可能包含 解析:解析 返回类型又称为函数类型,表示一个函数所计算(或运行)的结果值的类型。它可以是C+中已定义的数据类型,也可能是用户自定义的数据类型。但是不能包含,因为符号不是一个数据类型。29.若一个函数的原型为“int*Xfun1(int x,int ”,则该函数的返回值类型为_。(分数:2.00)A.int * B.intC.int ”的定义可知,其返回值为指向

41、 int 指针的函数。30.有如下程序: #includeiostream using namespace std; classA public: static int a; void init()a=1; A(int a=2)int();a+; ; int A:a=0; A obj; int main() coutobj.a; return 0; j 运行时输出的结果是_。(分数:2.00)A.0B.1 C.2D.3解析:解析 此题实际考查的是变量作用域的屏蔽效应。在 C+中,当标识符的作用域发生重叠时,在一个函数中声明的标识符可以屏蔽函数外声明的标识符或全局标识符。声明类 A 的全局对象时

42、,构造函数首先调用 int 函数,但由于静态成员变量 a 被构造函数内部的形参 a 所屏蔽所以 a+改变的是形参 a 的值,对静态成员变量 a 没有影响。31.有如下程序: #includeiostream void fun(intx=y;y=t; int main() int a2=23,42; fun(a1,a0); std:couta0“,“a1std:endl; return 0; 执行后的输出结果是_。(分数:2.00)A.42,42B.23,23 C.23,42D.42,23解析:解析 此题考查是是函数的调用以及参数值的传递。函数 fun 中的第一个参数是引用传值方式,是双向的;第

43、二个参数是按值传递,是单向的。32.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 此题考查的是函数参数的传递。C+语言中,函数在传递参数时,总是将实参的值传递给被调用函数的形参,即传值

44、调用。因此,在函数中对形参所作的任何操作都不会改变实参的值。33.有如下函数定义: void func(int a,intb+; 若执行代码段: int x=0,y=1; func(x,y); 则变量 x 和 y 的值分别是_。(分数:2.00)A.0 和 1B.1 和 1C.0 和 2 D.1 和 2解析:解析 此题考查的是函数参数的传递方式。此题中形参 a 是普通参数,即传值调用,函数中对 a增 1 不会影响到实参 x 的值;形参 b 是传址调用,函数中对 b 增 1 同时会改变实参 y 的值。故最终结果是0 和 2。34.已知函数 f 的原型是 void f(int *a,long ,变

45、量 v1、v2 的定义是: int v1;loong v2; 下列调用语句中正确的是_。(分数:2.00)A.f(v1,B.f(v1,V2);C.f(D.f( 解析:解析 此题考查的是函数的调用。因为变量的定义是 int v1;longv2,而函数 f()的第一个参数是指针,第二个参数是引用,所以选项 D 为正确引用。35.在下列原型所示的 C+函数中,按“传值”方式传递参数的是_。(分数:2.00)A.void f1(int x); B.void f2(int*x);C.void f3(const int*x);D.void f4(int解析:解析 传值方式是将实参复制到形参中,因此实参和形

46、参是两个不同的变量,有各自的存储空间,可以把函数的形参看做是函数的局部变量。其中 BC 选项为按低值传递 D 选贤为按引用传递。36.下列关于函数参数的叙述中,正确的是_。(分数:2.00)A.在函数原型中不必声明形参类型B.函数的实参和形参共享内存空间C.函数形参的生存期与整个程序的运行期相同D.函数的形参在函数被调用时获得初始值 解析:解析 函数的实参与形参是两个不同的变量,有各自的存储空间。函数形参是函数的局部变量,在函数调用时获得初始值。37.有如下程序: #includeiostream using namespace std; void f1(intx=y;y=z; void f2(int x,int y)int z=x;x=y;y=z; int main() int x=10,y=26; f1(x,y); f2(x,y); couty

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1