有如下程序: #include<iostream> using namespaee std; int main { void function(do

题目

有如下程序: #include<iostream> using namespaee std; int main { void function(double val); double val: function(val); eout<<val: return 0; } void function(double val) { val=3; } 编译运行这个程序将出现的情况是( )。

A.编译出错,无法运行

B.输出:3

C.输出:3.0

D.输出一个不确定的数

参考答案和解析
正确答案:D
本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序: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。

第2题:

如下程序的输出结果是includevoid fun(int & X,inty){intt=x;x=y;y=t;}int main(){in

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

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B
解析:参数X是引用传递,传递的是地址:参数Y是值传递,函数fun( )是做X与Y值交换,交换后X的值要被回传给a[1],此时a[1]=a[0]=23。

第3题:

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 //******error******的下面。 试题程序: include<iostream> //********error******** template<T> voidfun(Tt) { std::cout<<"test"<<std::endl; } //********error******** template<bool> voidfun(boolt) { std::cout<<(t?"Hell0":"Hi")<<std::endl; } intmain { //********error******** boolflag=TRUE; fun(flag); fun((int)flag); return0; }


正确答案:
(1)应改为“template<classT>”。
(2)删除“template(bool)”。
(3)应改为“boolflag=true;”。
【解析】C++中的模板类格式为template<classT>,所以第1处的语句“template<T>”应修改为“template(classT>”。在第2处的“voidfun(boolt)”函数中,t变量为布尔型变量,是C++中的基础变量,不是模板变量,没有使用到模板类,所以删除第2处的模板类型定义语句。第3处的“boolflag=TRUE;”是声明布尔型变量flag,并将其值赋为逻辑真。而TRUE并不是合法值,C++中区分大小写,所以逻辑真值应为true,即“boolflag=true;”。

第4题:

阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
【说明】
以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。



【C++代码】
#include?#include?using?namespace?std;class?DrawCircle?{??????//绘制圆形,抽象类? ? ? public: (1);//定义参数为?int?radius,?int?x,?inty? ?virtual~DrawCircle()?{?}};class?RedCircle:public?DrawCircle?{????//绘制红色圆形? ? ? ? public: void?drawCircle(intradius,?int?x,?int?y)?{cout?<?drawCircle?=?drawCircle;? }? ?virtual~shape()?{?}? public:? ?virtual?void?draw()?=?0;};class?Circle:public?Shape?{????//圆形? ? private:? ? ?int?x,y,radius;? ? public:? Circle(int?x,inty,int?radius,DrawCircle?*drawCircle)? (3)? {? this->x?=?x;? ?this->y?=?y;? ? this->radius?=?radius; }? ? ? public:? void?draw(){? drawCircle?-> (4); }};int?main(){Shape?*redCirclenew?Circle(100,100,10,????(5)????);//绘制红色圆形? Shape?*greenCircle=new?Circle(100,100,10, (6)??);//绘制绿色圆形redCircle >draw();? ?greenCircle?->draw();? ?return?0;}


答案:
解析:
(6)(1)void drawCircle (int radius,int x,int y)
(2)DrawCircle*drawCircle
(3)drawcircle
(4)drawCircle(radius,x,y)
(5)new RedCircle()
(6)new GreenCircle()【解析】
第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
第三空这里填drawcircle,用-> drawcircle来引用父类的成员。
第四空调用drawCircle(radius,x,y)方法。
第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

第5题:

有如下程序:includemain(){int x=23; do {Printf("%d",x--);} while(! x);}该程序的执

有如下程序: #include <stdio.h> main() { int x=23; do { Printf("%d",x--);} while(! x); } 该程序的执行结果是( )。

A.321

B.23

C.不输出任何内容

D.陷入死循环


正确答案:B
解析:do-while语句的执行过程中要先执行一次循环体语句,本题中执行x--后判断while中的表达式,表达式的值!x为假,程序结束循环。

第6题:

有如下程序: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::endl; return 0; } 执行后的输出结果是

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B
解析:本题考核函数的调用以及参数值的传递。函数fun中的第一个参数采用引用传值方式,函数中对形参值的改变同样作用于实参上;第二个参数采用按值传值方式,函数中对形参的操作不会影响到实参。所以main函数中调用fun函数后,a[1]的值被修改为a[0]的值,而a[0]的值没有改变。

第7题:

对于下面程序,对p进行赋值正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ void(A::*p)(int); }

A.p=fun;

B.p=fun();

C.p=A::fun;

D.p=A::fun()


正确答案:C
解析:给类函数指针赋值的格式是:指针名>=类名::函数名>

第8题:

有如下程序: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

第9题:

有以下程序:includevoid fun(int* s,int* * d){* *d=*(s+2);}main(){ inta[]={1,2,3,

有以下程序: #include <stdlib.h> void fun(int * s,int * * d) { * *d=*(s+2); } main() { int a[]={1,2,3,4,5},*b; b=(int *)malloc(sizeof(int)); fun(a,&B) ; printf("%d\n",*b+1); } 程序的输出结果是( )

A.2

B.3

C.4

D.5


正确答案:C

第10题:

Main()函数可以有返 回值(int),也可以为void


正确