2 qq 37130151 qq_37130151 于 2017.01.07 21:03 提问

c语言问题,有点不懂……

# define f(x) (x*x) main() { int i1, i2; i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ; printf("%d, %d\n",i1,i2); } 程序运行后的输出结果是( ) A.64, 28 B.4, 4 C.4, 3 D.64, 64
答案:C

2个回答

sum_TW
sum_TW   2017.01.08 19:04
已采纳

= f(8)/f(4)=(8*8)/(4*4)=4, i2=f(4+4)/f(2+2) =(4+4*4+4)/(2+2*2+2)=3.

一个个替代进去就好了,你就把4+4当做X带进去

csmzl
csmzl   2017.01.07 21:36

声明变量什么的就不说了吧。

 i1 = f(8)/f(4)=(8*8)/(4*4)=4, i2=f(4+4)/f(2+2) =(4+4*4+4)/(2+2*2+2)=3.

要把原式直接带进去算的。

csmzl
csmzl 回复qq_37217310: c语言是基础语言,很傻但是很牛叉!它只知道括号里是个整体参数,只知道直接带入函数中。
11 个月之前 回复
qq_37130151
qq_37130151 后边有点不懂,为啥4+4=那个
11 个月之前 回复
vicky_qwu
vicky_qwu 回复qq_37217310: 这个就是简单的替换,如果想让f(4+4)和f(8)得到一样的结果,需要#define f(x) ((x)*(x))。另外,外面个括号也不能丢,举个例子#define g(a,b) a+b, 如果你的代码是 c*g(a,b)的话,就会变成c*a+b,但并不是你想要的c*(a+b),所以要#define g(a,b) (a+b)
11 个月之前 回复
qq_37217310
qq_37217310 结果是没错,但是为什么不是先将f(4+4)运算得到f(8)再运算?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!