C语言第八章编译预处理答案,c语言第8章编译预处理及位运算习题答案(6页)-原创力文档...

PAGE

PAGE 3

编译预处理习题

单项选择题

在宏定义#define A 3.897678中,宏名A代替一个( )。

A) 单精度数 B) 双精度数 C) 常量 D) 字符串

以下叙述中正确的是

A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令

C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间

C语言的编译系统对宏命令的处理( )。

A) 在程序运行时进行的

B) 在程序连接时进行的

C) 和C程序中的其它语句同时进行的

D) 在对源程序中其它语句正式编译之前进行的

在文件包含预处理语句的中,被包含文件名用“< >”括起时,寻找被包含文件的方式是( )。

A) 直接按系统设定的标准方式搜索目录

B) 先在源程序所在目录搜索,再按系统设定的标准方式搜索

C) 仅仅在源程序所在目录搜索

D) 仅仅搜索当前目录

以下说法中正确的是

A)#define和printf都是C语句 B)#define是C语句,而printf不是

C)printf是C语句,但#define不是 D)#define和printf都不是C语句

#define A 3.897678

#include

main( )

{ printf(“A=%f ”,A);

}

程序运行结果为( )。

A) 3.897678=3.897678 B) 3.897678=A C) A=3.897678 D) 无结果

有宏定义:#define LI(a,b) a*b

#define LJ(a,b) (a)*(b)

在后面的程序中有宏引用:x=LI(3+2,5+8);

y=LJ(3+2,5+8);

则x、y的值是( )。

A) x=65,y=65 B) x=21,y=65 C) x=65,y=21

有以下程序

# define f(x) (x*x)

main()

{ int i1, i2;

i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;

printf("%d, %d\n",i1,i2);

}

程序运行后的输出结果是

A)64, 28 B)4, 4 C)4, 3 D)64, 64

以下程序的输出结果是

#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

有以下程序

#define N 5

#define M1 N*3

#define M2 N*2

main()

{ int i;

i=M1+M2; printf(“%d\n”,i);

}

程序编译后运行的输出结果是:

A) 10 B) 20 C) 25

有如下程序

#define N 2

#define M N+1

#define NUM 2*M+1

#main()

{ int i;

for(i=1;i<=NUM;i++)printf(“%d\n”,i);

}

该程序中的for循环执行的次数是

A) 5 B) 6 C) 7

位运算是对运算对象按二进制位进行操作的运算,运算的对象是____数据,以___的形式参与运算。

A) 整型 原码 B) 整型 补码 C)数值 原码 D) 数值 补码

在位运算中,若左移时丢弃的高位不包含1,则每左移一位,相当于_____。

A)操作数乘以2 B)操作数除以2 C)操作数除以4 D)操作数乘以4

设 int b=8;表达式(b>>2)/(b>>1)的值是________。

A) 0 B) 2 C) 4 D) 8

若定义unsigned int a=3,b=10;

printf("%d\n",a<<2|b==1);

则运行结果为________。

A)13 B)12 C

二.填空题

C提供的预处理功能主要有__宏定义____、__文件包含____、___条件编译__等三种。

C规定预处理命令必须以____#______开头。

在预编译时将宏名替换成____宏定义中的“字符串”___的过程称为宏展开。

预处理命令不是C语句,不必在行末加______;_____。

以头文件stdio.h为例,文件包含的两种格式为:_ # include〈st

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值