更多“若已有如下宏定义: #define MIN(x,y)”相关问题
  • 第1题:

    设有如下宏定义

    #define MYSWAP(z,x,y)

    {z=x;x=y;y=z;}

    以下程序段通过宏调用实现变量a,b内容交换,请填空。

    float a=5,b=16,c;

    MYSWAP(( ),a,b);


    正确答案:
    c

  • 第2题:

    设有以下宏定义:#define N 3#define Y(n) ((N+1)*n)则执行以下语句后,z的值为______。z=2 * (N+Y(5+1));

    A.出错

    B.42

    C.48

    D.54


    正确答案:C

  • 第3题:

    有以下程序段:include define MIN(x,y)(x)<(y)?(x):(y) void main() { int i,j,K; i

    有以下程序段:

    include<iostream.h>

    define MIN(x,y) (x)<(y)?(x):(y)

    void main()

    {

    int i,j,K;

    i=10;j=15;

    k=10*MIN (i,j);

    cout<<k<<endl;

    }

    程序执行后的输出结果是______。


    正确答案:15
    15

  • 第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题:

    若有如下程序; #define X 3 #define Y X+1 #define Z Y*Y/2 main() { int n; for(n=1;n<=Z;n++) printf("%d",n); } 则程序运行后的输出结果是( )

    A.12345

    B.1234567

    C.12345678

    D.123456


    正确答案:D

  • 第6题:

    以下程序的运行结果是()。includedefine MIN(x,y) (x)<(y)? (x):(y)main(){int i=10,j

    以下程序的运行结果是( )。 #include <stdio.h> #define MIN(x,y) (x)<(y)? (x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); }

    A.10

    B.15

    C.100

    D.150


    正确答案:B
    解析:该题考查函数的宏定义及三目运算符。表达式10*MIN(i,j)利用宏展开后为:10*ij?i:j,即10015?10:15,其值为15,然后将15赋给k。

  • 第7题:

    #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正确。

  • 第8题:

    请选出以下程序段的输出结果 ( )。include using namespace std;define MIN(x,y)(x)<

    请选出以下程序段的输出结果 ( )。 #include <iostream> using namespace std; #define MIN(x,y) (x)<(y) ?(x) : (y) int main () { int i,j,k; i=10; j=15; k=10*MIN(i,j); cout<<k<<end1; return 0; }

    A.15

    B.100

    C.10

    D.150


    正确答案:A
    解析:本题考查对宏定义的掌握程度。本题最常见的错误就是想当然地先把i、j代入MIN(i,j),得到值10,然后在计算表达式k=10*10=100,得到答案100。其实不然,在使用宏替换时,应该充分理解宏替换仅是简单地用所说明的字符串来替代对应的标识符。所以,应当先把宏定义代入到表达式k=10*MIN(i,j)中,得到:k=10*1015?10:15,再按照运算符的优先级和结合性计算,最后得到k=15。

  • 第9题:

    若输入60和13,以下程序运行后的输出结果是()。   #include    #define SURPLUS(x,y)  ((x)%(y))    main( )   { int x,y;    scanf(“%d,%d”,&x,&y);     printf(“%d”,SURPLUS(x,y));  } 


    正确答案:8

  • 第10题:

    若有以下宏定义:  #define  N  2  #define  Y(n)  ((N+1)*n)  则执行赋值语句z=2*(N+Y(5));后,变量z的值是多少?


    正确答案:变量z的值是34

  • 第11题:

    问答题
    若有以下宏定义:  #define  N  2  #define  Y(n)  ((N+1)*n)  则执行赋值语句z=2*(N+Y(5));后,变量z的值是多少?

    正确答案: 变量z的值是34
    解析: 暂无解析

  • 第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 MYSWAP(z,x,y){z=x;x=Y;Y=z;}

    以下程序段通过宏调用实现变量a、b内容的交换,请填空。

    float a=5,b=16,c;

    MYSWAP( 【 】,a,b) ;


    正确答案:c
    c 解析:本题关键在考生是不是了解宏的基本运用,在使用宏的时候明显少了—个实参。在定义宏的时候变量z是用来做中间变量的,题目中缺的变量就是一个中间变量c。

  • 第14题:

    #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标识符(形参衰) 形参表达式。其功能是:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

  • 第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题:

    下列定义中,不正确的有______。

    A.#define PI 3.141592

    B.#define S 345;

    C.int max(x,y);

    D.static char c; int x,y; { ...... }


    正确答案: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 X 5 #define Y X+1 #define Z Y*X/2以下程序段的输出结果是______。 int a;a=Y; printf("%d\n",Z); printf("%d\n",--a);

    A.7 6

    B.12 6

    C.12 5

    D.7 5


    正确答案:D
    解析:根据宏定义知:X=5,Y=X+1=6,Z=Y*X/2=X+1*X/2=7,a=Y=6,--a=5。

  • 第19题:

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

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


    正确答案:错误

  • 第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题:

    下列定义不正确的是().

    • A、#define PI 3.141592
    • B、#define S345
    • C、int max(x,y);  int x,y; {  }
    • D、static char c;

    正确答案:C

  • 第22题:

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

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

    正确答案:C

  • 第23题:

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

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