以下程序运行后的输出结果是 #include<stdio.h> int f(int x, int

以下程序运行后的输出结果是 #include<stdio.h> int f(int x, int y) { return((y-x)*x); } main() { int a=3, b=4, c=5, d; d=f(f(a, b), f(a, c)); printf("%d\n", d); }求详细步骤谢谢~~~~

由于f(int x,int y)函数返回的值是(y-x)*x,相当于说f(int x,int y)=(y-x)*x;

这里主要是计算嵌套函数f(f(a, b), f(a, c));

先将f(a, b)和 f(a, c)带进去,得到f((b-a)*a,(c-a)*a)=f((4-3)*3,(5-3)*3)=f(3,6)

最后计算f(3,6)=(6-3)*3=9,

所以最后的输出结果就是9,执行以上程序结果如下:

扩展资料:

C语言中函数的定义都是相互平行、相互独立的,但是在调用的时候可以互相嵌套,就是指将某函数作为另一函数的参数使用,为大家所熟知的例子就是qsort函数会将一个比较器cmp作为参数。

void __fileDECL qsort (

void *base,

size_t num,

size_t width,

int (__fileDECL *comp)(const void *, const void *)

)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15

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

追问

太感谢啦~一下子全部都明白了~~~

追答

太客气了,能解决你的问题我也很高兴!

追问

#include 〈stadio .h〉void main (){char *s=“12134211”; int v[4]={0,0,0,0},k,i; for (k=0;s[k];k++){switch(s[k]{case ‘1’:i=0;case‘2’:i=1;case‘3’:i=2;case‘4’:i=3;}v[i]++;}for(k=0;k<4;k++)printf(“%d”,v[k]);}

这道题您会吗?

追答

把你写好的C文件发过来!

追问

这个就是那道题。

完整的

要不给你照下来吧。试卷上的。

不太清楚您凑合着看吧

追答

我知道了!你注意一下switch的用法!case:后面都没有break,所以每次i都等于3,每次都运行v[3]++
共有八个数,运行八次v[3]++,v[3]=8,v[0],v[1],v[2]都为0!

追问

谢了啊;-)

为什么V[3]是8呢

追答

加了8次1,本来V[3]是0,V[3]从0变到8!

追问

#include〈stadio.h〉
main()
{ int
a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
for (i=0;i<4;i++)
p[i]=&a[i*3];
printf(“%d\n”,p[3][2]);

这道题您会吗?

追答

printf(“%d\n”,p[3][2])这句写对着吗?

本回答被提问者采纳
第2个回答  2014-01-01
我真的不知道爱=哎问别人不
相似回答