hyqd.net
当前位置:首页 >> 6、以下程序运行后的输出结果是 。 int F(int A[], int n) { iF (n &g... >>

6、以下程序运行后的输出结果是 。 int F(int A[], int n) { iF (n &g...

答案是:15f函数执行的是一个迭代,把数组aa里的每个元素的值都相加.

int f(int n){ static int a=1; n+=a++; return n;} 函数里的a是静态变量,函数返回时不内存不回收,所以第一次进入函数时a为1,第二次为2 n+=a++相当于n=n+a++,a++表示先使用a,再自加1.所以第二次进来时a=2;然后选c很清楚了吧

aa:(1,2,3)s=f(&1,3);在计算时:3>1 返回 1+f(&2,2)f(&2, 2):2还是大于1,就返回2+f(&3,1);f(&3,1):1不大于1了,所以就返回a[0],也就是3.f(&3,1)=3,那么f(&2,2)=2+3=5,f(&1, 3)=1+f(&2,2)=1+5=6上面我写的&1,&2,&3语法是不对的,只是让你参考用,&1代表指针指向数组aa里的数字1.看来你还没学过递归吧.

printf(“%d\n,r”)这句是不是有问题? 是不是应该:printf("%d\n", r); 答案是2 7->6->2

f(int x,int y)这个函数返回的值是(y-x)*x d=f(f(a,b),f(a,c))相当于 int m,n; m=f(a,b);n=f(a,c); d=f(m,n); 由f函数可知m=(b-a)*a;n=(c-a)*a; d=(n-m)*m; 依次带入值m=(4-3)*3=3;n=(5-3)*3=6; d=(6-3)*3=9; 所以输出值是9

你好!#includevoid f(int n,int *r){ int r1=0; if(n%3==0) r1=n/3; else if(n%5==0) r1=n/5; else f(--n,&r1); *r=r1;}int main(void){ int m=7,r; f(m,&r); printf("%d",r); return 0;}为什么不是2呢?先是f(7,&r)然后是f(6,&r1)然后r1=n/3=2如果对你有帮助,望采纳.

a=a+f(&b) 先计算f(&b):b=b+*a=1+3=4 a=a+4=2+4=6

相关文档
ldyk.net | xmjp.net | ltww.net | rjps.net | bestwu.net | 网站首页 | 网站地图
All rights reserved Powered by www.hyqd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com