C+语言试题库(8)

2019-03-23 14:35

B

以下程序的运行结果是 #include \

#define FUDGE(y) 2.84十y

#define PR(a) printf(\#define PRINT1(a) PR(a);putchar(\main()

{int x=2;

PRINT1(FUDGE(5)*x); }

A)11 B)12 C)13 D)15 *【题8.7】 D

以下有关宏替换的叙述不正确的是

A)宏替换不占用运行时间 B)宏名无类型

C)宏替换只是字符替换 D)宏名必须用大写字母表示 *【题8.8】 D

C语言的编译系统对宏命令的处理是 A)在程序运行时进行的 B)在程序连接时进行的

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

D)在对源程序中其它成份正式编译之前进行的 *【题8.9】 D

若有宏走义如下:

#define X 5 #define Y X+1 #define Z Y*X/2

则执行以下printf语句后,输出结果是 int a; a=Y;

printf(\printf(\

A)7 B)12 C)12 D)7 6 6 5 5 *【题8.10】 B

若有以下宏定义: #define N 2

#define Y(n)((N十1)*n)

则执行语句z=2*(N+Y(5));后的结果是 A)语句有错误 B)z=34 C)z=70 D)z无定值 *【题8.11】 B

若有宏定义: #define MOD(x,y) x%y 则执行以下语句后的输出为 int z,a=15,b=100; z=MOD(b,a);

printf(\

A)11 B)10 C)6 D)宏定义不合法 *【题8.12】 C

以下程序的运行结果是

#define MAX(A,B) (A)>(B)?(A):(B) #define PRINT(Y)printf(\main()

{int a=1,b=2,c=3,d=4,t; t=MAX(a+b,c+d); PRINT(t);

}

*【题8.13】 D

以下程序段中存在请误的是 A)#define array_size l00 int arrayl [array_size]; B)#define PI 3.14159

#define S(r) PI*(r)*(r) area=s(3.2);

C)#define PI 3.1415

#define S(r) PI*(r)*(r) area=S(a+b); D)#deine PI 3.4159

#define S(r) PI*(r)*(r) area=S(a); *【题8.14】 A

请读程序:

#include

#define MUL(x,y) (x)*y main()

{int a=3,b=4,c; c=MUL(a++,b++); printf\ }

上面程序的输出结果是

A)12 B)15 C)20 D)16 *【题8.15】 C

#define能作简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的 函数f,正确的宏定义是

A)#define f(x) 4*x*x+3*x+2 B)#define f 4*x*x+3*x+2 C)#define f(a)(4*a*a+3*a+2) D)#define (4*a*a+3*a+2)f(a) *【8.16】 B

对下面程序段: #define A 3

#define B(3)((A+1)*a) x=3*(A十B(7)); 正确的判断是

A)程序错误,不许嵌套宏定义 B)x=93 C)x=21

D)程序错误,宏定义不许有参数 *【题8.17】 D

以下程序中,第一个输出值是8,第二个输出值是 #include #define M 3

#define N (M+1) #define NN N*N/2 main()

{printf(\ printf(\ }

A)17 B)18 C)30 D)40 *【题8.18】 B

以下程序的输出结果为 。 #inc1ude #deflne F(y) 3.84+y

#define PR(a) printf(\#define PRINT(a) PR(a);putchar('\\n’); main()

{int x=2;

PRINT(F(3)*x); )

A)8 B)9 C)10 D)11 *【题8.19】 B

以下程序的输出结果为 define PT 5.5

#define S(x) PT*x*x main()

{int a=1,b=2;

printf(\十b)); }

A)12.O B)9.5 C)2.5 D)33.5 *【题8.20】 D

以下在任何情况下计算平方数时都不会引起二义性的宏定义是 A)#define POWER(x) x*x

B)#define POWER(x) (x)*(x) C)#define POWER(x) (x*x)

D)#define POWER(x) ((x)*(x)) *【题8.21】 B

主\文件包含\预处理语句的使用形式中,当#include后面的文件名用\(双引号)括起时,寻找被包含文件的方式是 A) 直接按系统设定的标准方式搜索目录

B) 先在源程序所在目录搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录 *【题8.22】 C

在\文件包含\预处理语句的使用形式中,当#include后面的文件名用< > (尖括号)括起时,寻找被包含文件的方式是 A)仅仅搜索当前目录

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

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

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

请读程序:

#define LETTER 0 main()

{char str[20]=\ while ((c=str[i]!='\\0')

{i++; #if LETTER if(c>='a'&&c<='z') c=c-32; #else if(c>='A' &&c<='Z') c=c+32; #endif printf(\ } }

上面程序的运行结果是

A)C Language B)c language C)C LANGUAGE D)c lANGUAGE *【题8;24】 C

以下正确的描述是

A)C语言的预处理功能是指完成宏替换和包含文件的调用 B)预处理指令只能位于C源程序文件的首部

C)凡是C源程序中行首以\标识的控制行都是预处理指令 D)C语言的编译预处理就是对源程序进行初步的语法检查 *【题8.25】 D

C语言提供的预处理功能包括条件编译,其基本形式为: #XXX标识符 程序段1 #else 程序段2 #endif

这里XXX可以是

A)define或include B)ifdef或include

C)ifdef或ifndef或define D)ifdef或ifndef或if *【题9.1】 B

以下程序的运行结果是

sub(int x,int y,int *z) {*z=y-x;} main()

{int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

prinif(\A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7 *【题9.2】 C

执行以下程序后,b的值为【1】 main( )

{int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m;

b=(-*pl)/(*p2)+7; printf(\ printf(\ }

A)5 B)6 C)7 D)10 *【题9.3】 D

下面程序应能对两个整型变量的值进行交换。以下正确的说法是 main( )

{int a=10,b=20; printf(\ swap(&a,&b); prinif(\ swap(int p,int q) {int t; t=p;p=q;q=t;} A)该程序完全正确

B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执 行语句不变)即可 D)以上说法都不正确 *【题9·4】 D

有四组对指针变量进行操作的语句,以下判断正确的选项是 (1)int *p,*q;q=p;

int a,*p,*q;p=q=&a; (2)int a,*p,*q;q=&a;p=*q; int a=20,*p;*p=a;

(3)int a=b=0,*p;p=&a;b=*p;

int a=20,*p,*p=&a;*p=*q; (4)int a=20,*p;*q=&a;p=q; int p,*q;q=&q;

A)正确:(1); 不正确:(2),(3),(4) B)正确:(1),(4); 不正确:(2),(3) c)正确:(3); 不正确:(1),(2),(4) D)以上结论都不正确 *【题9·5】 B

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 main()

{int *p,*q,a,b; p=&a;

printf(\ scanf(\ }

A)*p表示的是变量p的地址

B)*p表示的是变量a的值,不是变量a的地址 C)*p表示的是指针变量p的值

D)*p只能用来说明p是一个指针变量 *【题9.6】 D

以下程序有错,错误原因是 main()

{int *p,i; char *q,ch; p=&i; q=&ch; *p=40; *p=*q; }

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句 C)q没有指向具体的存储单元,所以*q没有实际意义

D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句 *【题9.8 ] B

已有定义int k=2; int *ptr1,*ptr2;且ptrl和Ptr2均已指向变量k,下 面不能正确执行的赋值语句是 A)k=*ptrl+*ptr2; B)ptr2=k

c)ptrl=ptr2; D)k=*ptrl*(*ptr2); *【题9.9】 B

变量的指针,其含义是指该变量的 A)值 B)地址

c)名 D)一个标志 *【题9·10】 D

若已定义int a=5;下面对(1),(2)两个语句的正确解释是 (1)int *p=&a; (2)*p=a;

A)语句(1)和(2)中的*P含义相同,都表示给指针变量p赋值

B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p

C)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给指针变量p D)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋于*p *【题9;11] D

若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是 A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point *【题9。13】 D


C+语言试题库(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:七年级英语暑假专题 浅谈 whats…的结构、wheres...的结构 外研

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: