c语言,求计算过程,详细,高分。 答案是10 20 40 40
5个回答
展开全部
这一题考的就是函数的形式参数和实际参数的区别。
首先是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
首先是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,全局变量与局部变量的作用域问题。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.函数形参参数的值得改变不影响实参的值。
然后从头到尾分析这道题
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-11-30
展开全部
sub函数运行时只改变堆栈中数值而不改变原数(因为你没有传入指针,只传入了数值),故sub两句代码无效。数据不变,按输出顺序写下即可。
追答
所以我的答案你满意吗?结果应该就是(x3=)10 (x4=)20 (x1=)30 (x2=)40
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sub()函数在main()函数后面,都没有什么声明,会报错的;假设已经声明了,这是按值传递,也不会交换的到值
追问
计算过程
追答
假设程序是调用了sub(),10 20 30 40,就是这样的结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是数的交换呀,,,
更多追问追答
追问
求过程
计算过程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询