有以下程序 #include<stdio.h> void fun(int x) { if(x2>1)fun(x2); printf("%d",x); }

有以下程序 #include<stdio.h> void fun(int x) { if(x2>1)fun(x2); printf("%d",x); },第1张

执行fun(7)时,if(7/2>1)成立,继续执行fun(7/2),相当于fun(3),然后再次判断if(3/2>1)不成立,fun(3/2)不执行,接着执行printf语句,此时的x为3,执行完成后,第二次调用的fun(3)函数返回,在接着执行第一次时fun函数的剩余部分,即Printf语句,而第一次的x为7,所以结果为37。

这道题考察的是概念:函数参数引用的是调用者(main函数)中变量的取值,调用完成后这些值不会返回给调用者的变量

也就是说在调用fun时,fun开设3个新的临时变量叫a,b,c,注意这3个变量与主程序中的a,b,c没有关系,然后将主程序中的a,b,c的值取出,对应赋值给fun开设的临时变量,然后fun倒腾临时变量的值,最后返回main函数时,这三个临时变量被舍弃,main函数中三个变量的值被用了一下而已,丝毫没有被 *** 作,所以它们的值没变,选4

调用fun(p,q)时就是让a指向p指的地方,b指向q指的地方,函数内部是让c指向a指的地方,让a指向b指的地方,再让b指向c指的地方,你发现这里面没有改变p和q原来指向的地方,即p还是指向x,q还是指向y。fun(&x,&y)是让a指向x,b指向y,你会发现这根本没涉及到p和q的指向,更谈不上改变它们的指向,所以答案选B啊。

voidfun(intp,intn,intm)//参数说明p:传入数组n:数组大小m:{inti=0;//for循环用标记变量inttemp=(int)malloc(nsizeof(int));//开辟一个可以放下n(10)个整型数的空间,用temp指向它的//首地址(相当于开辟一个可存10个数组)//这样做是考虑到不能用变量直接定义一个数组//即intn=10;inta[n];是不合法的(n是变量,不是常量)for(i=0;i

以上就是关于有以下程序 #include<stdio.h> void fun(int x) { if(x/2>1)fun(x/2); printf("%d",x); }全部的内容,包括:有以下程序 #include<stdio.h> void fun(int x) { if(x/2>1)fun(x/2); printf("%d",x); }、7、有以下程序 #include <stdio.h> void fun(int a,int b,、有以下程序 #include <stdio.h> void fun(int *a,int *b) {int *c; c=a;a=b;b=c; }等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10110484.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存