计算机二级C语言笔试试题,要求运行结果,要有详细的解题过程,不是只要结果,有实力的进,感激不尽

intf(inta[],intn){if(n>1)returna[0]+f(a+1,n-1):elsereturna[0];}main(){intaa[10]={1,2,... int f(int a[],int n)
{if(n>1)
return a[0]+f(a+1,n-1):
else
return a[0];
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4); printf("%d|n",s);
}
展开
 我来答
百度网友051c285
2010-02-18
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
求结果从主函数main开始:
首先定义了一个十个数的整型数组aa,并赋值1,2,3,4,5,6,7,8,9,10。
接着定义整数s,并赋值s=f(aa+2,4).这里就调用了f函数。同时传递两个参数aa+2(即为aa[2])和4。
再看函数f:
f的函数体对结构控制用到了if语句,if的条件测试为n是否>1。
由前文可知,此时n=4,所以其实是返回3+f(aa+3,3).
又调用f,此时n=3,同理所以返回3+4+f(aa+4,2).
又调用f,此时n=2,同理返回3+4+5+f(aa+5,1).
此时n=1,不满足测试条件,返回3+4+5+6结束。
s=3+4+5+6=18
别选我
1181003310
2010-02-18 · TA获得超过190个赞
知道答主
回答量:79
采纳率:0%
帮助的人:42万
展开全部
多给点分我就给你答案
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lizard1861
2010-02-18 · TA获得超过800个赞
知道小有建树答主
回答量:543
采纳率:0%
帮助的人:721万
展开全部
递归从aa[2]开始,n为4,每次记录下aa的首元素,aa加1,n减1,进行下一次递归.当n=1时,递归结束,将每次递归aa首元素的值赋给s.打印s=18.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小孩不喝酒
2010-02-18 · 超过30用户采纳过TA的回答
知道答主
回答量:149
采纳率:0%
帮助的人:0
展开全部
c的程序首先看main函数,aa+2数组的首地址增加两个单位为aa[2],这时调用f函数,进入f函数先判断n的值,n为4,所以执行a[0]+f(a+1,n-1),这是一个递归算法,再调用f函数,参数为(a[1],3),以此类推,当n==1时 返回的结果为:
3+4+5+6=18(注:参数虽然都是a[1],但是每次传的首地址都不同)
有问题可以hi我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2010-02-18 · TA获得超过173个赞
知道小有建树答主
回答量:284
采纳率:100%
帮助的人:188万
展开全部
你自己去调试啊,什么问题都能明白!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式