问道C语言的题目:执行下面的程序后,a的值是( )

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:36:50
#define SQR(X) X*X
main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
A)10 B)1 C)9 D)0
答案是B,为什么啊?是这么算的啊,能说一下步骤伐?谢谢。

楼上的是错误的
a/=SQR(k+m)/SQR(k+m);
这个是需要直接代进去的,要遵守"排队原则"
a/=k+m*k+m/k+m*k+m
a/=2+1*2+1/2+1*2+1=2+2+0+2+1=7
也就是a/=7
a=a/7=10/7=1 因为这是int,所以取整

SQR(k+m)/SQR(k+m)可理解为(1*2)*(1*2)/(1*2)*(1+2)=9/9=1