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
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
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
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
int a=1,b=2;
printf(“%d\\n”,MA(1+a+b)); }
A、 6 B、 8 C、 10 D、12
13、以下程序的输出结果为( )。 #include
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 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(\
)