有以下程序#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,,第1张

你的程序的确很绕啊。但是在我想了一下换是明白了。:

你只要把你每次改变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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10112220.html

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

发表评论

登录后才能评论

评论列表(0条)

保存