C语言函数部分练习题
- 格式:doc
- 大小:71.50 KB
- 文档页数:30
一、选择题1.以下正确的说法是(C)。
建立函数的目的之一是A)提高程序的执行效率。
B)提高程序的可读性。
C)减少程序的篇幅D)减少程序文件所占的内存2.以下正确的说法是(B)。
A)用户若需调用标准库函数,调用前必须重新定义。
B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包含到用户源文件中,系统自动去调。
3.以下正确的函数定义形式是(A)。
A)double fun(int x, int y)B)d ouble fun(int x; int y)C)d ouble fun(int x, int y);D)double fun(int x,y);4.以下正确的说法是(A)。
在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参时虚拟的,不占用存储单元5.若调用一个函数,且此函数中没有return语句,则正确的说法是(A)。
该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值6.以下正确的说法是(C)。
A)定义函数时,形参的类型说明可以放在函数体内B)r eturn后边的值不能为表达式C)如果函数值的类型与返回值的类型不一致,以函数值类型为准D)如果形参与实参的类型不一致,以实参类型为准7.C语言规定,简单变量作实参时,它和对应形参之间的数据传递方式是(B)。
A)地址传递B)单向值传递实参传给形参C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式8.以下程序有语法性的错误,有关错误原因的正确的说法是(C)。
main(){ int G=5, k;void prt_char(); void是不返回值,但却有k=prt_char(G)…..k=prt_char(G);…..}A)语句void prt_char();有错,它是函数调用语句,不能用void说明B)变量名不能用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线9.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。
.习题一、选择题1、以下只有在使用时才为该类型变量分配内存的存储类说明是----____B______。
A.auto 和staticB.auto和registerC.register和staticD.extern和register2、下述程序的输出结果是____A____。
long fun(int n){ long s;if(n==1|| n==2)s=2;else s=n-fun(n-1);return s;}main(){ printf(“%ld\n”,fun(3));}A.1B.2C.3D.43、C语言中形参的默认存储类别是____A________。
A.自动(auto)B.静态(static)C.寄存器(register)D.外部(extern)4、下面对函数嵌套的叙述中,正确的是_____B_____。
A.函数定义可以嵌套,但函数调用不能嵌套B.函数定义不可以嵌套,但函数调用可以嵌套14/ 1.C.函数定义和函数调用均不能嵌套D.函数定义和函数调用均可以嵌套5、下面关于形参和实参的说法中,正确的是____B_____。
A.形参是虚设的,所以它始终不占存储单元B.实参与它所对应的形参占用不同的存储单元C.实参与它所对应的形参占用同一个存储单元D.实参与它所对应的形参同名时可占用同一个存储单元6、关于全局变量的作用范围,下列说法正确的是____D_______。
A.本程序的全部范围B.离定义该变量的位置最接近的函数C.函数内部范围D.从定义该变量的位置开始到本文件结束7、调用一个函数,此函数中没有return语句,下列说法正确的是:该函数____D____。
A.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值8、以下函数调用语句中含有____B_____个实参。
fun ((exp1,exp2),(exp3,exp4,exp5));A.1B.2C.4D.59、以下程序的输出结果是__C______。
习题、选择题1、以下只有在使用时才为该类型变量分配内存的存储类说明是------- ___ B _____A. auto 和staticB.auto 和registerC.register 和staticD.extern 和register2、下述程序的输出结果是_____ A ___ 。
long fun (int n){ long s;if(n==1|| n==2 )s=2 ;else s=n-fun (n-1 );return s;}main (){ printf (“ %ldn”,fun (3));}A. 1B.2C.3D.43、C 语言中形参的默认存储类别是______ A ______A. 自动(auto )B. 静态(static )C.寄存器(register)D.外部(extern )4、下面对函数嵌套的叙述中,正确的是________ B ___A. 函数定义可以嵌套,但函数调用不能嵌套B. 函数定义不可以嵌套,但函数调用可以嵌套C. 函数定义和函数调用均不能嵌套D. 函数定义和函数调用均可以嵌套5 、下面关于形参和实参的说法中,正确的是 ______ B ____ 。
A. 形参是虚设的,所以它始终不占存储单元B. 实参与它所对应的形参占用不同的存储单元C. 实参与它所对应的形参占用同一个存储单元D. 实参与它所对应的形参同名时可占用同一个存储单元6、关于全局变量的作用范围,下列说法正确的是______ D ______ 。
A.本程序的全部范围B.离定义该变量的位置最接近的函数C.函数内部范围D.从定义该变量的位置开始到本文件结束7、调用一个函数,此函数中没有return 语句,下列说法正确的是:该函数 ________ DA.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值8、以下函数调用语句中含有____ B ____ 个实参。
fun ((exp1,exp2),(exp3 ,exp4,exp5 ));A.1B.2C.4D.59、以下程序的输出结果是__C _____ 。
C语言函数练习题一、选择题1.在函数的说明和定义时若没有指出函数的类型,则( A )A: 系统自动地认为函数的类型为整型。
B: 系统自动地认为函数的类型为字符型。
C: 系统自动地认为函数的类型为实型。
D: 编译时会出错。
2.下面正确的函数定义形式是( A )A: double fun(int x,int y) { }B: double fun(int x;int y) { }C: double fun(int x,int y);D: double fun(int x,y);3. 若调用一个函数,且此函数中没有return 语句,则正确的说法是:该函数( D )A: 没有返回值;B: 返回若干个系统默认值;C: 能返回一个用户所希望的函数值;D: 返回一个不确定的值4. C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是( B )A: float 型B: int 型C: long 型D: double 型5. C语言规定,函数返回值的类型是由( D )(二级题)A: return 语句中的表达式类型所决定;B: 调用该函数时的主调函数类型所决定;C: 调用该函数时系统临时决定;D: 在定义该函数时所指定的函数类型所决定6.下面函数调用语句含有实参的个数为( B )func((exp1,exp2),(exp3,exp4,exp5));A: 1B: 2C: 5D: 47. 以下错误的描述是( D )函数的调用可以A: 出现在执行语句中;B: 出现在一个表达式中;C: 为一个函数的实参;D: 作为一个函数的形参;8.若函数的形参为一维数组,则下列说法中正确的是( B )A: 调用函数时的对应实参必为数组名。
B: 形参数组可以不指定大小。
C: 形参数组的元素个数必须等于实参数组的元素个数。
D: 形参数组的元素个数必须多于实参数组的元素个数。
9.下面叙述中正确的是( C )A: 对于用户自己定义的函数,在使用前必须加以说明。
一、选择题1. 以下程序的运行结果是。
#include<stdio.h>int fun(int n){int m=0,f=-1,i;for(i=1;i<=n;i++){m=m+i*f;f=-f;}return m;}int main(){printf("m=%d\n",fun(10));return 0;}A.m=5 B.m=-6 C.m=6 D.m=-52. C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是。
A.地址传递B.单项值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式3. 以下程序有语法性错误,有关错误原因的正确说法是。
#include<stdio.h>int main(){int G=5,k;void prt_char ( );...k=prt_char(G);...}A.语句void prt_char( ); 有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线4. 以下程序的运行结果是。
#include<stdio.h>int fun(int a,int b){if(a>b) return (a+b);else return (a-b);}int main(){int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);return 0;}A.-16 B.-17 C.17 D.165. 以下程序的功能是计算函数F(x,y,z) = (x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include<stdio.h>#include<math.h>float f(float,float);int main( ){float x,y,z,sum;scanf("%f%f%f",&x,&y,&z);sum=f( )+f( );printf("sum=%f\n",sum);return 0;}float f(float a,float b){float value;value=a/b;return value;}A.x-y, x+y B.x+y, x-y C.z+y, z-y D.z-y, z+y A.x-y, x+y B.x+y, x-y C.z+y, z-y D.z-y, z+y 6. 以下程序可选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。
第六部分函数一、单项选择题1.C语言中的函数返回值的类型是由(D)决定A.return语句中的表达式B.调用函数的主调函数C.调用函数时临时D.定义函数时所指定的函数类型2.下面不正确的描述是(B)。
A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是(D)A.地址传递B.值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4.下面的函数调用语句中含有(A)个实参inta,b,c;intsum(intx1,intx2);……total=sum((a,b),c);A.2B.3C.4 D.55.在C语言中(C)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6.关于C语言中的return语句正确的是(C)A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D)A.inta(floatx[],intn)B.inta(float*x,intn)C.inta(floatx[10],intn)D.inta(floatx,intn)8.在C语言中,函数的数据类型是指(A)A.函数返回值的数据类型B.函数形参的数据类型C.调用该函数时的实参的数据类型D.任意指定的数据类型9.已知如下定义的函数:fun1(a){printf("\n%d",a);}则该函数的数据类型是(C)A.与参数a的类型相同B.void型C.整型D.无法确定10.定义一个函数实现交换x和y的值,并将结果正确返回。
函数一、选择题1.在c语言中以下不正确的说法是:()A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致2.以下程序有语法性错误,有关错误原因的正确说法是:()int main(){ int G=5,k;void prt_char();……k=prt_char(G);……}A.语句void prt_char();有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线3.以下正确的说法是:()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参5.以下所列的各函数首部中,正确的是:()A、 void play(var :Integer,var b:Integer)B、 void play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)6.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:()A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定7.有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}int main(){ int x=10, y=20,z=30;fun (x,y,z);printf("%d,/%d,%d\n",x,y,z);return 0;}输出结果是:()A、30,20,10B、10,20,30C、456,567,678D、678,567,4568.下述函数定义形式正确的是()。
本题序号:80下面程序的输出结果是____。
#include <stdio.h>main( ){ int x=10;{ int x=20;printf ("%d,", x);}printf("%d\n", x);}A 10,20B 20,10C 10,10D 20,20参考答案B本题序号:107下面程序的输出结果是____。
main(){ int a=2,i;for(i=0;i<3;i++)printf("%4d",f(a));}f(int a){ int b=0;static int c=3;b++;c++;return(a+b+c);}A 7 7 7B 7 10 13C 7 9 11D 7 8 9参考答案D本题序号:108下面程序的输出结果是____。
#include <stdio.h>try( ){ static int x=3;x++;return(x);}main( ){ int i, x;for(i=0; i<=2; i++ )x=try( );printf("%d\n", x);}A 3B 4C 5D 6参考答案D本题序号:109下面程序的输出结果是____。
#include <stdio.h>main( ){int x=1;void f1( ), f2( );f1( );f2(x);printf("%d\n", x);}void f1(void){int x=3;printf("%d ", x);}void f2( x )int x;{printf("%d ", ++x);}A 1 1 1B 2 2 2C 3 3 3D 3 2 1参考答案D本题序号:126下列叙述中错误的是A 主函数中定义的变量在整个程序中都是有效的。
B 在其它函数中定义的变量在主函数中也不能使用。
C 形式参数也是局部变量。
D 复合语句中定义的变量只在该复合语句中有效。
参考答案A本题序号:127若函数的形参为一维数组,则下列说法中正确的是A 调用函数时的对应实参必为数组名。
B 形参数组可以不指定大小。
C 形参数组的元素个数必须等于实参数组的元素个数。
D 形参数组的元素个数必须多于实参数组的元素个数。
参考答案B本题序号:128在函数的说明和定义时若没有指出函数的类型,则A 系统自动地认为函数的类型为整型。
B 系统自动地认为函数的类型为字符型。
C 系统自动地认为函数的类型为实型。
D 编译时会出错。
参考答案A本题序号:135下面叙述中正确的是A 对于用户自己定义的函数,在使用前必须加以说明。
B 说明函数时必须明确其参数类型和返回类型。
C 函数可以返回一个值,也可以什么值也不返回。
D 空函数不完成任何操作,所以在程序设计中没有用处。
参考答案C本题序号:136有如下程序:#incl ude “stdio.h”int m,n;ps1(){ printf(“please input the first code:”);scanf(“%d”,&m);m++;}ps2(){ printf(“please input the second code:”);scanf(“%d”,&n);n--;}main(){ int a=ps1();int b=ps2();printf(“%d,%d”,a,b);return(1);}则下列关于上述程序的说确的是()A 由于ps1和ps2函数没有return语句,所以调用形式a=ps1()和b=ps2()是错误的。
B 上述程序正确,a和b的值将分别为m和n的值。
C 上述程序正确,a和b的值为不确定的整数。
D 上述程序正确,a和b的值将都是零。
参考答案C本题序号:157下面正确的函数定义形式是A double fun(int x,int y)B double fun(int x;int y)C double fun(int x,int y);D double fun(int x,y);参考答案A本题序号:158若调用一个函数,且此函数中没有return语句,则正确的说法是()该函数:A 没有返回值B 返回若干个系统默认值;C 能返回一个用户所希望的函数值;D 返回一个不确定的值参考答案D本题序号:159下面说法中不正确的是()在C语言中A 实参可以是常量、变量或表达式;B 形参可以是常量、变量或表达式;C 函数的参数是函数间传递数据的一种手段;D 实参个数应与对应的形参个数相等,类型匹配;参考答案B本题序号:162C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是A float型B int 型C long 型D double型参考答案BC语言规定,函数返回值的类型是由A return语句中的表达式类型所决定;B 调用该函数时的主调函数类型所决定;C 调用该函数时系统临时决定;D 在定义该函数时所指定的函数类型所决定;参考答案D本题序号:164下面函数调用语句含有实参的个数为()func((exp1,exp2),(exp3,exp4,exp5));A 1B 2C 5D 4参考答案B本题序号:165以下错误的描述是()函数的调用可以A 出现在执行语句中;B 出现在一个表达式中;C 为一个函数的实参;D 作为一个函数的形参;参考答案D本题序号:167若使用一维数组名作函数参数,则以下正确的说法是A 必须在主调用函数中说明此数组的大小;B 实参数组类型与形参数组类型可以匹配;C 在被调函数中,不需要考虑形参数组的大小;D 实参数组名与形参数组名必须一致;参考答案C本题序号:168下正确的说法是()。
如果在一个函数中的复合语句中定义了一个变量,则该变量A 只在该复合语句中有效B 在该函数中有效C 本程序中有效D 为非法变量参考答案A以下不正确的说法是A 在不同函数中可以使用相同的名字的变量;B 形式参数是局部变量;C 在函数定义的变量只在本函数围有效;D 在函数的复合语句中定义的变量在本函数围有效;参考答案D本题序号:173以下程序的正确的运行结果是()。
main(){int a=2,i;for(i=0;i<3;i++)printf(“%d”,f(a));}f(int a){int b=0;static int c=3;b++;c++;return(a+b+c);}A 7 7 7B 7 10 13C 7 9 11D 7 8 9参考答案D本题序号:174以下程序的正确运行结果是()。
#include<stdio.h>main(){int k=4;m=1,p;p=func(k,m);printf(“%d”,p);p=func(k,m);printf(“%d\n”,p);}func(int a,int b){static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}A 8,17B 8,16C 8,20D 8,8参考答案A本题序号:309如果主调函数传递数组给被调函数,对函数形参的说明有错误的是A int a(float x[],int n)B int a(float *x,int n)C int a(float x[10],int n)D int a(float x,int n)参考答案D本题序号:310如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数是可见的,这个变量的存储类型应该被说明为____。
A 静态变量B 动态变量C 外部变量D 部变量参考答案A本题序号:311在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。
A externB registerC autoD static参考答案D本题序号:312在C语言中,函数的数据类型是指A 函数返回值的数据类型B 函数形参的数据类型C 调用该函数时的实参的数据类型D 任意指定的数据类型参考答案A本题序号:313已知如下定义的函数:fun1(int a){printf("\n%d",a);}则该函数的数据类型是____。
A 与参数a的类型相同B void型C 没有返回值D 无法确定参考答案A本题序号:449有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是A 3B 4C 5D 有语法错参考答案A本题序号:477以下所列的各函数首部中,正确的是A void play(var :Integer,var b:Integer)B void play(int a,b)C void play(int a,int b)D Sub play(a as integer,b as integer)参考答案C本题序号:483当调用函数时,实参是一个数组名,则向函数传送的是A 数组的长度B 数组的首地址C 数组每一个元素的地址D 数组每个元素中的值参考答案B本题序号:491以下正确的说法是A 用户若需调用标准库函数,调用前必须重新定义;B 用户可以重新定义标准库函数,若如此,该函数将失去原有含义;C 系统根本不允许用户重新定义标准库函数;D 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调;参考答案B本题序号:511在下列结论中,只有一个是错误的,它是A C语言允许函数的递归调用B C语言中的continue语句,可以通过改变程序的结构而省略C 有些递归程序是不能用非递归算法实现的D C语言中不允许在函数中再定义函数参考答案C本题序号:545函数用 return 语句返回计算 20! 的结果,此函数的类型应说明为______。
A intB longC unsigned longD 其它三个答案都不对参考答案D本题序号:619以下程序的输出结果是int f(){static int i=0;int s=1;s+=i;i++;return s;}main(){int i,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A 20B 24C 25D 15参考答案D本题序号:621若有以下程序#include "stdio.h"void f(int n);main(){void f(int n);f(5);}void f(int n){printf("%d\n",n);}则以下叙述中不正确的是A 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明D 函数f无返回值,所以可用void将其类型定义为无值型参考答案C本题序号:624在C语言中,形参的缺省存储类是A autoB registerC staticD extern参考答案A本题序号:636不合法的main函数命令行参数表示形式是A main(int a,char *c[])B main(int arc,char **arv)C main(int argc,char *argv)D main(int argv,char *argc[])参考答案C本题序号:637以下程序的输出的结果是int x=3;main(){int i;for (i=1;i}ncre(){staic int x=1;x*=x+1;printf(" %d",x);}A 3 3B 2 2C 2 6D 2 5参考答案C本题序号:658若各选项中所用变量已正确定义,函数fun过return语句返回一个函数值,以下选项中错误的程序是A main(){……x=fun(2,10);……}float fun(int a,int b){……}B float fun(int a,i nt b){……}main(){……x=fun(i,j);……}C float fun(int,int);main(){……x=fun(2,10);……}float fun(int a,int b){……}D main(){ float fun(int i,int j);……x=fun(i,j);……}float fun(int a,int b){……}参考答案A本题序号:670有以下程序int fun1(duoble a){return a*=a;}int fun2(dpuble x,double y){double a=0,b=0;a=fun1(x); b=fun1(y); return (int)(a+b);}main(){double w;w=fun2(1.1,2.0);……}程序执行后变量w中的值A 5.21B 5C 6D 0参考答案A本题序号:683以下叙述中错误的是A C程序必须由一个或一个以上的函数组成B 函数调用可以作为一个独立的语句存在C 若函数有返回值,必须通过return语句返回D 函数形参的值也可以传回对应的实参参考答案D本题序号:688在C语言中关于函数的正确叙述是A 函数的定义和调用均可以嵌套B 函数的定义不可以嵌套,但函数的调用可以嵌套C 函数的定义和调用均不可以嵌套D 函数的定义可以嵌套,但函数的调用不可以嵌套参考答案B本题序号:700在以下对C语言的描述中,正确的是A 在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参B C语言的函数既可以嵌套定义又可以递归定义C 函数必须有返回值,否则不能使用函数D C语言程序中有关调用关系的所有函数必须放在同一源程序文件中参考答案A本题序号:702若用数组名作为函数调用时的实参,则实际上传递给形参的是A 数组首地址B 数组的第一个元素值C 数组中全部元素的值D 数组元素的个数参考答案A本题序号:733有以下程序int f1(int x,int y){return x>y?x:y;}int f2(int x,int y){return x>y?y:x;}main(){int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d%d ",e,f,g);}程序运行后的输出结果是()。