1、一、单选题1、C编译系统对程序中的宏展开是在()。A.编辑时进行的B.编译时进行的C.编译前预处理时进行的D.程序执行时进行的答案:C2、以下叙述不正确的是( )。A.全局变量存放在静态存储区B.在程序运行期间,全局变量所占存储单元的值永久保留C.全局变量可以由系统自动初始化D.当局部变量与全局变量重名时,全局变量起作用答案:D3、执行下列程序后的输出结果是( )。#include int a=3, b=4;void fun(int x1, int x2)printf(%d, %d, x1+x2, b);int main()int a=5, b=6;fun(a, b);return 0;A.3
2、, 4B.11,1C.11,4D.11,6答案:C4、在文件包含预处理的定义中,#include后的文件名用括起来时,寻找被包含文件的方式是( )。A.按系统指定的路径下搜索指定文件B.仅搜索当前目录C.先在源程序所在目录搜索,再按系统设定的标准方式搜索D.仅搜索源程序所在目录答案:A5、函数的形式参数系统默认存储类型说明是()。A.registerB.externC.staticD.auto答案:D6、下述程序的结果为( )。int f(int x) static int a=3; a+=x; return a;int main() int k=2,m=1,n; n=f(k); n=f(m)
3、; printf(%d, n); return 0;A.3B.9C.6D.4答案:C二、判断题7、在一个函数中定义的静态局部变量可以被另一个函数调用。(错)8、如果在一个文件内需要使用在其他文件中定义的全局变量,则需要在引用该变量的文件内,用extern对此变量做说明。(对)9、宏名没有作用域,在整个文件范围内都有效。(错)10、进行宏定义时,可以引用已经定义的宏名进行层层置换。(对)11、带参数的宏定义,进行宏展开时与函数调用主要区别是,只替换,不求值。(对)三、填空题12、预处理命令行都必须以(#)号开始 。13、局部静态变量是在静态存储区分配存储单元的,在整个程序运行期间始终占(内存 或
4、 存储)空间。14、下面程序的运行结果:(Howareyou)。#include #include void fun(char s) int i, j; for(i=j=0; si;i+) if(isalpha(si) sj+=si; sj= 0;int main() char str20= How are you!; fun(str); puts(str); return 0;其中,函数isalpha(ch)的功能是判断ch是否为字母,若是,函数值为1,否则为0。15、下列程序的运行结果:(11)。#define MOD(x,y) x%yint main() int z,a=15,b=100; z=MOD(b,a); printf(%dn,+z); return 0;