下面程序的运行结果是()。 #define DOUBLE(r)   r*r  main( )  {   int a=1,b=2,temp;      temp=DOUBLE(a+b);      printf(“%d/n”,temp);  } A、3B、5C、7D、9

题目

下面程序的运行结果是()。 #define DOUBLE(r)   r*r  main( )  {   int a=1,b=2,temp;      temp=DOUBLE(a+b);      printf(“%d/n”,temp);  } 

  • A、3
  • B、5
  • C、7
  • D、9

相似考题
参考答案和解析
正确答案:B
更多“下面程序的运行结果是()。 #define DOUB”相关问题
  • 第1题:

    下面程序的运行结果是【17】。

    #define N 10

    #define s(x)x*x

    #define f(x)(x*x)

    main()

    { int i1,i2;

    i1=1000/s(N); i2=1000/f(N);

    printf("%d %d\n",i1,i2);

    }


    正确答案:
    1000 10

  • 第2题:

    程序中头文件type1.h的内容是( )。 #define N 5 #define M1 N*3 程序如下: #define "type1.h" #define M2 N*2 main() { int i; i=M1+M2; printf("%d\n",i); } 程序编译后运行的输出结果是( )。

    A.10

    B.20

    C.25

    D.30


    正确答案:C
    解析:i=M1+M2=N*3+N*2=5*3+5*2=25。

  • 第3题:

    下面程序的运行结果是 #include"iostream.h" #define sum(a,b) a*b void main( ) { int x; x=sum(1+2,3); cout<<x; }

    A.0

    B.9

    C.7

    D.5


    正确答案:C
    解析:理解宏定义,sum(a,Ba*b中a为1+2,b为3,故sum(1+2,3)=1+2*3,即宏定义的替换过程是原样替换。注意:选项B的计算方法是(1+2)*3=9是错误的,注意,不要随意的加括号。注意:宏定义与函数的区别。

  • 第4题:

    下面程序和运行运行结果是【 】。

    define N 10

    define s (x) x * x

    define f(x) (x * x)

    main( )

    { iht i1,i2;

    i1 = 1000/s(N); i2 = 1000/f(N);

    printf("%d %d\n",i1,i2);

    }


    正确答案:1000 10
    1000 10 解析:1000/s(N)<==>1000/10*10=1000,1000/f(N)<==>1000/(10*10)=10。

  • 第5题:

    以下程序的运行结果是( )。 define S(x)x*x main() {int k=1; while(k<=4) {printf("%d,",S(k)); k++;}


    正确答案:14916
    1,4,9,16, 解析:分析程序执行过程,第1次循环,k=1时,此时s(1)=1*1=1,然后k的值加1;第2次循环,k=2时,s(2)=2*2=4,然后k的值加1;第3次循环,k=3时,s(3)=3*3=9,然后k的值加1;第4次循环,k=4时,s(4)=4*4=16,然后k的值加1;当k=5时,条件不满足,退出循环。

  • 第6题:

    有以下程序#include <stdio.h>#define P 24;#define S(x) P*x+x;main(){ int a=2, b=2; printf("%d\n",S(a+b));}程序的运行结果是A.程序编译运行时报错,无法输出 B.54 C.96 D.100


    正确答案:A
    本题主要考查宏的定义。宏定义用一个标识符来表示一个字符串,这个字符串可以是常量、变量或表达式。在宏调用中将用该字符串代换宏名。宏定义中,我们主要需要注意以下几点:
    (1)同一宏名不能重复定义,除非这两个宏定义命令行完全一致。
    (2)定义宏时,记得其结尾处不要用分号隔开。
    (3)替换带参数的宏名时,一对圆括号必不可少,圆括号中实参个数应该与形参个数相同,若有多个参数,它们之间用逗号隔开。
    (4)宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。
    在本题中,定义宏时,出现了一个明显的错误,即在宏的定义后面用分号表示结束,这显然是不对的。程序编译时,系统会报错,无法完成输出。因此,本题的正确答案是A。

  • 第7题:

    程序中头文件typel.h的内容是: #define N 5 #define M1 N *3 程序如下: #include“typel.h” #define M2 N*2 main() { int i; i=M1+M2;Printf(“%d\n”,0; } 程序编译后运行的输出结果是:

    A.10

    B.20

    C.25

    D.30


    正确答案:C
    解析:编译预处理时,用“typel.h”中的内容替代命令#include“typel.h”。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即i=25,所以最后输出的i的值为25。

  • 第8题:

    下面的程序输出结果是( )。 #define U 5 #define V U+1 #define W V*V/2 main() {printf("%d ",W); printf("%d",5*W); }

    A.18 72

    B.10.5 52.5

    C.10.5 25.5

    D.10 30


    正确答案:D
    解析:宏W展开后为V*V/2,继续展开为U+1*U+1/2,再继续展开得5+1*5+1/2=5+5+0=10。而5*W展开后为5*5+1*5+1/2= 25+5+0=30。故应该选择D。

  • 第9题:

    若有如下程序; #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

  • 第10题:

    有以下程序: include define M 5 define f(x,y) x*y+M main( ) { int k; k=f(2,3)*f(2,3); printf("%d\n",k); } 程序的运行结果是( )。

    A.22

    B.41

    C.100

    D.121


    答案:B
    解析:宏定义中的函数在调用时只做简单的替换,不能进行任何修改。所以k=2*3+5*2*3+5=41。

  • 第11题:

    单选题
    有以下程序:#include #define F(x) 2.84+x#define PR(a) printf(%d,(int)(a))#define PRINT(a) PR(a);putchar('')main(){ PRINT(F(5)*2);}程序运行后的输出结果是(  )。
    A

    12

    B

    13

    C

    15

    D

    11


    正确答案: A
    解析:
    直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。将PRINT(F(5)*2)用PR(F(5)*2); putchar('')替换,将PR(F(5)*2)用printf(“%d”, (int)(F(5)*2))替换,再将F(5)用2.84+5替换,最后替换结果为printf(“%d”, (int)(2.84+5*2)); putchar(''),运行结果为:12<回车>。答案选择A选项。

  • 第12题:

    单选题
    下面程序的运行结果是()。 #define DOUBLE(r)   r*r  main( )  {   int a=1,b=2,temp;      temp=DOUBLE(a+b);      printf(“%d/n”,temp);  }
    A

    3

    B

    5

    C

    7

    D

    9


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

  • 第13题:

    以下程序的运行结果是( )。 define A 4 define B(x)A*x/2 main() {float c,a=8.0; c=B(A; printf("%f\n",C); }


    正确答案:16.0
    16.0

  • 第14题:

    下面程序的运行结果是( )。 define POW(r)r*r main() {int x=2,y=3,t; t=POW(x+y); printf("%d\n",t); }


    正确答案:11
    11

  • 第15题:

    程序中头文件type1.h 的内容是#define N 5#define M1 N*3程序如下:#define "type1.h"#define M2 N*2main (){ int i; i=M1+M2; printf("%d\n", i);) 程序编译后运行的输出结果是( )。

    A.10

    B.20

    C.25

    D.30


    正确答案:C
    解析:编译预处理时,用“type1.h”中的内容替代命令#include“type1.h”。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即i=25,所以最后输出的i的值为25。所以4个选项中C正确。

  • 第16题:

    下列程序的运行结果是______。

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

    main ()

    { int i=1;

    printf("%d,%d",POWER(i++),i);

    }


    正确答案:11
    1,1 解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

  • 第17题:

    下面的程序输出结果是 ______。 #define r 16 #if r==16 void p(int a) { printf("%x",a) ; } #else void p(int a) { printf("%d",a) ; } #endif main() { p(32); }

    A.32

    B.20

    C.编译时错误

    D.运行时错误


    正确答案:B
    解析:“#definer16”的作用是指定用标识符r来代替16,因此程序编译时只编译#if部分,故程序运行时,打印输出十六进制的32,即20。

  • 第18题:

    下面程序的运行结果是( )。

    define EXCH(a,B){int t;t=a;a=b;b=t;}

    main()

    {int x=1,y=2;

    EXCH(x,y);

    printf("x=%d,y=%d\n",x,y);

    }


    正确答案:x=2y=1
    x=2,y=1

  • 第19题:

    下面程序的输出结果是( )。 #define PI 3.1415 #define ARE(X) PI*x*x main() { int r=2; printf("%.2f",ARE(r+1)); }

    A.28.26

    B.28.26

    C.9.28

    D.9.28


    正确答案:C
    解析:带参数的宏展开是在编译时进行的,是一种纯粹文字性的替换过程。本题定义了一个带参数宏#defineARE(x)PI*x*x,在printf()函数中使用了这个宏,展开过程为:ARE(r+1)=>PI*r+1*r+1=>3.1415*r+1*r+1,其结果为3.1415*2+1*2+1=6.283+2+1=9.283,由于输出格式限定为两位小数,故输出结果为9.28,应该选择C。

  • 第20题:

    下面程序的输出结果是( ) #define PI 3.1415 #define ARE(x) PI*x*x main () {int r=2; printf("%f",ARE(r+1)); }

    A.28.26

    B.28.26

    C.9.28

    D.9.28


    正确答案:D

  • 第21题:

    程序中头文件typel.h的内容是 #define N 5 #define M1 N*3 #define "typel .h" #define M2 N*2 main ( ) { int i; i=M1+M2; printf ("%d\n", i ); } 程序编译后运行的输出结果是

    A.10

    B.20

    C.25

    D.30


    正确答案:C
    解析:本题考查的知识点是“文件包含”。编译预处理时,用“typel.h”中的内容替代命令ginclude”typel.h"。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即i=25,所以最后输出的i的值为25。所以4个选项中C正确。

  • 第22题:

    下面程序的运行结果是_____和_____。 include define N 10 define s(x) x * x define

    下面程序的运行结果是_____和_____。

    include<iostream.h>

    define N 10

    define s(x) x * x

    define f(x) (x * x)

    void main( )

    { int i1,i2;

    i1=1000/s(N) ;i2=1000/f(N) ;

    cout < < i1 < < " " < < i2;

    }


    正确答案:1000;10
    1000;10 解析:对于define宏定义语句,系统会在编译前进行替换。本题替换过程如下:
    i1=1000/s(N)
    i1=1000/s(10)
    i1=1000/10 * 10
    i1=1000
    i2=1000/f(N)
    i2=1000/f(10)
    i2=1000/(10 * 10)
    i2=10

  • 第23题:

    单选题
    有以下程序;#include #define N 2#define M N+1#define MUN (M+1)*M/2main(){ printf(%d,MUN);}程序运行后的输出结果是(  )。
    A

    8

    B

    9

    C

    5

    D

    6


    正确答案: A
    解析:
    带参数的宏的调用格式:宏名(实参表),替换过程是,用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。MUN被置换成(2+1+1)*2+1/2;程序的运行结果是8,答案选择A选项。