C语言题库函数.docx
《C语言题库函数.docx》由会员分享,可在线阅读,更多相关《C语言题库函数.docx(38页珍藏版)》请在冰豆网上搜索。
C语言题库函数
C语言函数练习题
一、选择题
1.在函数的说明和定义时若没有指出函数的类型,则(A)
A:
系统自动地认为函数的类型为整型。
B:
系统自动地认为函数的类型为字符型。
C:
系统自动地认为函数的类型为实型。
D:
编译时会出错。
2.下面正确的函数定义形式是(A)
A:
doublefun(intx,inty){}
B:
doublefun(intx;inty){}
C:
doublefun(intx,inty);
D:
doublefun(intx,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:
1
B:
2
C:
5
D:
4
7.以下错误的描述是(D)
函数的调用可以
A:
出现在执行语句中;
B:
出现在一个表达式中;
C:
为一个函数的实参;
D:
作为一个函数的形参;
8.若函数的形参为一维数组,则下列说法中正确的是(B)
A:
调用函数时的对应实参必为数组名。
B:
形参数组可以不指定大小。
C:
形参数组的元素个数必须等于实参数组的元素个数。
D:
形参数组的元素个数必须多于实参数组的元素个数。
9.下面叙述中正确的是(C)
A:
对于用户自己定义的函数,在使用前必须加以说明。
B:
说明函数时必须明确其参数类型和返回类型。
C:
函数可以返回一个值,也可以什么值也不返回。
D:
空函数不完成任何操作,所以在程序设计中没有用处。
10.若使用一维数组名作函数参数,则以下正确的说法是(C)
A:
必须在主调用函数中说明此数组的大小;
B:
实参数组类型与形参数组类型可以匹配;必须
C:
在被调函数中,不需要考虑形参数组的大小;
D:
实参数组名与形参数组名必须一致
11.下面说法中不正确的是(B)
在C语言中
A:
实参可以是常量、变量或表达式;
B:
形参可以是常量、变量或表达式;
C:
函数的参数是函数间传递数据的一种手段;
D:
实参个数应与对应的形参个数相等,类型匹配
12.以下叙述中正确的是(B)
A?
全局变量的作用域一定比局部变量的作用域范围大
B静态(static)类别变量的生存期贯穿于整个程序的运行期间
C?
函数的形参都属于全局变量
D?
未在定义语句中赋初值的auto变量(不确定)和static变量(为0)的初值都是随机值
13.下面程序的输出结果是(B)
#include<>
voidnum()
{
externintx,y;
inta=15,b=10;
x=a-b;
y=a+b;
}
intx,y;
main()
{
inta=7,b=5;
x=a-b;
y=a+b;
num();
printf("%d,%d\n",x,y);
}
A:
12,2
B:
5,25
C:
1,12
D:
输出不确定
14.下面程序的输出结果是(D)
#include<>
f(inta)
{
intb=0;
staticintc=3;static为静态外部变量C不恒等于3(在每次循环中),而是等于最近一次使用的值。
b++;
c++;
return(a+b+c);
}
main()
{
inta=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}
A:
777
B:
71013
C:
7911
D:
789
15.下面程序的输出结果是(D)
#include<>
tr()
{
staticintx=3;
x++;
return(x);
}
main()
{
inti,x;
for(i=0;i<=2;i++)
x=tr();
printf("%d\n",x);
}
A:
3
B:
4
C:
5
D:
6
16.下面程序的输出结果是(D)
#include<>
main()
{
intx=1;
voidf1();
voidf2(int);
f1();
f2(x);
printf("%d\n",x);
}
voidf1()
{
intx=3;
printf("%d",x);
}
intx;
voidf2(intx)
{
printf("%d",++x);
}
A:
111
B:
222
C:
333
D:
321
17.下列叙述中错误的是(A)
A:
主函数中定义的变量在整个程序中都是有效的。
B:
在其它函数中定义的变量在主函数中也不能使用。
C:
形式参数也是局部变量。
D:
复合语句中定义的变量只在该复合语句中有效。
18.下正确的说法是(A)
如果在一个函数中的复合语句中定义了一个变量,则该变量
A:
只在该复合语句中有效
B:
在该函数中有效
C:
本程序中有效
D:
为非法变量
19.下面程序的输出结果是(B)
#include<>
main()
{
intx=10;
{
intx=20;
printf("%d,",x);
}
printf("%d\n",x);
}
A:
10,20
B:
20,10
C:
10,10
D:
20,20
20.以下叙述中不正确的是(D)
A?
在不同的函数中可以使用相同名字的变量
B?
函数中的形式参数是局部变量
C?
在一个函数内定义的变量只在本函数范围内有效
D?
在一个函数内的复合语句中定义的变量在本函数范围内有效
21.下面说法中不正确的是(D)
A?
全局变量一定是外部变量
B?
局部变量一定是内部变量。
C?
全局变量作为函数间传递数据的手段时,与文件的作用类似,都是通过共享某种资源来传递数据。
D?
全局变量与局部变量不可以重名。
22.以下程序的正确运行结果是(A)(二级题)
#include<>
func(inta,intb)
{
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
voidmain()
{
intk=4,m=1,p;
p=func(k,m);8
printf("%d,",p);
p=func(k,m);
printf("%d",p);
}
A?
8,17
B?
8,16
C?
8,20
D?
8,8
23.C语言程序的基本单位是(C)(二级题)
A.程序行
B.语句
C.函数
D.字符
语言规定,程序中各函数之间(A)(二级题)
A.既允许直接递归调用也允许间接递归调用
B.不允许直接递归调用也不允许间接递归调用
C.允许直接递归调用不允许间接递归调用
D.不允许直接递归调用允许间接递归调用
25.C语言可执行程序的开始执行点是(C)(二级题)
A.程序中第一条可执行语句
B.程序中第一个函数
C.程序中的main函数
D.包含文件中的第一个函数
语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为(D)(二级题)
A.该数组的长度。
B.该数组的元素个数。
C.该数组中各元素的值。
D.该数组的首地址。
27.当调用函数时,实参是一个数组名,则向函数传送的是(B)(二级题)
A.数组的长度
B.数组的首地址
C.数组每一个元素的地址
D.数组每个元素中的值
28.若有以下函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是(A)(二级题)
29.在C语言中,函数的隐含存储类别是(C)(二级题)
A.auto
B.static
C.extern
D.无存储类别
30.在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是(C)类型(二级题)
A.void
B.double
C.int
D.char
31.在C语言中,形参的缺省存储类是(A)(二级题)
A.auto
B.register
C.static
D.extern
32.以下函数值的类型是(A)(二级题)
fun(floatx){floaty;y=3*x-4;returny;}
A.int
B.不确定
C.void
D.float
33.以下说法中正确的是(C)(二级题)
A.C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
34.以下所列的各函数首部中,正确的是(C)(二级题)
A.voidplay(vara:
integer,varb:
integer)
B.voidplay(inta,b)
C.voidplay(inta,intb)
D.subplay(aasinteger,basinteger)
35.以下叙述中不正确的是(C)(二级题)
A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容。
C.在C中,外部变量的隐含类别是自动存储类别。
D.在C中,函数形参可以说明为register变量。
36.以下叙述中不正确的是(D)(二级题)
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
37.以下程序运行后,输出结果是(A)(二级题)C
#include<>
intd=1;
fun(intp)
{
intd=5;
d+=p++;
printf("%d",d);
}
main()
{
inta=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
4
9
5
4
38.以下对C语言函数的有关描述中,正确的是(A)(二级题)
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
39.有如下程序
#include<>
intfunc(inta,intb)
{
return(a+b);
}
main()
{
intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是(D)(二级题)
A.12
B.13
C.14
D.15
40.有如下程序(B)(二级题)
#include<>
longfib(intn)
{
if(n>2)
return(fib(n-1)+fib(n-2));
else
return
(2);
}
main()
{
printf("%d\n",fib(3));
}
该程序的输出结果是
A.2
B.4
C.6
D.8
41.以下程序的输出结果是(B)(二级题)
#include<>
inta,b;
voidfun()
{
a=100;b=200;
}
main()
{
inta=5,b=7;
fun();
printf("%d%d\n",a,b);
}
A.100200
B.57
C.200100
D.75
42.以下程序运行后,输出结果是(D)(二级题)
#include<>
func(inta,intb)
{
intm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{
intk=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
A8,15
B8,16
C8,17
D8,8
43.以下程序的输出结果是(A)(二级题)
#include<>
longfun(intn)
{
longs;
if(n==1||n==2)
s=2;
else
s=n-fun(n-1);
returns;
}
main()
{
printf("%ld\n",fun(3));
}
A.1
B.2
C.3
D.4
44.以下程序的输出结果是(C)(二级题)
#include<>
intd=1;
fun(intp)
{
staticintd=5;
d+=p;
printf("%d",d);
return(d);
}
main()
{
inta=3;
printf("%d\n",fun(a+fun(d)));
}
A.699
B.669
C.61515
D.6615
45.下面程序的输出是(B)(二级题)
#include<>
intw=3;
fun(intk)
{
if(k==0)
returnw;
return(fun(k-1)*k);
}
main()
{
intw=10;
printf("%d\n",fun(5)*w);
}
46.下面程序的输出是(B)(二级题)
#include<>
intm=13;
intfun2(intx,inty)
{
intm=3;
return(x*y-m);
}
main()
{
inta=7,b=5;
printf("%d\n",fun2(a,b)/m);
}
A.1
B.2
C.7
D.10
47.下面程序的输出是(C)(二级题)
#include<>
fun3(intx)
{
staticinta=3;
a+=x;
return(a);
}
main()
{
intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);
}
A.3
B.4
C.6
D.9
语言中函数能否嵌套调用和递归调用(D)(二级题)
A.二者均不可
B.前者可,后者不可
C.前者不可,后者可
D.二者均可
49.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是(A)(二级题)
A.3
B.4
C.5
D.有语法错
50.有以下程序
#include<>
voidfun(inta[],intn)
{
inti;
for(i=0;i{
if(i%2==0)
a[i]+=n;
else
a[i]-=n;
}
}
main()
{
intc[5]={5,4,3,2,1},i;
fun(c,5);
for(i=0;i<5;i++)
printf("%d,",c[i]);
printf("\n");
}
程序运行后输出的结果是(A)(二级题)
-1,8,-3,6,
4,3,2,1,
2,8,4,6,
-1,3,-3,1,
51.有以下程序
#include<>
#defineN4
voidfun(inta[][N])
{
inti;
for(i=0;ia[0][i]=a[N-1][N-1-i];
}
main()
{
intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i;
fun(x);
for(i=0;iprintf("%d,",x[i][i]);
printf("\n");
}
程序运行后输出的结果是(A)(二级题)B
6,11,16,
6,11,16,
7,10,13,
17,17,17,
52.有以下程序
#include<>
#defineN4
doublefun(doublea)
{
doublex;
x=a-(int)a;
returnx;
}
main()
{
doublea=;
printf("%f\n",fun(a));
}
程序的运行结果是(C)(二级题)
有如下程序
#include<>
intsum(intdata)
{
staticintinit=1;
returninit+=data;
}
main()
{
inti;
for(i=1;i<=1;i++)
printf("%d,",sum(i));
printf("\n");
}
程序运行后输出的结果是(A)(二级题)
3,
54.以下针对全局变量的叙述错误的是(C)(二级题)
A.全局变量的作用域是从定义位置开始至源文件结束
B.全局变量是在函数外部任意位置上定义的变量
C.用extern说明符可以限制全局变量的作用域
D.全局变量的生存期贯穿于整个程序运行期间
55.有以下程序
#include<>
voidfun(inta[],intn)
{
inti;
for(i=0;i{
if(i%3==0)
a[i]-=n;
else
a[i]+=n;
}
}
main()
{
intc[5]={6,7,8,9,10},i;
fun(c,5);
for(i=0;i<5;i++)
printf("%d,",c[i]);
printf("\n");
}
程序运行后输出的结果是(A)(二级题)
12,13,4,15,
9,8,7,6,
7,13,9,15,
12,8,4,6,
56.有以下程序
#include<>
intsub(doublea,doubleb)
{
return(int);
}
main()
{
printf("%d\n",sub,);
}
程序运行后输出的结果是(A)(二级题)
有如下程序
#include<>
voidconvert(charch)
{
if(ch<'X')convert(ch+1);
printf("%c",ch);
}
main()
{
convert('W');
printf("\n");
}
程序运行后输出的结果是(D)(二级题)
58.有如下程序
#include<>
voidget_put()
{
charch;
ch=getchar();
if(ch!
='\n')get_put();
putchar(ch);
}
main()
{
get_put();
}
程序运行时,输入ABCD<回车>,则输出结果是(B)(二级题)
59.以下叙述错误的是(A)(二级题)
A.未经赋值的全局变量值不确定
B.未经赋值的auto变量值不确定
C.未经赋值的register变量值不确定
D.未经赋值的静态局部变量值为0
60.有如下程序
#include<>
intsum(inta,intb)
{
returna+b-2;
}
main()
{
inti;
for(i=0;i<5;i++)
printf("%d",sum(i,3));
printf("\n");
}
程序运行后的输出结果是(D)(二级题)
二、填空题
1.C语言规定,可执行程序的开始执行点是main()。
2.阅读以下程序,若输入15<回车>,写出程序运行结果1111。
#include""
intmain()
{
intn;
voiddectobin(intn);
scanf("%d",&n);
dectobin(n);
printf("\n");}
voiddectobin(intn)
{
inta[16]={0};
inti=0;
while(n!
=0)
{
a[i]=n%2;i++;
n/=2;
}
i=i-1;
while(i>=0)
{
printf("%d",a[i]);
i--;}
}
3.写出以下程序运行结果function:
x=,y=,av=main:
a=,b=,c=
。
#include""
floataverage(floatx,floaty,floatav)
{
av=(x+y)/;
printf("fu