C语言题:求结果,要给出解释

第一题f(intb){staticinty=3;return(b+y++);}main(){inta=2,i,k;for(i=0;i<2;i++)printf(″%d\n... 第一题

f(int b)
{ static int y=3;
return(b+y++);
}
main()
{ int a=2,i,k;
for(i=0;i<2;i++)
printf(″%d\n″,f(a++));

第二题

int funs(int n)
{ if(n= =1 ||n= =2) return 2;
else return n+funs(n-1);
}
main()
{ int x=4;
printf(″S=%d\n″,funs(x));
}
展开
 我来答
好嘞啊啊啊啊
2013-09-01 · TA获得超过2612个赞
知道大有可为答主
回答量:1860
采纳率:66%
帮助的人:1184万
展开全部
#include<stdio.h>  
int f(int b)
{ static int y=3;
   return(b+y++);
}
 main()
{ int a=2,i,k;
  for(i=0;i<2;i++)
  printf("%d\n",f(a++));  
}

调用函数f(a++) 

b=a=2

返回b+y =5 y++ y=4

a++ a=3

再调用f(a++)

b=a=3

返回b+y =7 y++ y=5

a++ a=4

所以答案 5 7

#include<stdio.h>
int funs(int n)

if(n==1||n==2) 
  return 2;
else 
  return n+funs(n-1);
}
main()

 int x=4;
 printf("S=%d\n",funs(x));
}
x=4 调用f(x) n=4
继续调用f(x) n=3
继续调用f(x) n=2
满足 n==1||n==2 为真
返回2
返回2+3=5
返回5+4=9
返回到主函数 所以s=9
追问
请问 调用函数f(a++) 后     为什么就b=a了
追答
这是函数的传参 b是形参 a是实参   把a的值传给b
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
147268wer
2013-09-01
知道答主
回答量:13
采纳率:0%
帮助的人:4万
展开全部
楼主是不明白形参和实参的问题,比如说有函数f(x)=2x+1,还有y=f(2)+1、这个时候2就要带入f(x)中,计算出f(2)的值,再将f(2)带入y=f(2)+1就可以计算出y=5+1=6,这就是调用的问题,当我们计算y需要用到f(2),就将值计算出来,再调用回来,不知道这样解释楼主是否明白,不懂可以继续问、、、、
更多追问追答
追问
求第二题的解答
追答
9
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式