B、main()函数必须放在其它函数之前 C、构成C程序的基本单位是函数
D、所有被调用的函数一定要在调用之前进行定义
18.在执行\文件包含\命令时,下列说法正确的是(A). A、作为一个源程序编译,得到一个目标文件. B、一个 include 命令可指定多个被包含文件. C、在编译时作为两个文件联结.
D、被包含的文件可以是源文件或目标文件.
19.在定义全局变量和局部静态变量的同时赋值,变量的初始化在(C)时确定的. A、运行 B、编辑 C、编译 D、调试
20.关于建立函数的目的,以下正确的说法是(A)。 A、提高程序的可读性 B、减少程序文件所占内存 C、减少程序的篇幅 D、提高程序的执行效率
21.以下函数调用语句中实参的个数是(D)。 func((e1,e2),(e3,e4,e5)); A、3 B、5
C、语法错误 D、2
22.设有宏定义#define SUB(x,y) (x)*y,且a=3,b=4,则 SUB(a++,b++) 的值为(D). A、13 B、16 C、20 D、12
23.在宏定义#define PI 3.14159中, 用宏名替换一个(A). A、字符序列 B、函数名 C、单精度数 D、双精度数
24.以下标识符中可以作为用户函数名的是(D). A、struct B、int
C、union D、go_to
25.以下叙述错误的是(B).
A、函数调用可以出现在一个表达式中 B、函数调用可以作为一个函数的形参 C、函数调用可以作为一个函数的实参 D、函数允许递归调用
26.若用数组名作为函数的实参,传递给形参的是(B)。 A、数组第一个元素的值 B、数组的首地址 C、数组元素的个数 D、数组中全部元素的值
27.在C语言程序中(B)。
A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数调用不可以嵌套 D、函数的定义和函数调用均可以嵌套
28.下列说法中正确的是(B).
A、函数调用不占运行时间,只占编译时间. B、宏替换不占运行时间,只占编译时间. C、有参数的宏定义,就是函数.
D、在定义宏时,宏名与带参数的括弧之间可以加空格.
29.函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是(C). A、实参与形参是双向传递 B、形参可以是表达式 C、形参和实参可以同名
D、实参类型一定要在调用时指定
30.以下错误的描述是:函数调用可以(D)。 A、出现在执行语句中 B、做为一个函数的实参 C、出现在一个表达式中 D、做为一个函数的形参
31.以下不正确的说法是:C语言规定(C)。 A、实参可以是常量,变量或表达式 B、实参可以为任何类型
C、形参可以是常量,变量或表达式 D、形参应与其对应的实参类型一致
32.下列形式,不属于编译预处理命令的是(D). A、#ifdef M B、#undef M C、#if (M>1) D、while (M>1)
33.执行下面程序后,输出结果是(D)。 main()
{ int a,b,c; a=45,b=27,c=0; c=max(a,b);
printf(\}
int max(int x,int y) { int z;
if(x>y) z=x; else z=y; return(z); } A、72 B、18 C、27 D、45
34.在C语言的函数中,下列正确的说法是(B)。 A、形参可以是常量和变量 B、可以有也可以没有形参 C、数组名不能作形参 D、必须有形参
二、判断题
1. 在C程序中, 函数既可以嵌套定义, 也可以嵌套调用。F
2. 在主函数中,必须要对被调用函数进行类型说明,否则在编译时会出现错误.F
3. 在程序中的第二个函数之后定义了某全局变量,则该程序的所有函数均可使用它.F 4. 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.F 5. 函数的返回值可以通过函数中的return语句获得。T
6. 通过return语句,函数可以带回一个或一个以上的返回值。F 7. C语言中,通过函数调用只能获得一个返回值.F ?1801 8. 变量根据其作用域的范围可以分作局部变量和全局变量.T
9. 当全局变量与局部变量同名时,在局部变量的作用域范围之内,局部变量起作用.T 10.对静态变量的初始化不是在编译阶段完成的.F
11.当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区.F
12.静态局部变量是在编译时被初始化的,故它只被赋初值一次.T 13.没有初始化的数值型静态局部变量的初值是不确定的值. F 14.对静态变量的初始化不是在编译阶段完成的.F 15.对静态数组的初始化是在编译阶段完成的. T
16.每次调用函数时,都要对静态局部变量重新进行初始化.F 17.函数调用结束后,静态局部变量所占用的空间被释放.F
18.在一个函数中定义的静态局部变量可以被另一个函数调用.F 19.在一个函数中定义的静态局部变量不能被另外一个函数所调用.T
20.当全局变量与局部变量同名时,在局部变量的作用域范围之内,全局变量起作用.F 21.计算机编译系统对宏定义在编译时进行语法检查.F
22.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义, 所以此宏定义是错误的。F
23.如果字符串与宏名相同,则不管其是否在双撇号内,都要进行宏替换.F 24.在定义宏时,在宏名与带参数的括弧之间不应加空格.T 25.一个include 命令只能指定1个被包含的文件。T
26.被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.F
27.被包含文件与其所在的文件(即用#include命令的源文件),在预编译后,成为同一个文件.T
28.如果被包含文件中有全局静态变量,它们在用#include命令的源文件中有效.T 29.#define 和printf 都不是C语句。T
30.数组名可以作为函数的实参和形参.T ?1556
31.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.F 32.数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值.F
三、填空题
1. C语言中一个函数由函数首部和_____两部分组成. 函数体 2. 函数不可以进行嵌套定义,但可以进行嵌套_____. 调用
3. 如果函数不要求返回值,可用_____来定义函数为空类型. void
4. 从函数的形式上看,函数分为无参函数和_____两种类型. 有参函数【8】 5. 函数调用语句func((e1,e2),(e3,e4,e5))中含有_____个实参. 2 6. 函数的_____调用是一个函数直接或间接地调用它自身. 递归 7. 函数调用时的实参和形参之间的数据是单向的_____传递.值
8. 静态变量和外部变量的初始化是在_____阶段完成的,而自动变量的赋初值是 在_____时进行的. (编译),(运行/函数调用/调用) ?1752
第9章 指针
一、单选题
1. 下列关于指针定义的描述,错误的是(A)。 A、指针是一种变量,该变量用来存放某个变量的值 B、指针是一种变量,该变量用来存放某个变量的地址值 C、指针变量的类型与它所指向的变量类型一致 D、指针变量的命名规则与标识符相同
2. 以下程序的输出结果是(A). main()
{char str[ ]=\A、68
B、不确定的值 C、字符D的地址 D、0
3. 若有 char s1[]=\则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是(C)。 A、if(strcmp(s2,s1)>0)puts(s2); B、if(strcmp(s2,t)>0)puts(s2); C、if(strcmp(s1,t)>0)puts(s2); D、if(strcmp(s1,s1)>0)puts(s2);
4. 若有说明:int *p,m=5,n;以下正确的程序段是(D)。 A、scanf(\B、p=&n;scanf(\C、p=&n;scanf(\D、p=&n;scanf(\
5. char h,*s=&h;可将字符H通过指针存入变量h中的语句是(A)。 A、*s='H'; B、s='H' C、*s=H; D、s=H;
6. 函数fun用于将一字符串按相反次序显示,则横线上的表达式为(D). void fun(char *s) { if(! *s) return; _____;
printf(\