有如下程序段:#include <stdio.h>#define Max(a,b) a>b?a:bmain(){int a=5,b=6,c=4,d;d=c+Max(a,

题目
有如下程序段:include define Max(a,b) a>b?a:bmain(){int a=5,b=6,c=4,d;d=c+Max(a,

有如下程序段: #include <stdio.h> #define Max(a,b) a>b?a:b main() { int a=5,b=6,c=4,d; d=c+Max(a,b) ; printf("%d",d) ; } 其输出结果为______。

A.10

B.5

C.6

D.编译错误

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

下列程序的输出结果是( )。

#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(P(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出 (int)(12.84)=12。

第2题:

现有如下程序段

#include "stdio.h"

int aa(int x,int y);

main()

{int a=24,b=16,c;

c=aa(a,b);

printf("%d\n",c);}

int aa(int x,int y)

{int w;

while(y)

{w=x%y;

x=y;

y=w;}

return x;}

则程序段的输出结果是

A.8

B.7

C.6

D.5


正确答案:A

第3题:

现有如下程序段

#include "stdio.h"

main()

{int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};

int i=0,j=5;

printf("%d\n",*(&a[0][0]+2*i+j-2));}

则程序的输出结果为

A.21

B.78

C.23

D.28


正确答案:A

第4题:

以下程序中的for循环执行的次数是( )。include "stdio.h"define N 2define M N+1define NUM (M+1)*M/2main(){ int i,n=0; for(i=1;i<=NUM;i++)printf("n");}

A.5

B.6

C.8

D.9


答案:C

第5题:

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

第6题:

现有如下程序段,则程序段的输出结果为 【16】 。

#include "stdio.h"

int fun()

{static int k;

return k;}

main()

{int m;

m=fun();

printf("%d\n",m);}


正确答案:
0

第7题:

下列程序的输出结果是 #include"stdio.h" #define N 3 #define M 3 void fun(int a[M][N]) { printf("%d\n",*(a[1]+2));} main() { int a[M][N]; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j); fun(a);}

A.3

B.4

C.5

D.6


正确答案:B
解析:若有以下定义:inta[3][4],i,j;且当0=i3,0=j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。

第8题:

下列程序的输出结果是

#include "stdio.h"

#define M(x,y) x%y

main()

{ int a,m=12,n=100;

a=M(n,m);

printf("%d\n",a--);}

A.2

B.3

C.4

D.5


正确答案:C
解析:带参数的宏定义命令行形式如下:
#define 宏名(形参表) 替换文本
在编译的时候编译预处理程序用"替换文本"来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。

第9题:

执行以下程序的输出结果是( )。 includedefine M 5define N M+M main(){int k; k=N*N*5;

执行以下程序的输出结果是( )。

include<stdio.h>

define M 5

define N M+M

main()

{ int k;

k=N*N*5;printf(”%d\n" ,k);

}


正确答案:55
55 解析:本题考查的重点是对宏定义的理解。#define指令定义一个标识符和一个串,编译程序在对C源程序处理时.发现该标识符都用该串替换,因此,在语句k=N*N*5将替换成k=M+M*M+M*5后,M被替换成5,从而k=5+5*5+5*5=55。

第10题:

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

更多相关问题