更多“以下程序的输出结果为【18】。 #defineJFT(x)x*x main() {inta,k=3; a=++JFT(k+1); printf ”相关问题
  • 第1题:

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

    有以下程序: #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
    解析:本题考查带参数的宏定义。对F(a++,b++)展开后,宏的返回值为3×4=12,这里a++,b++都是先使用变量值,再自增。

  • 第2题:

    阅读下列程序段,则程序的输出结果为 #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)。

  • 第3题:

    以下程序的输出结果是 main() { int a[] = {2, 4, 6, 8, 10}, y = 1, x, *p; p = &a[1]; for(x = 0; x < 3; x++) y += *(p + x); printf("%dn", y); }

    A.20

    B.18

    C.17

    D.19


    A当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[0][3]=0,a[1][2]=6,a[2

  • 第4题:

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

  • 第5题:

    有以下程序: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符合题意。