早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一道C语言问题intx1=30,x2=40;main(){intx3=10,x4=20;sub(x3,x4);sub(x2,x1);L1:printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2);}sub(intx,inty){x1=x;x=y;y=x1;L2:printf(“%d,%d\n”,x,y);}L1行输出结果为d

题目详情
一道C语言问题int x1=30,x2=40; main() { int x3=10,x4=20 ; sub(x3,x4) ; sub(x2,x1); L1:printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2); } sub(int x, int y) { x1=x ;x=y ;y=x1 ; L2 :printf(“%d,%d\n”,x,y) ; } L1行输出结果为_____d__________。 (15) A 10,20,30,40 B 10,20,40,10 C 20,10,40,30 D 10,20,40,40 L2行输出结果为______b_________。 (16) A 10,20 B 20,10 C 10,20 D 20,10 40,10 10,40 10,40 40,10 能告诉下为什么吗 越详细越好 我做的答案是 10 20 30 40 20 10 30 40
▼优质解答
答案和解析
L1:x1,x2 是两个全局变量。x3,x4是main内部定义的局部函数。 调用sub(x3,x4)时候,x1=x3=10,调用sub(x2.x1)时候x1=x2=40;两次调用函数的时候都是只传递实参,实参传递时候,不会改变实参的值,但是又有x1是一个全局变量,sub()函数中用到了x1,所以每次调用函数的时候x1的值都是变的,这里并不是因为函数调用改变实参。最后一次调用x1=40.所以L1:为:10,20,40,40 L2:这里的分析和上面的是差不多的。第一次调用sub(x3,x4)即sub(10,20)的时候x1=x3=10,之后再调用sub(x2,x1),就是相当与调用sub(40,10)