更多“若有如下程序; #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.12345B.1234567C.12345678D.123456”相关问题
  • 第1题:

    有以下程序: main() { int x=3, y=2, z=1; printf("% d\n", x/y&~z); } 程序运行后的输出结果是______。

    A.3

    B.2

    C.-1

    D.0


    正确答案:D
    解析:本题中表达式x/y&~z中运算符优先级的顺序为:~(按位取反)、/(除)、&(按位与),即首先执行~z得11111110,然后执行x/y=3/2=1,最后执行1&11111110=00000001 &11111110=00000000=0。

  • 第2题:

    以下程序的输出结果是______。 #define M(x,y,z) x*y+z main() { int a=1,b=2,c=3 printf("%d%d\n",M(a+b,b+c,c+a)); }

    A.19

    B.17

    C.15

    D.12


    正确答案:D
    解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

  • 第3题:

    下列程序的输出结果是()。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)putchar('\n') main() { int x=2; P(F(5)*x); }

    A.12

    B.13

    C.14

    D.16


    正确答案:A
    解析:本题考查带参数的宏的定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。

  • 第4题:

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

  • 第5题:

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

    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

  • 第6题:

    若有如下程序: main() {int x=9,y=4,n=0; switch(x%2) {case 0:n++;break; case 1:n++; case 0:n++;break; } printf("%d\n",n); } 则程序运行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.编译错误


    正确答案:D
    解析:一个switch语句中不能有两个相同的case分支。本题的switch语句中出现了两个case0,编译无法通过。所以应该选D。

  • 第7题:

    有以下程序:includemain(){int x=3,y=2,z=1; printf("%d\n",x/y&~z);程序运行后的

    有以下程序: #include <stdio.h> main() { int x=3,y=2,z=1; printf("%d\n",x/y&~z); 程序运行后的输出结果是( )。

    A.3

    B.2

    C.1

    D.0


    正确答案:D
    解析:&是按位“与”运算符,若参加运算的两个运算量的相应位都为1,则该位的结果值为1,否则为0。~是“取反”运算符,用来对一个二进制数按位取反,即将0变1,1变0。对于x/y&~z,先计算x/y的值,结果为1,用十六进制表示为0001;z用十六进制表示为0001,则~z为FFFE;最后进行&运算,整个表达式的值为0。

  • 第8题:

    若有宏定义如下: #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。

  • 第9题:

    若有如下程序: sub(int x) {int y=0; static int z=1; y+=x+2;z+=y+x; return(z); } main() {int t=1,n; for(n=0;n<3;n++)printf("%d,",sub(t)); } 则程序运行后的输出结果是 ( )

    A.5,5,5

    B.5,9,13,

    C.5,7,9,

    D.5,8,11,


    正确答案:B

  • 第10题:

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

  • 第11题:

    若有如下程序: main() {int x=3,y=4,z; z=(x+(y-=X*X)); printf("%d,%d\n",y,z); } 则程序执行后的输出结果是( )。

    A.-4,2

    B.-5,-2

    C.-5,-1

    D.4,-2


    正确答案:B
    解析:因为x的初始值为3,所以x*x=9,而y的初始值为4,所以y-=9后,y为-5,z=(x+(y-=x*x))=3+(-5)=-2。故程序执行后的输出结果是-5,-2,选项B正确。

  • 第12题:

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

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

  • 第13题:

    有以下程序 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++)的值。

  • 第14题:

    以下程序的输出结果是______。 #define M(x,y,z)x*y+z main() { int a=1,b=2,c=3; printf("%d\n",M(a+b,b+c,c+a)); }

    A.19

    B.17

    C.15

    D.12


    正确答案:D
    解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串。本题的M(aa=b,b+c,c+a)被字符串a+b*b+c+c+a代替。

  • 第15题:

    以下程序的输出结果是______。includedefine FUDGE(y)2.84+ydefine PR(A)printf("%d"

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

  • 第16题:

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

  • 第17题:

    以下程序的输出结果是______。include define FUDGE(y)2.84+ydefine 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”。

  • 第18题:

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

    define POW(r)(r)*?

    main()

    { int x=3,y=2,t;

    t=POW(x+y);

    printf("%d\n",t);

    }


    正确答案:
    解析: 本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。

  • 第19题:

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

  • 第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.5

    C.6

    D.8


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

  • 第21题:

    以下程序的输出结果是______。includedefine FUDGE(y) 2.84+ydefine PR(a)printf("%d

    以下程序的输出结果是______。 #include<stdio.h> #define FUDGE(y) 2.84+y #define PR(a) printf("%d\n",(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”。

  • 第22题:

    如下程序的运行结果是______。 include main() { int x=y=3,z=1; printf ("%d%d\n",(++

    如下程序的运行结果是______。 #include<stdio.h> main() { int x=y=3,z=1; printf ("%d%d\n",(++x,y++),z+2); }

    A.3 4

    B.4 2

    C.4 3

    D.3 3


    正确答案:D

  • 第23题:

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


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