c语言,求计算过程,详细,高分。 答案是10 20 40 40

如题所述

这一题考的就是函数的形式参数和实际参数的区别。
首先是sub(x3,x4)
这里由于传入函数中的是形式参数(也就是程序另外声明了两个变量x,y,同时使x=x3,y=x4,而他们的值的改变跟x3,x4没关系),所以尽管函数交换了,其实也就是交换x,y的值,并没有影响到x3,x4,所以x3=10,x4=20;

而sub(x2,x1)也是同样的道理,不同的是在sub函数中,有一步x1=x,因为x1,x2是全局变量,所以这一步就使x1的值改变了,变为x的值了,而x的值是有x2传进去的,所以x1=40,x2还是没变,x2=40
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-30
1,全局变量与局部变量的作用域问题。x1,x2的作用域是全局的。所以在sub里面x1就是全局变量。

2.函数形参参数的值得改变不影响实参的值。
然后从头到尾分析这道题
sub(x3,x4) 执行完之后 x3=10,x4=20(因为sub没法改变实参的值,这个是考点,书上讲的很清楚了) ,x1=10(因为x1是全局变量。x = 10,x1=x ,x1就变成10);x2=40
sub(x2,x1)等价于sub(40,30)执行完之后 x1=40(x = 40,x1 = x 所以x1 = 40),x2=40(不变)
最后x3,x4,x1,x2 10,20,40,40本回答被网友采纳
第2个回答  2015-11-30
sub函数运行时只改变堆栈中数值而不改变原数(因为你没有传入指针,只传入了数值),故sub两句代码无效。数据不变,按输出顺序写下即可。追答

所以我的答案你满意吗?结果应该就是(x3=)10 (x4=)20 (x1=)30 (x2=)40

第3个回答  2015-11-30
sub()函数在main()函数后面,都没有什么声明,会报错的;假设已经声明了,这是按值传递,也不会交换的到值追问

计算过程

追答

假设程序是调用了sub(),10 20 30 40,就是这样的结果

第4个回答  2015-11-30
就是数的交换呀,,,追问

求过程

计算过程

追答

答案是10 20 30 40吧