- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 预处理和指针
宏替换和文件包含
(1)以下叙述中正确的是
A)在C语言中,预处理命令行都以#开头
B)预处理命令行必须位于C源程序的起始位置
C)#include 必须放在C程序的开头
D)C语言的预处理不能实现宏定义和条件编译的功能
(2)有以下程序
#define PT 3.5 ;
#define S(x) PT*x*x ;
main() {
int a=1, b=2;
printf(%4.1f\n , S(a+b)); }
程序运行后的输出结果是
A)31.5
B)7.5
C)程序有错无输出结果
D)14.0
(3)以下关于宏的叙述中正确的是
A)宏定义必须位于源程序中所有语句之前
B)宏名必须用大写字母表示
C)宏调用比函数调用耗费时间
D)宏替换没有数据类型限制
(4)有以下程序
#include stdio.h
#define S(x) 4*(x)*x+1
void main()
{
int k=5,j=2;
printf(%d\n,S(k+j));
}
程序运行后的输出结果是
A)197
B)143
C)33
D)28
(5)设有宏定义: #define IsDIV(k,n) ( ( k%n==1) ? 1 : 0) 且变量m已正确定义并赋值,则宏调用: IsDIV(m,5) IsDIV(m,7) 为真时所要表达的是
A)判断m是否能被5和7整除
B)判断m被5或者7整除是否余1
C)判断m被5和7整除是否都余1
D)判断m是否能被5或者7整除
(6)有以下程序
#include stdio.h
#define SUB(a) (a)-(a)
main() {
int a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf(%d\n,d); }
程序运行后的输出结果是
A)-12
B)0
C)10
D)-20
(7)有以下程序
#include stdio.h
#define f(x) x*x*x
main() {
int a=3,s,t ;
s=f(a+1);
t=f((a+1));
printf(%d,%d\n,s,t); }
程序运行后的输出结果是
A)10,10
B)10,64
C)64,10
D)64,64
(8)有下列程序:
#include stdio.h
#define N 5
#define M N+1
#define f(x) (x*M)
main( )
{ int i1,i2;
i1=f(2);
i2=f(1+1);
printf(%d %d\n, i1,i2);
}
程序的运行结果是
A)12 7
B)12 12
C)11 11
D)11 7
(9)以下叙述中错误的是
A)预处理命令行的最后不能以分号表示结束
B)C程序对预处理命令行的处理是在程序执行的过程中进行的
C)#define MAX 是合法的宏定义命令行
D)在程序中凡是以“#”开始的语句行都是预处理命令行
(10)若程序中有宏定义行: #define N 100 则以下叙述中正确的是
A)宏定义行中定义了标识符N的值为整数100
B)上述宏定义行实现将100赋给标示符N
C)在运行时用100替换标识符N
D)在编译程序对C源程序进行预处理时用100替换标识符N
(11)若有以下程序
#define S(x) x*x
#define T(x) S(x)*S(x)
main() {
int k=5, j=2;
printf(%d,%d\n, S(k+j),T(k+j)); }
则程序的输出结果是
A)17,37
B)49,2401
C)17,289
D)49,289
(12)有以下程序
#include stdio.h
#define N 2
#define M N+1
#define NUM (M+1) * M/2
main() { printf(%d\n,NUM ); }
程序运行后的输出结果是
A)4
B)8
C)9
D)6
(13)有以下程序
#include stdio.h
#define SUB( X, Y ) (X+1)*Y
main() {
int a=3, b=4;
printf(%d\n,
SUB(a++ ,b++ )); }
程序运行后的输出结果是
A)20
B)12
C)16
D)25
(14)下面选项中关于编译预处理的叙述正确的是
A)凡是以#号开头的行,都被称为编译预处理命令行
B)预处理命令行必须使用分号结尾
C)预处理命令行不能出现在程序的最后一行
D)预处理命令行的作用域是到最近的函数结束处
(15)有以下程序
#include stdio.h
#define SQR(X) X*X
m
文档评论(0)