while(y) { w=x%y; x=y; y=w;} return x;}
A)8 B)7 C)6 D)5
7. 阅读下面程序段,则执行后的结果是( C )。
#include “stdio.h” fun (int a) { int x=5; x+=a++; print(“%d”,x); } main( ) { int a=3,x=1; fun(a); x+=a++; printf(“%d\\n”,x); }
A)82 B)83 C)84 D)85 8. 阅读下面程序段,则执行后的结果是( D )。
#include “stdio.h” int x=1; main( ) { int md=4; fun(md);
printf(“%d,%d\\n”,md,x);} fun(int k) { k+=x; x+=k; { char x=?B?;
printf(“%d,”,x-?A?); } printf(“%d,%d,”,k,x); }
A)1,6,5,4,6 B)1,5,4,6,4 C)1,4,6,5,4 D)1,5,6,4,6 9. 阅读下面程序段,则执行后的结果是( C )。
#include “stdio.h” main( )
{ fun3(fun1( ),fun2( ));} fun2( ) { int a=15;
return a;}
fun1( ) { int k=20; return k;} fun3(int a,int b) { int k; k=(a-b)*(a+b); printf(“%d\\n”,k);}
A)0 B)184 C)175 D)编译不通过 10.阅读下面程序段,则执行后的结果是( D )。
#include “stdio.h” main( )
{ int a=4,b=6,c=7; double d,fun(int,int,int); d=fun(a,b,c); printf(“%lf\\n”,d);} double fun(int a,int b,int c) { double s; s=a%b*c; return s;}
A)27 B)27.000000 C)28 D)28.000000
11.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( D a) 函数调用可以作为独立的语句存在
b) 函数调用可以作为一个函数的实参 c) 函数调用可以出现在表达式中 d) 函数调用可以作为一个函数的形参
12.以下不正确的说法是( D )。
a)在不同的函数中可以使用相同名字的变量 b)函数中的形参是局部变量
c)在一个函数内定义的变量只在本函数范围内有效
d)在一个函数内的复合语句中定义的变量只在本函数范围内有效
13.以下正确的说法是( C )。
a) 定义函数时,形参的类型说明可以放在函数体内
b) return后面的值不能为表达式
c) 如果函数值的类型与返回值类型不一致,以函数值类型为准 d) 如果形参与实参的类型不一致,以实参类型为准
14.以下正确的说法是( D )。
a) 函数可以嵌套定义但不能嵌套调用
。 )
b) 函数既可以嵌套调用也可以嵌套定义
c) 函数既可以不嵌套调用也不可以嵌套定义 d) 函数可以嵌套调用但不可以嵌套定义
15.C语言规定,函数返回值的类型是由( D )。
a)return语句中的表达式类型所决定的
b)调用该函数时的主调函数类型所决定 c)调用该函数时系统临时决定
d)在定义该函数时所指定的函数类型所决定
16.以下不正确的说法是( C,D )。
a)c程序中,函数可以直接或间接的调用自己
b)函数调用时,函数名必须与所调用的函数名一致
c)函数说明语句中的类型必须与函数返回值的类型一致 d)实参个数可以与形参个数不一致
17.以下不正确的说法是( C )。
a)C语言规定,不能在一个函数的内部再定义函数
b)在没有声明函数返回值类型的情况下,默认的函数返回值类型为int型 c)函数的类型可以是整型,实型,字符型,但不能是指针型 d)函数可以没有形参,但函数名后的一对括号不能省略
18.在函数调用过程中,如果如果funA调用了函数funB,函数funB又调用了函数funA,则( B )。
a)称为函数的直接递归调用 b)称为函数的间接递归调用
c)称为函数的循环调用
d)C语言中不允许这样的递归调用
19.言中规定,若对函数类型未加显式说明, 函数的隐含类型为( C )。
(A)void (B)double (C)int (D)char
20.以下叙述正确的是( C )。
a)在c程序中,main函数位于程序的最前面
b)c程序的每一行只能写一个语句
c)c语言本身没有输入输出语句
d)在对c程序进行编译的过程中,可以发现注释中的错误
二.填空题
1.一个源程序文件由 一个或多个 函数以及其他有关内容(如命令行、数据定义等)组成。一个 源程序 是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以 函数 为单位进行编译的。
2.所有函数都是平行的,即在定义函数时是分别进行的,是互相 独立 的。一个函数
并不从属于另一函数,即函数不能 嵌套 定义。函数间可以互相调用,但不能调用 main() 函数。main()函数是系统调用的。
3.从用户使用的角度看,函数有两种: 标准函数 、 用户定义的函数 用以解决用户的专门需要。
4.从函数的形式看,函数分两类: 无参函数 、 有参函数 。 5.在C语言中,实参向形参的数据传递是 值传递 ,单向传递,只由 实参 传给 形参 ,而不能由 形参 传回来给 实参 。在内存中,实参单元与形参单元 是 不同 单元。
6.如果实参表列包含多个实参,则各参数间用逗号隔开。实参与 形参 的个数应相等, 类型 应匹配。实参与形参按顺序对应,一一传递数据。
7.声明的作用是把 函数名 、函数参数的 类型 和参数 个数 等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法。
8.在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的 递归 。 9.在一个函数内部定义的变量是 内部变量 ,它只在 本函数 范围内有效,也就是说只有在 本函数 内才能使用它们,在此函数以外是不能使用这些变量的。这称为 局部变量 。
10.形式参数也是 局部 变量。 11.求两个数中较大的一个数。
#include
int max(int x, int y); int a,b,c;
scanf(“%d,%d”,&a,&b); c=max(a,b);
printf(“max is %d”,c); }
int max (int x, int y) { int z; z=x>y? x:y; return(z) ; }
12.求两个数中较小的一个数。
#include
int min(int x, int y); int a,b,c;
scanf(“%d,%d”,&a,&b); c= min(a,b) ; printf(“min is %d”,c); }
int min (int x, int y) { int z; z=x 13.求两个数的最大公约数。 #include “stdio.h” int aa(int x,int y); main( ) { int a=24,b=16,c; c=aa(a,b); printf(“%d\\n”, c ); } int aa(int x,int y) { int w; while(y) { w=x%y; x=y; y=w;} return( x); } 14. 求两个数的最大公约数。 #include “stdio.h” int aa(int x,int y); main( ) { int a=24,b=16,c; c=aa(a,b); printf(“%d\\n”,c); }