C++语言程序设计

单选题有如下函数定义:void func(int a,int&b)a++;b++;若执行代码段:int x=0;y=1;func(x,y);则变量x和y的值分别是(  )。A 0和1B 1和1C 0和2D 1和2

题目
单选题
有如下函数定义:void func(int a,int&b)a++;b++;若执行代码段:int x=0;y=1;func(x,y);则变量x和y的值分别是(  )。
A

0和1

B

1和1

C

0和2

D

1和2

参考答案和解析
正确答案: D
解析:
函数func中形参a采用传值调用,函数func对a加1不会影响实参x的值;形参b是传址调用,函数func对b加1的同时会改变实参y的值。因此,调用函数func后,x=0,y=2。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列函数原型声明中错误的是

A.void Fun(int x=O,int y=0);

B.void Fun(int x,int y);

C.void Fun(int x,int y=0);

D.void Fun(int x=0,int y);


正确答案:D
解析:本题考核函数的定义方法和调用方法。说明一个函数的格式为:函数类型>函数名>,(下函数参数表>);在C++中,允许在函数的说明或定义时给一个或多个参数指定默认值。但一旦为某个给定参数定义了缺省值,必须为后继的所有参数也定义缺省值。由此可知,选项D是错误的。

第2题:

有以下程序 fun(int x,int y){return(x+y);} main() { int a=1,b=2,c=3,sum; sum=fun((a++,b++,a+b),c++); printf("%d\n",sum); }

A.6

B.7

C.8

D.9


正确答案:C
解析:在fun((a++,b++,a+b),c++)中,先算括号内的(a++,b++,a+b)逗号运算,即先算出a++的值,a=2;再算出b++的值,b=3;最后算出a+b的值,a+b=2+3=5,整个逗号表达式的值为最后a+b的值即为5;接下来调用fun函数,此时原语句变为:smn=fun(5,C++);进行运算,c++表示在使用c以后再将c的值加1,所以结果为:5+3=8。

第3题:

有以下程序

fun(int x, int y){ return (x+y); }

main()

{ int a=1, b=2, c=3, sum;

sum=fun((a++,b++,a+b),c++);

printf("%d\n",sum);

}

执行后的输出结果是

A)6

B)7

C)8

D)9


正确答案:C
答案 C
解析:变量 a,b,c 的初始值分别为 1,2,3 。因此逗号表达式 “ a++,b++.a+b ” 的值等于 5 ,表达式 c++ 的值为 3 ,这样主函数 main() 中调用子函数的表达式为 “ fun(5,3); ” , 其返回值等于 8 ,所以变量 sum 的值等于8 .

第4题:

阅读下列程序: include void fun(int n) { int x(5); static int y(10); if(n>0) {

阅读下列程序:

include<iostream.h>

void fun(int n)

{

int x(5);

static int y(10);

if(n>0)

{

++x;

++y;

cout<<x<<","<<y<<endl;

}

}

void main()

int m(1);

fun(m);

}

则该程序的输出结果是______。


正确答案:611
6,11 解析:由主函数mian入手,首先定义变量m等于1,然后调用fun函数。fun函数中y为静态数值,等于10,作用域为到本文件结束。所以y加1后,主函数中y的值也为11。其中函数中x的加1运算调用的是函数中的x等于5的变量,作用域为由定义到文件结束,即主函数中输出的x值为6。所以答案为6,11。

第5题:

有如下程序:include void fun (int& x,int y){int t=x;x=y;y=t;}int main(){ int

有如下程序: #include <iostream> void fun (int& x,int y){int t=x;x=y;y=t;} int main() { int a[2]={23,42}; fun (a[1],a[0]; std::cout<<a[0]<<”,”<<a[1]<<std:: ond1; retum0; }执行后的输出结果是______ 。

A.41,41

B.23,23

C.13,42

D.42,23


正确答案:B
解析:a[0]做的是地址传递,所以执行函数后值发生变化,而a[1]做的是值传递,值并没有发生变化,所以此题应选择A。

第6题:

( 21 )有如下函数定义:

void func ( int a,int & b ) {a++; b++;}

若执行代码段:

int x=0 ,y=1

func ( x,y ) ;

则变量 x 和 y 值分别是

A ) 0 和 1

B ) 1 和 1

C ) 0 和 2

D ) 1 和 2


正确答案:C

第7题:

有如下程序:includevoid fun(int&x, int y){int t=x; x=y; y=t;}int main(){int

有如下程序: #include<iostream> void fun(int&x, int y){int t=x; x=y; y=t;} int main() { int a[2]={23,42}; fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<std::end1; return 0; } 执行后的输出结果是( )。

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B

第8题:

阅读下面程序: include void fun(int n) { int x(5); static int y(10); if(n>0) {

阅读下面程序:

include<iostream.h>

void fun(int n)

{

int x(5);

static int y(10);

if(n>0)

{

++x;

++y;

cout<<x<<","<<y<<end1;

}

}

void main()

{

int m(1);

fun(m);

}

则该程序的输出结果是______。


正确答案:611
6,11

第9题:

对下列程序段的描述正确的是()。includeint Fun(int,int)void main(){cout<

对下列程序段的描述正确的是( )。 #include<iostream.h> int Fun(int,int) void main() { cout<<Fun(5,50)<<endl; } int Fun(int x,int y) { return X*X+y*y; }

A.该函数定义正确,但函数调用方式错误

B.该函数调用方式正确,但函数定义错误

C.该函数定义和调用方式都正确

D.该函数定义和调用方式都错误


正确答案:C

第10题:

有如下程序: include void fun(int&x,int y){int t=x;x=y;y=t;} int ma

有如下程序: #include<iostream> void fun(int&x,int y){int t=x;x=y;y=t;} int main() { int a[2]={23,42}; fun(a[1],a[0]; std::cout<<a[0]<<","<<a[1]<<std::ndl; return 0; } 执行后的输出结果是

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B
解析:x为引用,双向的;而y为值传递,单向的。

更多相关问题