C语言程序设计试题(2)1 下载本文

A、#define和printf都是C语句

B、#define 是C语句,而printf不是 C、printf是C语句,但#define不是 D、#define 和printf都不是C语句 4、编译预处理命令以___________结尾。

A、 ; B、 . C、 \\ D、回车

5、用C语言编写的程序是一种_________能运行的程序。 A、只需要经过编译就 B、只需要经过连接就 C、需要经过编译和连接才 D、不需要作任何处理就 6、以下叙述中正确的是( )。

A、 用#include包含的头文件的后缀不可以是“.a”

B、 若一些源程序中包含某个头文件,当该头文件有错时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译

C、 宏命令行可以看做是一行C语句

D、 C编译中的预处理是在编译之前进行的

7、下面是对宏定义的描述,不正确的是( )。

A、 宏不存在类型问题,宏名无类型,它的参数也无类型 B、 宏替换不占用运行时间

C、 宏替换时先求出实参表达式的值,然后代入形参运算求值 D、 其实,宏替换只不过是字符替代而已 8、以下正确的描述为( )。

A、 每个C 语言程序必须在开头使用预处理命令#include B、 预处理命令必须位于C源程序的首部 C、 在C语言中预处理命令都以“#”开头

D、 C语言的预处理命令只能实现宏定义和条件编译的功能 9、下列选项中不会引起二义性的宏定义是( )。

A、 #define POWER(x) x*x B、 #define POWER(x) (x)*(x) C、 #define POWER(x) (x*x) D、 #define POWER(x) ((x)*(x)) 10、以下程序的输出结果是( )。 #define f(x) x*x #include main() {

int a=6,b=2,c; c=f(a)/f(b); printf(“%d\\n”,c); }

A、 9 B、 6 C、 36 D、18

11、以下程序运行后,输出结果是( )。 #define PT 5.5

#defme S(x) PT*x*x #include main() {

int a=1,b=2;

printf(“%4.1f\\n”,S(a+b));

}

A、 49.5 B、 9.5 C、22.0 D、45.0

12、下列程序执行后的输出结果是( )。 #define MA(x) x*(x-1) #include main() {

int a=1,b=2;

printf(“%d\\n”,MA(1+a+b)); }

A、 6 B、 8 C、 10 D、12

13、以下程序的输出结果为( )。 #include #define SQR(x) x*x main() {

int a,k=3;

a=++SQR(k+1); printf(“%d\\n”,a); }

A、6 B、l0 C、 8 D、 9

14、对下面程序段,正确的判断是( )。 #define A 3

#define B(a) ((A+1)*a) ...

x=3*(A+B(7));

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

C、 x=21 D、 程序错误,宏定义不许有参数. 15、以下程序的输出结果为( )。 #include #define F(y) 3.84+y

#define PRINT(a) PR(a);putchar(?\\n?) main() {

int x=2;

PRINT(F(3)*x); }

A、 8 B、 9 C、 10 D、 11 二、判断题

1、 ( )预处理命令行必须以#开头,且最后要用分号结尾。 2、 ( )宏命令的处理占用编译时间,而不占用运行时间。 三、多选题

1、 下面是对宏定义的描述,正确的有( )。

A、 宏不存在类型问题,宏名无类型,它的参数也无类型 B、 宏替换不占用运行时间

C、 宏替换时先求出实参表达式的值,然后代入形参运算求值

D、 预处理命令行必须以#开头,且最后要用分号结尾 E、 宏命令的处理占用编译时间,而不占用运行时间 2、 以下叙述中不正确的是( )。

A、 用#include包含的头文件的后缀不可以是“.a”

B、 宏不存在类型问题,宏名无类型,它的参数也无类型 C、 宏命令行可以看做是一行C语句

D、 C编译中的预处理是在编译之前进行的 E、 在C语言中预处理命令都以“#”开头

第10章 指 针

一、 选择题

1、 有以下程序

void fun(char *a, char *b) { a=b; (*a)++; } main()

{ char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(\}

程序运行后的输出结果是:( ) A)Ab B)aa C)Aa D)Bb 2、 下列选项中正确的语句组是:( )

A)char s[8]; s={\)char *s; s={\C)char s[8]; s=\)char *s; s=\3、 已定义以下函数 fun(int *p) { return *p; } 该函数的返回值是:( )

A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值 4、 若有定义:int *p[3];,则以下叙述中正确的是:( )

A)定义了一个类型为int的指针变量p,该变量具有三个指针

B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C)定义了一个名为*p的整型数组,该数组含有三个int类型元素

D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素 5、 已定义以下函数

fun(char *p2, char *p1)

{ while((*p2=*p1)!='\\0'){ p1++;p2++; } } 函数的功能是:( )

A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2

C)对p1和p2两个指针所指字符串进行比较

D)检查p1和p2两个指针所指字符串中是否有'\\0' 6、 有以下程序: main()

{ int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&*(p+i)%2) {k=k+*(p+i); i++;} printf(\}

执行后输出的结果是:( )

A) 58 B) 56 C) 45 D) 24

7、 若有如下定义char a[10],*p=a,则对a数组中元素的不正确的引用是:(A)*&a[5] B)a+2 C)*(p+5) D)*(a+5) 8、 有以下程序

int *f(int *x,int *y) { if(*x<*y)

return x; else

return y; } main()

{ int a=7,b=8,*p,*q,*r;

p=&a; q=&b; r=f(p,q);

printf(\}

执行后输出结果是:( )

A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8 9、 有以下程序 main()

{ char *s[]={\

p=s[1];

printf(\}

执行后输出结果是:( )

A) n,two B) t,one C) w,one D) o,two 10、 有以下程序 main()

{ int x[8]={8,7,6,5,0,0}, *s;

s=x+3;

printf(\