你只要把你每次改变b记下来就明白了
我给你说10吧 28也是一样的
首先b = 2; 之后fun函数传过去了a[2]的地址就是3 ,经过运算函数返回了b的值是5 ,在接着就是 b=fun(&a[i])+b;这句 最后b就被改写成了10了 最后输出就是10 第二次循环b的值是10 不是2 这个关键的 那28也就是这个道理了。明白了吧!!
这里我就是说一下为什么第一次循环是10 因为你的程序只是运行了一次,所以b的初始化只经过一次。要想在变成2,就要重新运行程序,这时候b在进行初始化,变成2好了就这样了!!!希望对你有用!
调用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啊。
能完整点不,最好原题。
根据你给的信息,我发现你这个程序有好多问题,多的不好说,于是我据你的意思自己写了一下这个程序,如下:
#include<stdioh>
int main()
{
int fun(int x,int y);
int a=4,b=5,c=6;
printf("%d\n",fun(2a,fun(b,c)));
return 0;
}
int fun(int x,int y)
{
if(x!=y) return((x+y)/2);
else return(x);
}
若我没错的话,运行结果应该是:6。即答案:B吧。 给我个最佳评价啦。。谢谢啦
函数fun是输入两个数返回比较大的
fun(x,y)=fun(3,8) 结果是8
2z =26 结果是12
fun(fun(x,y),2z) =fun(8,12)结果就是12
以上就是关于有以下程序#include <stdio.h> int b=2; int fun(int *k) { b=*k+b;return(b);} main () { int a[10]={1,全部的内容,包括:有以下程序#include <stdio.h> int b=2; int fun(int *k) { b=*k+b;return(b);} main () { int a[10]={1,、有以下程序 #include <stdio.h> void fun(int *a,int *b) {int *c; c=a;a=b;b=c; }、(33)有以下程序 #include int fun (int x,int y) { if (x!=y) return ((x+y);2); e等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)