niusouti.com
更多“计算平方数时不可能引起二义性的宏定义是( )A.define SOR(x)x*xB.define SQR(x)(x)*(x)C. define ”相关问题
  • 第1题:

    #define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为( )。

    A.#definef(x)5*x*x+5*x+5

    B.#definef5*x*x+5*x+5

    C.#definef(a)(5*a*a+5*a+5)

    D.#define(5*x*x+5*x+5)f(x)


    正确答案:C
    解析: 带参数宏的格式为:#define标识符(形参表)形参表达式。其功能:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

  • 第2题:

    #define 能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为( )。

    A.#define f(x)5*x*x+5*x+5

    B.#define f5*x*x+5*x+5

    C.#define f(a)(5*a*a+5*a+5)

    D.#define(5*x*x+5*x+5)fx)


    正确答案:C
    解析:带参数宏的格式为:#define标识符(形参衰) 形参表达式。其功能是:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

  • 第3题:

    以下程序的输出结果是_______。includedefine SQR(x)x*xmain(){int a;k=3; a=++SQR(k+

    以下程序的输出结果是_______。 #include<stdio.h> #define SQR(x)x*x main() { int a;k=3; a=++SQR(k+1); printf("%d\n",a) ; }

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+1代替,其他字符不变。SQR(k+1)展开后应为字符串k+1*k+1。

  • 第4题:

    下列选项中不会引起二义性的宏定义是( )。

    A.#define S(x)x*x

    B.#define S(x)(x)*(x)

    C.#define S(x)(x*x)

    D.#define S(x)((x)*(x))


    正确答案:D
    解析: 本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。

  • 第5题:

    下列选项中不会引起二义性的宏定义是( )。A.defineS(x)x*xB.defineS(x)(x)*(x)SXB

    下列选项中不会引起二义性的宏定义是( )。

    A.#defineS(x)x*x

    B.#defineS(x)(x)*(x)

    C.#defineS(x)(x)*x

    D.#defineS(x)(x*x)


    正确答案:D
    本题考查参数的宏替换。为避免二义性有些参数表达式必须加括号,否则在实参表达式替换时,会出现错误。例如x为(m+n)时替换A:m+n*m+n,所以选项D最符合条件。

  • 第6题:

    以下程序的输出结果是______。includedefine SQR(x)x*xmain(){int a,k=3; a=++SQR(k+1

    以下程序的输出结果是______。 #include<stdio.h> #define SQR(x)x*x main() { int a,k=3; a=++SQR(k+1); printf("%d\n",a); }

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+1代替,其他字符不变。SQR(k+1)展开后应为字符串k+1*k+1。

  • 第7题:

    设有宏定义:define MY(x,y) x*y,则宏调用MY(2+3,5)的结果为25。 ()

    此题为判断题(对,错)。


    正确答案:错误

  • 第8题:

    已知下面的程序段,正确的判断是______ #define A3 #define B(A) ((A+1)*a) X=3*(A+B(7)); X=3*(A+B(7);

    A.程序错误,不允许嵌套定义

    B.X=93

    C.X=81

    D.程序错误,宏定义不允许有参数


    正确答案:C
    解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

  • 第9题:

    有宏定义#define M(x)x*x*2;则a=M(2+3)的值()  

    • A、2
    • B、3
    • C、11
    • D、14

    正确答案:D

  • 第10题:

    设x是值大于零的实型变量,计算PASCAL中x8的表达式为()。

    • A、ln(8*exp(x))
    • B、exp(8*ln(x))
    • C、x^8
    • D、sqr(sqr(sqr(x)))*x

    正确答案:B

  • 第11题:

    单选题
    有宏定义#define M(x)x*x*2;则a=M(2+3)的值()
    A

    2

    B

    3

    C

    11

    D

    14


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    以下在任何情况下计算平方数时都不会引起二义性的宏定义是()。
    A

    #define POWER(x)  x*x

    B

    #define POWER(x)  (x)*(x)

    C

    #define POWER(x)  ((x)*(x))

    D

    #define POWER(x)  (x*x)


    正确答案: B
    解析: 暂无解析

  • 第13题:

    以下程序的输出结果是 ______。 #define SQR(X) X * X main() { int a=16,k=2,m=1; a/=SQR(k/m)/SQR(k+m); printf("%d\n",A) ; }

    A.16

    B.2

    C.9

    D.1


    正确答案:B
    解析:C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。在做这题时,也不妨运用置换法。得到a/=k+m*k+m/k+m*k+m=16/7=2。注:a为整型,所以在做除法,自动取整。

  • 第14题:

    以下程序的输出结果是 ______。includedefine SQR(x)x*xmain((){ int a,k=3;a=++SQR(K

    以下程序的输出结果是 ______。#include<stdio.h>#define SQR(x)x*xmain((){ int a,k=3; a=++SQR(K+1); printf("%d\n",A) ;}

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+1代替,其他字符不变。SQR(k+1)展开后应为字符串k+1*k+1。

  • 第15题:

    下面宏定义正确的是( )

    A.#define S a*b

    B.#define PI 3.14;

    C.#define max(a,b) ((a) >(b) ?(a) ;(b) )

    D.#define s(x) (x)*(x);


    正确答案:C

  • 第16题:

    #define能做简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为( )。A.

    B.

    C.

    D.

    A.A

    B.B

    C.C

    D.D


    正确答案:C
    本题考查带参数宏的格式:#define标识符(形参表)形参表达武。其功能是:把预处理程序中出现的所有带实参的宏名,展开形成由实参组成的表达式。故C正确。

  • 第17题:

    选出任何情况下都不引起二义性的宏定义( )。

    A.#define POWER(x)x*x

    B.#define POWER(x)((x)*(x))

    C.#define POWER(x)(x*x)

    D.#define POWER(x)(x)*(x)


    正确答案:B
    解析:引起带参数宏的二义性主要有两个方面:一是,参数之间因运算符优先级不确定而带来的二义性。例如本题的选项A),若程序中使用POWER(a+b),会展开为a+b*a+b,这样就会先计算b*a的值,然后再加一个a和一个b,产生二义性。杜绝这种二义性的方法是在宏定义的每个参数外加上圆括号以保证总是先计算每个参数的值,就好像本题的选项D)那样。另一个是,整个宏所代表的表达式因运算符优先级不确定而带来的二义性。例如本题的选项D),若程序中使用a/POWER(b),会展开为a/(b)*(b),这样就会先计算a/b的值,然后再乘以b,产生二义性。杜绝这种二义性的方法是对整个宏定义加一个圆括号,就好像本题的选项B)那样。故选项B)在任何情况下都不会引起二义性,应该选B。

  • 第18题:

    #define能作简单的替代,用宏来替代计算多项式5 *x*x+5*x+5的值的函数f,正确的宏定义语句为( )。

    A.#define f(x) 5*x*x+5*x+5

    B.#define f5*X*x+5*x+5

    C.#define f(a) (5*a*a+5*a+5)

    D.#define(5*x*x+5*x+5) f(x)


    正确答案:C
    本题考查带参数宏的格式:#define标识符(形参表)形参表达式。其功能是:把预处理程序中出现的所有带实参的宏名,展开形成由实参组成的表达式。故C正确。

  • 第19题:

    下列选项中不会引起二义性的宏定义是( )。

    A.#defineS(x)x*x

    B.#defineS(x)(x)*(x)

    C.#defineS(x)(x*x)

    D.#defineS(x)((x)*(x))


    正确答案:D
    解析:本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。

  • 第20题:

    以下在任何情况下计算平方数时都不会引起二义性的宏定义是()。

    • A、#define POWER(x)  x*x
    • B、#define POWER(x)  (x)*(x)
    • C、#define POWER(x)  ((x)*(x))
    • D、#define POWER(x)  (x*x)

    正确答案:C

  • 第21题:

    若已有如下宏定义: #define MIN(x,y)  (x)>(y)?(x):(y) 以及定义:int a=1,b=3,c;,则执行语句c=MIN(a=b,b-a);以后,变量c的值是()


    正确答案:3

  • 第22题:

    有宏定义#define M(x)x*x;则a=M(2+3)的值是()

    • A、2
    • B、3
    • C、11
    • D、25

    正确答案:C

  • 第23题:

    单选题
    有宏定义#define M(x)(x)*(x);则a= M(2+3)的值是()
    A

    2

    B

    3

    C

    11

    D

    25


    正确答案: C
    解析: 暂无解析