单选题有以下程序:#include #define FNA(x) x*x#define FNB(x) x+xmain(){ int a=2,b=4; printf(%d,%d,FNA(FNB(a)),FNB(FNA(b)));}程序运行后的输出结果是(  )。A 8,16B 16,32C 8,32D 16,16

题目
单选题
有以下程序:#include #define FNA(x) x*x#define FNB(x) x+xmain(){ int a=2,b=4; printf(%d,%d,FNA(FNB(a)),FNB(FNA(b)));}程序运行后的输出结果是(  )。
A

8,16

B

16,32

C

8,32

D

16,16


相似考题
更多“有以下程序:#include <stdio.h>#define FNA(x) x*x#define FNB(x) x+x”相关问题
  • 第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题:

    以下程序的输出结果是______。 include define FUDGE(y)2.84+y define PR(a) printf(

    以下程序的输出结果是______。 #include<stdio.h> #define FUDGE(y) 2.84+y #define PR(a) printf("%d",(int)(a)) #define PRINT1(a) PR(a);putchar('\n') main() { int x=2; PRINT1(FUDGE(5)*x); }

    A.11

    B.12

    C.13

    D.15


    正确答案:B
    解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。

  • 第3题:

    以下程序的输出结果是______。 include define FUDGE(y)2.84+y define PR(a)printf("

    以下程序的输出结果是______。 #include<stdio.h> #define FUDGE(y) 2.84+y #define PR(a) printf("%d",(int)(a)) #define PRINT() PR(s) ;putchar('\n') main() { intx=2; PRINT1 (FUDGE(5)*x); }

    A.11

    B.12

    C.13

    D.15


    正确答案:B
    解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。

  • 第4题:

    有以下程序:includedefine N 5define M N+1define f(x)(x*M)main(){int i1,i2;i1=f

    有以下程序: #include<stdio.h> #define N 5 #define M N+1 #define f(x)(x*M) main() {int i1,i2; i1=f(2); i2=f(1+1); printf("%d%d",i1,i2); } 程序的运行结果是( )。

    A.12 12

    B.11 7

    C.11 11

    D.12 7


    正确答案:B
    解析:根据define的定义,可得f(2)=2*5+1=11,f(1+1)=1+1*5+17。

  • 第5题:

    有以下程序#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。

  • 第6题:

    有以下程序段: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

  • 第7题:

    有以下程序:includedefine X 5+6main(){int a=2,c;C=X*2:printf("%d",C);}程序运行后

    有以下程序: #include<stdio.h> #define X 5+6 main() {int a=2,c; C=X*2: printf("%d",C); } 程序运行后的输出结果是( )。

    A.17

    B.22

    C.16

    D.11


    正确答案:A

  • 第8题:

    有以下程序:include define f(x) x*xmain(){int i; i=f(4+4)/f(2+2); priatf("%d\n",

    有以下程序: #include <stdio.h> #define f(x) x*x main() { int i; i=f(4+4)/f(2+2); priatf("%d\n",i); } 执行后的输出结果是( )。

    A.28

    B.22

    C.16

    D.4


    正确答案:A
    解析:程序中的带参宏定义,替换展开后为i=4+4*4+4/2+2*2+2=4+16+2+4+2=28。

  • 第9题:

    以下程序的输出结果是()。includedefine F(x)2.84+xdefine w(y)printf("%d",(int)(y)

    以下程序的输出结果是( )。 #include<stdio.h> #define F(x)2.84+x #define w(y)printf("%d",(int)(y)) #define P(y)w(y) main() {int x=2; P(F(5)*x); }

    A.12

    B.13

    C.14

    D.16


    正确答案:A

  • 第10题:

    下列程序的运行结果是()。 include define ADD(x)x+x main() {int m=1,n=2,k=3; int s

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

    #include<stdio.h>

    #define ADD(x)x+x

    main()

    { int m=1,n=2,k=3;

    int s=ADD(m+n)*k;

    printf("s=%d",s);

    }

    A.sum=18

    B.sum=10

    C.sum=9

    D.sum=25


    正确答案:B
    解析:本题考查带参数的宏的定义及相关运算: S=m+n+m+n*k=1+2+1+2*3=10。

  • 第11题:

    执行下列程序后,输出的结果是()。 include define S(X)X*X void main() {iht a=9,k=3,

    执行下列程序后,输出的结果是( )。

    #include<stdio.h>

    #define S(X)X*X

    void main()

    { iht a=9,k=3,m=2;

    a/=S(k+m)/S(k+m);

    printf("%d",A) ;

    }

    A.1

    B.4

    C.9

    D.0


    正确答案:D
    解析:本题主要是考查带参数的宏定义及其相关运算。本题中宏运算过程如下:a=a/(S(k+m)/S(k+m))=a/(k+ m*k+m/k+m*k+m)=9/ (3+2*3+2/3+2*3+2)=0。

  • 第12题:

    有以下程序:include define F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b

    有以下程序: #include <stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。

  • 第13题:

    请选出以下程序段的输出结果______。includedefine MIN(x,y)(x)<(y)?(x):(y)main(){in

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

    A.15

    B.100

    C.10

    D.150


    正确答案:A

  • 第14题:

    有以下程序 include define F(X,Y) (X)*(Y) main( ) { int a=3, b=4; prin

    有以下程序

    #include <stdio.h>

    #define F(X,Y) (X)*(Y)

    main( )

    { int a=3, b=4;

    printf("%d\n", F(a++, b++));

    }

    程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:本题考查了带参数的宏定义。参数只是进行简单的替换而不是把其值求出后替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值。

  • 第15题:

    有以下程序includedefine F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b++

    有以下程序 #include<stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); 程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++) *(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。

  • 第16题:

    以下程序的输出结果是 ______。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。

  • 第17题:

    有以下程序includedefine PT3.5;define S(x)PT*x*x;main(){inta=1,b2;printf("%4.1f

    有以下程序 #include<stdio.h> #define PT3.5; #define S(x)PT*x*x; main() { inta=1,b2; printf("%4.1f\n",S(a+b); } 程序运行后的输出结果是______。

    A.14.0

    B.31.5

    C.7.5

    D.程序有错无输出结果


    正确答案:D
    解析:本题考查的是宏定义。带参数的宏定义是按#define命令行中指定的字符串从左到右进行转换,其定义的—般形式为:#define宏名(参数表)字符串,因此在程序中宏定义后面不能有分号“;”,所以程序运行出错,没有输出结果, 因此,选项D是正确的。

  • 第18题:

    以下程序的输出结果是_______。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。

  • 第19题:

    以下程序运行后,输出结果是______。 define P4.5 define S(x)P*x*x include main() {

    以下程序运行后,输出结果是______。 #define P4.5 #define S(x)P*x*x #include<stdio.h> main() { int a=2,b=3; printf("%.1f\n",S(a+b)); }

    A.49.5

    B.112.5

    C.18

    D.24


    正确答案:C

  • 第20题:

    有以下程序#include "stdio.h"#define M(x,y) (x)*(y) #define N(x,y) (x)/(y) main(){ int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);} 程序的运行结果是A.3 B.5C.6 D.8


    正确答案:A
    带参数的宏定义的一般形式为#define 宏名(参数表)字符串。题目中定义了两个宏“#define M(x,y) (x)*(y)”、“#define N(x,y) (x)/(y)”,即可以用M(x,y) 表示(x)*(y)运算,N(x,y)表示(x)/(y)运算。主函数main中关键是计算k=N(M(a,b),c),根据前述的宏,有k=a*b/c,计算后有k=30/8,取整后得到3。

  • 第21题:

    以下程序的输出结果是______。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。

  • 第22题:

    有以下程序:include define P 3void F(int x) {return(P* x* x); tmain( ){printf("

    有以下程序:#include <stdio.h>#define P 3void F(int x) { return(P* x* x); tmain( ){ printf(" % d \n" ,F(3 + 5) ); }程序运行后的输出结果是( )。

    A.192

    B.29

    C.25

    D.编译出错


    正确答案:D
    解析:return语句用于从被调函数带回一个函数值。void关键字表示“无类型”,即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。

  • 第23题:

    阅读下列程序段,则程序的输出结果为 #include"stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() { int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);}

    A.3

    B.5

    C.6

    D.8


    正确答案:A
    解析:带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。