
计算机二级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);
} 展开
{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);
} 展开
5个回答
展开全部
求结果从主函数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
别选我
首先定义了一个十个数的整型数组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
别选我
展开全部
多给点分我就给你答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
递归从aa[2]开始,n为4,每次记录下aa的首元素,aa加1,n减1,进行下一次递归.当n=1时,递归结束,将每次递归aa首元素的值赋给s.打印s=18.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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我
3+4+5+6=18(注:参数虽然都是a[1],但是每次传的首地址都不同)
有问题可以hi我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你自己去调试啊,什么问题都能明白!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询