更多“单选题有以下程序:#include #define PT 3.5#define S(x) PT*x*xmain(){ int a=1,b=2; printf(%4.1f,S(a+b));}程序运行后的输出结果是(  )。A 14.0B 31.5C 7.5D 程序有错无输出结果”相关问题
  • 第1题:

    以下程序运行后,输出结果是define PT5.5define S(x)PT*x*xincludemain(){int a=1,b=

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

    A.49.5

    B.9.5

    C.22

    D.45.0


    正确答案:A

  • 第2题:

    以下程序运行后,输出结果是______。includedefine PT 5.5difine S(x) PT*x*xmain(){i

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

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B
    解析:C语言中宏替换只是字符替换,因此:S(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5。

  • 第3题:

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

  • 第4题:

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

  • 第5题:

    以下程序运行后,输出结果是( )。

    #include

    #define PT 5.5

    #define S(x)PT*x*X

    main

    { int a=1,b=2;

    printf("%4.1f\n",s(a+b));}

    A.49.5

    B.9.5

    C.22.0

    D.45.0


    正确答案:B
    本题考查函数调用,由于a+b没有被括起来,所以s(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5,故选择B。

  • 第6题:

    有下列程序: #include<stdi0.h> #definePT3.5; #defineS(x)PT*x*x; voidmain( ) (inta=1.b=2;printf("%4.1f\n",S(a+b));} 程序运行后的输出结果是( )。

    A.14.0

    B.31.5

    C.7.5

    D.程序有错,无输出结果


    正确答案:D
    D。【解析】这个程序有错误不能通过编译。①#define宏定义后不可有分号;②用分号隔开后,int只定义了a。b要重新定义。

  • 第7题:

    以下程序运行后,输出结果是______。 #define PT 5.5 #define S(x) PT*x*x main() { int a=1,b=2;printf("%4.1 f\n",S(a+b)); }

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B

  • 第8题:

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

    A.49.5

    B.9.5

    C.22.0

    D.45.0


    正确答案:B
    本题考查函数调用,由于a+b没有被括起来,所以s(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5,故选择B。

  • 第9题:

    以下程序运行后,输出结果是define PT 5.5define S(x)PT*x*xincludemain(){ int a=1,

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

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:A
    解析:宏替换用“#define宏名宏体”的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算。因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。注意:带参数的宏定义。

  • 第10题:

    单选题
    有以下程序:#include int fun(){ static int x=1; x*=2; return x;}main(){ int i,s=1; for(i=1;i<=2;i++)s=fun(); printf(%d,s);}程序运行后的输出结果是(  )。
    A

    0

    B

    1

    C

    4

    D

    8


    正确答案: C
    解析:
    对局部静态变量在编译时赋初值,以后每次调用函数时一直保持不变,只是保留上次函数调用结束时的值。在主函数中调用了两次fun()函数,第一次调用时x初值为1,执行x*=2后,x=2;第二次调用时初值为2,执行x*=2后,x=4。答案选择C选项。

  • 第11题:

    单选题
    有以下程序:#include#define f(x) x*x*xmain(){ int a=3,s,t; s=f(a+1);  t=f((a+1)); printf(%d,%d,s,t);}程序运行后的输出结果是(  )。
    A

    10,64

    B

    10,10

    C

    64,10

    D

    64,64


    正确答案: C
    解析:
    C语言中带参数的宏可以理解为用参数直接替换定义式中的变量,而不经过任何修改。所以s=f(a+1)=a+1*a+1*a+1=3+3+3+1=10,t=f((a+1))=(a+1)*(a+1)*(a+1)=4×4×4=64,所以有无括号的运算结果是不同的。答案选择A选项。

  • 第12题:

    单选题
    有以下程序:#include#define S(x) x *xmain(){ int k=5,j=2; printf(%d,%d,S(k+j+2),S(j+k+2));}程序的运行结果是(  )。
    A

    21,18

    B

    81,81

    C

    21,21

    D

    18,18


    正确答案: D
    解析:
    带参数的宏的替换过程是,用宏调用提供的实参字符串直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。S(k+j+2)被置换成k+j+2*k+j+2,计算时先计算2*k,结果为21;S(j+k+2)被置换成j+k+2*j+k+2,计算时先计算2*j,结果为18。程序的运行结果是21,18。答案选择A选项。

  • 第13题:

    以下程序运行后,输出结果是 #define PT 5.5 #define S(x)PT* x * x main() {int a=1,b=2; printf("%4.lf\n",S(a+b); }

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B
    解析:本题考察宏定义的使用,宏在使用是如同函数一样,但却是在编译时展开,而函数却是在运行时进行计算的。

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

    有以下程序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是正确的。

  • 第16题:

    以下程序运行后,输出结果是______。 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

  • 第17题:

    有以下程序

    #include<stdio.h>

    #define f(X)X*X*X

    main( )

    {int a=3,s,t;

    s=f(a+1);t=f((n+1));

    printf(“%d,%d\n”,s,t);

    }

    程序运行后的输出结果是

    A.10,64

    B.10,10

    C.64,10

    D.64,64


    正确答案:A
    解析:s=f(a+1)=a+1*a+1*a+1=10;s=f((a+1))=(a+1)*(a+1)*(a+1)=64。

  • 第18题:

    以下程序运行后,输出结果是() include define PT5.5 define S (x)PT* x * x

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

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B

  • 第19题:

    下列程序的运行结果是()。 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。

  • 第20题:

    有下列程序:

    include<stdi0.h>

    definePT3.5;

    defineS(x)PT*x*x;

    voidmain( )

    (inta=1.b=2;printf("%4.1f\n",S(a+b));}

    程序运行后的输出结果是( )。

    A.14.0

    B.31.5

    C.7.5

    D.程序有错,无输出结果


    正确答案:D

    D。【解析】这个程序有错误不能通过编译。①#define宏定义后不可有分号;②用分号隔开后,int只定义了a。b要重新定义。

  • 第21题:

    (35)有以下程序

    #include <stdio.h>

    #define S(x) 4*(x)*x+1

    main()

    { int k=5,j=2;

    printf("%d\n",S(k+j));

    }

    程序运行后的输出结果是

    A)197

    B)143

    C)33

    D)28


    正确答案:B

  • 第22题:

    单选题
    有以下程序:#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


    正确答案: A
    解析:
    带参数的宏定义不是进行简单的字符串替换,而是要进行参数替换不计算,只是进行简单的替换。替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。FNA(FNB(a))的替换过程为:FNB(a)*FNB(a) = a+a*a+a,则FNA(FNB(2))替换为2+2×2+2,计算结果为8。FNB(FNA(b))的替换过程为:FNA(b)+FNA(b) = b*b+b*b,FNB(FNA(b))替换为4×4+4×4 = 32。程序运行后的输出结果是8,32,答案选择C选项。

  • 第23题:

    单选题
    有以下程序:#include int fun(){ static int x=1; x*=2; return x;}main(){ int i,s=1; for(i=1;i<=3;i++)s*=fun(); printf(%d,s);}程序运行后的输出结果是(  )。
    A

    0

    B

    10

    C

    30

    D

    64


    正确答案: A
    解析:
    在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久性的存储单元,可以继续使用存储单元中原来的值。此题中第一次循环时,调用fun函数后x的值为2,s的值为2;第二次循环时,调用fun函数后x的值为4,s的值为2*4=8;第三次循环时,调用fun函数后x的值为8,s的值为8*8=64。答案选择D选项。