有下列程序: #include<stdio.h> #define S1(x,y)x*y #define S2(x,y)(x)*(y) main() { int a=2,b=5; print

admin2022-10-25  20

问题 有下列程序:
     #include<stdio.h>
     #define S1(x,y)x*y
     #define S2(x,y)(x)*(y)
     main()
     {  int a=2,b=5;
        printf(”%d,%d,%d,%d”,S1(a+b,a+b),S1(a+b,b+a),S2(a+b,a+b),S2(a+b,b+a));
     }
     程序执行后的输出结果是(          )。

选项 A、17,17,49,49
B、17,29,49,49
C、29,29,49,49
D、49,49,49,49

答案 B

解析 对于题干中的宏,替换如下:S1(a+b,a+b)等价于a+b*a+b,即2+5*2+5,等于17;S1(a+b,b+a)等价于a+b*b+a,即2+5*5+2,等于29;S2(a+b,a+b)等价于(a+b)*(a+b),即(2+5)*(2+5),等于49;S2(a+b,b+a)等价于(a+b)*(b+a),即(2+5)*(5+2),等于49。本题答案为B选项。
转载请注明原文地址:https://jikaoti.com/ti/lGd0FFFM
0

最新回复(0)