(E)do-while语句和while语句在任何情况下完成的功能等价 答案为BC
5. 在下列选项中,构成死循环的程序段是( )。
A) int i=100; B) int k=100; C) int s=36; while(1) do while(s); { i=i0+1; { k++; --s; if(i>100) break; }while(k>=1000); }
D) int x=10; E) for(;;); for(;1;x--) if(x==0)break; 答案为ACE
6章 编译预处理 一、判断题
1. C语言预编译命令#include
2. 宏定义不是C语句,不必在行末加分号。( )答案为√
3. C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。( )答案为√
4. 若有宏定义:#define M(x,y,z) x*y+z,则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+6+7。( )答案为×
5. #define与typedef的作用完全相同。( )答案为× 6. 宏定义后一定要有分号。( )答案为×
7. C语言的编译系统对宏命令的处理是在程序连接时进行的。( )答案为× 8. 宏定义不是C语句,不必在行末加分号。( )答案为√
二、单选题
1. 如果程序中有 #include \文件名\ 则意味着( )。
(A) 将\文件名\ 所指的该文件的全部内容,复制插入到此命令行处。 (B) 指定标准输入输出 (C) 宏定义一个函数 (D) 条件编译说明 答案为A
2. 以下有关宏替换的叙述不的是( )。
(A)宏替换不占用运行时间 (B)宏名无类型
(C)宏替换只是字符串替换; (D)宏替换是在运行时进行的 答案为D
3. 如果有#define f(x,y) x+y及int a=2,b=3;则执行printf(\ 后的值为( )。
(A)36 (B)25 (C)11 (D)13 答案为C
4. 若#include后面的文件名用双引号括起来,寻找被包含文件的方式是( )。 A) 先按系统设定的标准方式查找,再在当前目录中查找 B) 先在当前目录中查找,再按系统设定的标准方式查找 C) 只在当前目录中查找 D)只按系统设定的标准方式查找 答案为B
5. 若程序中有#include \文件名\则意味着( ) 。
A)将所指文件的全部内容,在次命令行出现的这一点上,插入原程序
B)指定标准输入输出 C)宏定义一个函数 D)条件编译说明 答案为A
6. 在宏定义#define PI 3.1415926中 ,用宏名PI代替一个( ) A)单精度数 B)双精度数 C)常量 D)字符串 答案为D
7. 执行下面的程序
#define SQR(X) X*X main()
{ int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(\ } 后,a的值是( )。
(A)10 (B)9 (C) 1 (D)0 答案为C 8. 下面程序的#include#definemain({int
输出
SUB(x,y)
结果是
( )
\ (x)*y
)
a=3,b=4;printf(\
A)12 B)16 C)15 D)13 答案为D
9. 以下程序运行后,输出结果是( )。 #include \ #define PT 5.5 #define s(x) pt*x*x main( )
{int a=1,b=2; print (“%4.lf\\n”,S(a+b));}
A)49.5 B)9.5 C)22.0 D)45.0 答案为B
10. 下列程序执行后的输出结果是( ) 。 #define MA(x) x*(x-1) main ( ) { int a=1,b=2;
printf(\
\\n\
A) 6 B) 8 C) 10 D)12 答案为B
11. 以下有关宏替换的叙述不的是( ) 。
A)宏替换不占用运行时间 B)宏名无类型 C)宏替换只是字符串替换 D)宏替换是在运行是进行的
答案为D
12. 以下描述中,的是( ) 。
A)预处理是指完成宏替换和文件包含中指定的文件的调用
B)预处理命令只能位于C源程序的开始
C)凡是以\标识的控制行都是预处理命令 D)预处理是在编译之前处理 答案为D
13. 以下程序的输出结果为( )。 #define MIN(x,y) (x)<(y)?(x):(y) main( ) {int i,j,k; i=10;j=15;
k=10*MIN(i,j);
A)15 B)100 C)10 D)150 答案为A
14. 如果有#define f(x,y) x+y 及 int a=2,b=3; 则语句:printf(\的执行结果是( ) A)36 B)25 C)11 D)13 答案为C
15. 执行下面的程序后,a的值是( )。
#define SQR(X)X*X main()
{int a=10,k=2,m=3; a/=SQR(m)/SQR(k);
printf(“%d、n”a);}
printf(\
A)10 B)1 C)5 D)0 答案为B
16. 设有以下宏定义: #define N 3
#define Y(n) (N+1*n)
则执行语句: z=2 *(N*Y(5+1));后,z的值为( )。 A)30 B)72 C)48 D)54 答案为D
17. 以下程序的输出结果是 ( )。 #define M(x,y,z) x*y+z main( )
{ int a=1,b=2, c=3; printf(\
M(a+b,b+c,
c+a));
}
A) 19 B) 17 C) 15 D) 12 答案为D
18. 以下程序的执行结果为( )。 #inlcude
#define NUM (M+1)*M/2
main( )
A)5 B)6 C)8 D)9
{pirntf(\
答案为C
19. 以下程序中,printf语句执行的次数是( )。 #define N 2 #define M N+1
#define NUM 2*M+1 main( ) {int i;
for(i=0;i<=NUM;i++) printf(\ }
A) 5 B) 6 C) 7 D) 8 答案为C 三、多选题
1. 以下说法中不的是( )。
A)宏名必须大写 B)预处理时要检查宏定义中的拼写错0 C)程序中所有与宏名相同的字符串都要进行置D)可以用#undef命令终止宏定义的作用域 E)宏定义有带参数和不带参数两种 答案为ABC
7章 数组
一、判断题
1. 如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1一定小于字符串s2。( )答案为√
2. strlen(s1)+ strlen(s2)等于strlen ( strcat (s1,s2))。( )答案为√ 二、单选题
1. 在下面关于一维数组的定义中,其中( )有语法错0。 A) int x[ ] = {1,2,3,4,5}; B) int x[5] = {0}; C) int x[ ]; D) int x[5]; 答案为C
2. 设有字符数组a,则的输入语句是( )。
(A) gets(''a''); (B) scanf(\ (C) scanf(\ (D) gets(\答案为C
3. 函数strcat(str1,str2)的功能是( )
A)将字符串str1连接到字符串str2之后 B)将字符串str2连接到字符串str1之后 C)将str2复制到字符串str1中。 D)将str1复制到字符串str2中。 答案为B
4. 若有定义:char a[30]= “china\\0\\t\\’\\\\”;则strlen(a)和sizeof(a)的值是( )。 (A) 30 30 (B) 5 30 (C) 13 30 (D) 5 13 答案为B
5. 函数调用“strcat(strcpy(str1,str2),str3)” 的功能是( )。 (A)将字符串str1复制到字符串str2后再连接到字符串str3之后 (B)将字符串str1连接到字符串str2后再复制到字符串str3之后 (C)将字符串str2复制到字符串str1后再将字符串str3连接到str1之后 (D)将字符串str2连接到字符串str1后再将str1复制到字符串str3中 答案为C
换