使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为: 100 注意:错误的语句在//******error******的下面,修改该语句即可。 #include<iostream.h> s

admin2019-05-14  22

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为:
100
注意:错误的语句在//******error******的下面,修改该语句即可。
#include<iostream.h>
static int x=50;
int t=0;
int *func(int x,int y,int z)
{
t=t+x+y+z;
//******error******
return t;
};
void main()
{
int y=30;
int x=10;
int z=20;
//******error******
x=x;
//******error******
cout<<func(x,y,z)<<endl;
}

选项

答案(1)return &t: (2)x=::x; (3)cout<<*func(x,y,z)<<endl;

解析 (1)由审题分析可知,函数func(int x,int y,intz)返回的是整型数据指针,而第1个标识下的return t表示返回一个整型数据,和要求的返回数据类型不匹配,应改为“return&t:”。
(2)第2个标识下x=x表示局部变量x自己给自己赋值,调用func(x,y,z)函数后,返回的运算结果是30+10+20=60,与输出100不同,而全局静态变量x值为50,30+50+20=100,刚好满足条件,因此第2个标识下是将全局静态变量x的值赋给局部变量x,即第2个标识下应该为“x=::x:”,“::”表示的是引用全局变量。
(3)func(x,y’z)返回一个整型数据指针,通过该指针可以得到运算结果,而cout<<func(x,y,z)输出的fun(x,y,z)返回的地址值(变量t的地址值),而不是该地址内存储的变量的值(t的值),运行程序后会发现输出的是奇怪的一串数字,而不是我们所想要的100,应加上取指针运算符“*”,*func(x,y,z)为变量t,故第3个标识下应改为“cout<<*func(x.y,z)<<endl;”。
转载请注明原文地址:https://kaotiyun.com/show/cE8p777K
0

随机试题
最新回复(0)