以下程序输出的结果是? fun(int a,int b,int c) { c=a*b;
以下程序输出的结果是?fun(inta,intb,intc){c=a*b;}voidmain{intc;fun(2,3,c);cout<<c;}答案是无法确定,求解释...
以下程序输出的结果是?
fun(int a,int b,int c)
{ c=a*b;}
void main
{int c; fun(2,3,c);
cout<<c;
} 答案是无法确定,求解释 展开
fun(int a,int b,int c)
{ c=a*b;}
void main
{int c; fun(2,3,c);
cout<<c;
} 答案是无法确定,求解释 展开
10个回答
展开全部
c没有初始化,所以c是什么不确定,fun()使用的参数是临时的,并没有改变c的值,可以将c的值先附一个值,就一直看到只会输出那个值。可以将fun()参数改为传引用或者用指针,就可以改变c的值。
fun(int a,int b,int *c)
{ *c=a*b;}
void main
{int *c; fun(2,3,c);
cout<<*c;
}
计算总额
Private Sub Command0_Click()
Dim a As Double
Dim b As Double
a = Text1
b = Text2
c = a * b
c = MsgBox("总额是" & a * b & "元")
End Sub
以上内容参考:百度百科-程序
展开全部
从主函数开始,首先,楼主你声明了一个整型变量c,由于没有赋值,系统给它赋一个随机值。接下来进入fun函数,这时,系统在另一个地方开辟了一块内存存储a,b,c形参,(注意,这里系统是另一个地方开辟了一个c,而不是原来的那个c,这也是你的问题核心所在),然后把2的值赋予a,把3的值赋予b,把c的值赋予c(注意,是把原来main函数的那个实参c赋予fun函数的形参c),然后c=a*b是fun函数里的形参进行的计算,这时形参c=6(注意不是原来的那个c=6,因为两个c的地址是不一样的,不是同一个东西)。这时,函数完成,系统把刚才在调用函数时开辟的a,b,c给清除掉了,而你原来的c实际上并没有参与运算,还是那个随机值。要想显示c=6可以这样:
fun(int a,int b,int c)
{ c=a*b;
cout<<c;
}
void main
{int c; fun(2,3,c);}
或者
fun(int a,int b,int &c)
{ c=a*b;}
void main
{int c; fun(2,3,c);
cout<<c;
}
或者
fun(int a,int b,int *c)
{ *c=a*b;}
void main
{int *c; fun(2,3,c);
cout<<*c;
}
你的符号是全角,为了便于比较我没改。
给分啊。
fun(int a,int b,int c)
{ c=a*b;
cout<<c;
}
void main
{int c; fun(2,3,c);}
或者
fun(int a,int b,int &c)
{ c=a*b;}
void main
{int c; fun(2,3,c);
cout<<c;
}
或者
fun(int a,int b,int *c)
{ *c=a*b;}
void main
{int *c; fun(2,3,c);
cout<<*c;
}
你的符号是全角,为了便于比较我没改。
给分啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数写的有问题。
应该这么写
void fun(int a,int b, int& c) //注意c
{
c = a*b;
}
为什么?
如果按照你写的函数,c的值是不会改变的,其运行过程可以理解成如下样子:
进入fun前 int c = 0;
传入fun后其实可以转义成如下函数
void fun(int a,int b,int c)
{
int _a = a; //在进入函数体之后,会隐士的创建一个新的临时变量来替代传入变量
int _b = b;
int _c = c;
_c = _a*_b;
}
而如果改成 int& c ,则传入的就是c本体,函数内部不会做隐士的转变。
如果你学了指针的话,函数也可以改成如下样子
void fun(int a,int b,int* c)
{
*c = a*b;
}
void main()
{
int c = 0;
fun(2,3,&c);
cout << c;
}
暂时理解到这个程度就成,过一阶段学东西多了,就能理解的深入了。
应该这么写
void fun(int a,int b, int& c) //注意c
{
c = a*b;
}
为什么?
如果按照你写的函数,c的值是不会改变的,其运行过程可以理解成如下样子:
进入fun前 int c = 0;
传入fun后其实可以转义成如下函数
void fun(int a,int b,int c)
{
int _a = a; //在进入函数体之后,会隐士的创建一个新的临时变量来替代传入变量
int _b = b;
int _c = c;
_c = _a*_b;
}
而如果改成 int& c ,则传入的就是c本体,函数内部不会做隐士的转变。
如果你学了指针的话,函数也可以改成如下样子
void fun(int a,int b,int* c)
{
*c = a*b;
}
void main()
{
int c = 0;
fun(2,3,&c);
cout << c;
}
暂时理解到这个程度就成,过一阶段学东西多了,就能理解的深入了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cout输出的是fun函数的实参,虽然在fun函数中有c的计算 但是这个c是函数形参 是个局部变量 和main函数当中的c不是一样的 当fun函数返回后 局部变量c的值已经释放了 main函数中输出的c值仍然是未定义的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你对变量c没有初始化,在变量c的内存空间里本来就有东西,于是就无法确定了。
还有这个程序是无法执行的呵:fun前面要加int
然后及时加了int执行了上面的函数后变量c根本没变,因为那个fun函数内没有实参,也没有return
还有那个我不太懂C++,所以程序改动如下::
#include <stdio.h>
int ccc;
int fun(int a,int b)
{
ccc=a*b;
}
void main(){
fun(2,3);
printf("%d",ccc);
}
PS:这个莫名其妙的程序从哪儿来的
还有这个程序是无法执行的呵:fun前面要加int
然后及时加了int执行了上面的函数后变量c根本没变,因为那个fun函数内没有实参,也没有return
还有那个我不太懂C++,所以程序改动如下::
#include <stdio.h>
int ccc;
int fun(int a,int b)
{
ccc=a*b;
}
void main(){
fun(2,3);
printf("%d",ccc);
}
PS:这个莫名其妙的程序从哪儿来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询