当前位置:文档之家› C语言题库-函数

C语言题库-函数

C语言题库-函数
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: 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

void num()

{

extern int x,y;

int a=15,b=10;

x=a-b;

y=a+b;

}

int x,y;

main()

{

int a=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(int a)

{

int b=0;

static int c=3;static为静态外部变量 C不恒等于3(在每次循环中),而是等于最近一次使用的值。

b++;

c++;

return(a+b+c);

}

main()

{

int a=2,i;

for(i=0;i<3;i++)

printf("%d ",f(a));

}

A: 7 7 7

B: 7 10 13

C: 7 9 11

D: 7 8 9

15.下面程序的输出结果是( D )

#include

tr()

{

static int x=3;

x++;

return(x);

}

main()

{

int i, 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( )

{

int x=1;

void f1( );

void f2(int);

f1( );

f2(x);

printf("%d\n", x);

}

void f1()

{

int x=3;

printf("%d ", x);

}

int x;

void f2(int x )

{

printf("%d ", ++x);

}

A: 1 1 1

B: 2 2 2

C: 3 3 3

D: 3 2 1

17.下列叙述中错误的是( A )

A: 主函数中定义的变量在整个程序中都是有效的。

B: 在其它函数中定义的变量在主函数中也不能使用。

C: 形式参数也是局部变量。

D: 复合语句中定义的变量只在该复合语句中有效。

18.下正确的说法是( A )

如果在一个函数中的复合语句中定义了一个变量,则该变量

A: 只在该复合语句中有效

B: 在该函数中有效

C: 本程序中有效

D: 为非法变量

19.下面程序的输出结果是( B )

#include

main( )

{

int x=10;

{

int x=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(int a,int b)

{

static int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

void main()

{

int k=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.字符

24.C语言规定,程序中各函数之间( A )(二级题)

A. 既允许直接递归调用也允许间接递归调用

B. 不允许直接递归调用也不允许间接递归调用

C. 允许直接递归调用不允许间接递归调用

D. 不允许直接递归调用允许间接递归调用

25.C语言可执行程序的开始执行点是( C )(二级题)

A.程序中第一条可执行语句

B.程序中第一个函数

C.程序中的main函数

D.包含文件中的第一个函数

26.C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为( D )(二级题)

A. 该数组的长度。

B. 该数组的元素个数。

C. 该数组中各元素的值。

D. 该数组的首地址。

27.当调用函数时,实参是一个数组名,则向函数传送的是( B )(二级题)

A. 数组的长度

B. 数组的首地址

C. 数组每一个元素的地址

D. 数组每个元素中的值

28.若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是( A )(二级题)

A.3

B.4

C.5

D.6

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 ( float x ) { float y; y= 3*x-4; return y; }

A. int

B. 不确定

C. void

D. float

33.以下说法中正确的是( C )(二级题)

A. C语言程序总是从第一个的函数开始执行

B. 在C语言程序中,要调用的函数必须在main()函数中定义

C. C语言程序总是从main()函数开始执行

D. C语言程序中的main()函数必须放在程序的开始部分

34.以下所列的各函数首部中,正确的是( C )(二级题)

A. void play(var a: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)

35.以下叙述中不正确的是( C )(二级题)

A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B. 在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容。

C. 在C中,外部变量的隐含类别是自动存储类别。

D. 在C中,函数形参可以说明为register变量。

36.以下叙述中不正确的是( D )(二级题)

A. 在不同的函数中可以使用相同名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个函数内的复合语句中定义的变量在本函数范围内有效

37.以下程序运行后,输出结果是( A )(二级题)C

#include

int d=1;

fun (int p)

{

int d=5;

d+=p++;

printf("%d",d);

}

main()

{

int a=3;

fun(a);

d+=a++;

printf("%d\n",d);

}

A.8 4

B.9 9

C.9 5

D.4 4

38.以下对C语言函数的有关描述中,正确的是( A )(二级题)

A. 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B. C函数既可以嵌套定义又可以递归调用

C. 函数必须有返回值,否则不能使用函数

D. C程序中有调用关系的所有函数必须放在同一个源程序文件中

39.有如下程序

#include

int func(int a,int b)

{

return(a+b);

}

main()

{

int x=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

long fib(int n)

{

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

int a, b;

void fun()

{

a=100; b=200;

}

main()

{

int a=5, b=7;

fun();

printf("%d%d\n", a,b);

}

A. 100200

B. 57

C. 200100

D. 75

42.以下程序运行后,输出结果是( D )(二级题)#include

func (int a,int b)

{

int m=0 ,i=2;

i+=m+1;

m=i+a+b ;

return(m);

}

main()

{

int k=4,m=1,p;

p=func(k,m);

printf("%d,",p);

p=func(k,m);

printf("%d\n",p);

}

A 8,15

B 8,16

C 8,17

D 8,8

43.以下程序的输出结果是( A )(二级题)

#include

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. 1

B. 2

C. 3

D. 4

44.以下程序的输出结果是( C )(二级题)#include

int d=1;

fun(int p)

{

static int d=5;

d+=p;

printf("%d ",d);

return(d);

}

main( )

{

int a=3;

printf("%d \n",fun(a+fun(d)));

}

A. 6 9 9

B. 6 6 9

C. 6 15 15

D. 6 6 15

45.下面程序的输出是( B )(二级题)

#include

int w=3;

fun(int k)

{

if(k==0)

return w;

return(fun(k-1)*k);

}

main()

{

int w=10;

printf("%d\n",fun(5)*w);

}

A.360

B.3600

C.1080

D.1200

46.下面程序的输出是( B )(二级题)#include

int m=13;

int fun2(int x, int y)

{

int m=3;

return(x*y-m);

}

main()

{

int a=7, b=5;

printf("%d\n",fun2(a,b)/m);

}

A. 1

B. 2

C. 7

D. 10

47.下面程序的输出是( C )(二级题)#include

fun3(int x)

{

static int a=3;

a+=x;

return(a);

}

main()

{

int k=2, m=1, n;

n=fun3(k);

n=fun3(m);

printf("%d\n",n);

}

A. 3

B. 4

C. 6

D. 9

48.C语言中函数能否嵌套调用和递归调用( D )(二级题)

A.二者均不可

B.前者可,后者不可

C.前者不可,后者可

D.二者均可

49.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是( A )(二级题)

A. 3

B. 4

C. 5

D. 有语法错

50.有以下程序

#include

void fun(int a[],int n)

{

int i;

for(i=0;i

{

if(i%2==0)

a[i]+=n;

else

a[i]-=n;

}

}

main()

{

int c[5]={5,4,3,2,1},i;

fun(c,5);

for(i=0;i<5;i++)

printf("%d,",c[i]);

printf("\n");

}

程序运行后输出的结果是( A )(二级题)

A.10,-1,8,-3,6,

B.5,4,3,2,1,

C.10,2,8,4,6,

D.5,-1,3,-3,1,

51.有以下程序

#include

#define N 4

void fun(int a[][N])

{

int i;

for(i=0;i

a[0][i]=a[N-1][N-1-i];

}

main()

{

int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i;

fun(x);

for(i=0;i

printf("%d,",x[i][i]);

printf("\n");

}

程序运行后输出的结果是( A )(二级题)B

A.16,6,11,16,

B.1,6,11,16,

C.4,7,10,13,

D.17,17,17,17,

52.有以下程序

#include

#define N 4

double fun(double a)

{

double x;

x=a-(int)a;

return x;

}

main()

{

double a=3.1415;

printf("%f\n",fun(a));

}

程序的运行结果是( C )(二级题)

A.3.000000

B.3.141500

C.0.141500

D.0.000000

53.有如下程序

#include

int sum(int data)

{

static int init=1;

return init +=data;

}

main()

{

int i;

for(i=1;i<=1;i++)

printf("%d,",sum(i));

printf("\n");

}

程序运行后输出的结果是( A )(二级题)

A.2,

B.2,3,

C.3,

D.1,

54.以下针对全局变量的叙述错误的是( C )(二级题)

A.全局变量的作用域是从定义位置开始至源文件结束

B.全局变量是在函数外部任意位置上定义的变量

C.用extern说明符可以限制全局变量的作用域

D.全局变量的生存期贯穿于整个程序运行期间

55.有以下程序

#include

void fun(int a[],int n)

{

int i;

for(i=0;i

{

if(i%3==0)

a[i]-=n;

else

a[i]+=n;

}

}

main()

{

int c[5]={6,7,8,9,10},i;

fun(c,5);

for(i=0;i<5;i++)

printf("%d,",c[i]);

printf("\n");

}

程序运行后输出的结果是( A )(二级题)

A.1,12,13,4,15,

B.10,9,8,7,6,

C.1,7,13,9,15,

D.10,12,8,4,6,

56.有以下程序

#include

int sub(double a,double b)

{

return (int)(a-b-1.3);

}

main()

{

printf("%d\n",sub(3.2,4.1));

}

程序运行后输出的结果是( A )(二级题)

A.-2

B.1.7

C.-3

D.2.0

57.有如下程序

#include

void convert(char ch)

{

if(ch<'X') convert(ch+1);

printf("%c",ch);

}

main()

{

convert('W');

printf("\n");

}

程序运行后输出的结果是( D )(二级题)

A.YZ

B.VW

C.XY

D.XW

58.有如下程序

#include

void get_put()

{

char ch;

ch=getchar();

if(ch!='\n') get_put();

putchar(ch);

}

main()

{

get_put();

}

程序运行时,输入ABCD<回车>,则输出结果是( B )(二级题)

A.DCDC

B.DCBA

C.BABA

D.ABCD

59.以下叙述错误的是( A )(二级题)

A.未经赋值的全局变量值不确定

B.未经赋值的auto变量值不确定

C.未经赋值的register变量值不确定

D.未经赋值的静态局部变量值为0

60.有如下程序

#include

int sum(int a,int b)

{

return a+b-2;

}

main()

{

int i;

for(i=0;i<5;i++)

printf("%d",sum(i,3));

printf("\n");

}

程序运行后的输出结果是( D )(二级题)

A.54321

B.01234

C.45678

D.12345

二、填空题

1. C 语言规定,可执行程序的开始执行点是 main()。

2.阅读以下程序,若输入15< 回车>,写出程序运行结果 1111 。

#include "stdio.h"

int main( )

{

int n;

void dectobin(int n);

scanf("%d",&n);

dectobin(n);

printf("\n"); }

void dectobin(int n)

{

int a[16]={0};

int i=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=1.000000, y=2.000000, av=1.500000 main:a=1.000000, b=2.000000, c=3.000000

#include "stdio.h"

float average(float x, float y, float av)

{

av = (x+y)/2.0;

printf("function:x=%f, y=%f, av=%f\n", x, y, av);

return av;

}

main()

{

float a=1, b=2, c=3;

average(a,b,c);

printf("main:a=%f, b=%f, c=%f\n", a, b, c);

}

4.以下isprime 函数的功能是判断形参a 是否为素数,是素数,函数返回1,否则返回0,请填空

int isprime(int a)

{ int i;

for(i=2;i<=a/2;i++)

if(a%i==0) return 0 ;

return 1 ;

}

5. 有以下程序

#include

int sub(int n)

{

return (n/10+n%10);

}

main()

{ int x,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

printf("%d\n",y);

}

若运行时输入:1234< 回车>,程序的输出结果是 10 .

6.以下程序运行后的输出结果是 4 3 3 4

#include

void swap(int x,int y)

{

int t;

t=x;x=y;y=t;

printf("%d %d ",x,y);

}

main()

{

int a=3,b=4;

swap(a,b);

printf("%d %d ",a,b);

}

7.通过函数求f(x)的累加和,其中f(x)=x2+1

main()

{

printf("The sum=%d\n",SunFun(10));

}

SunFun(int n)

{

int x,s=0;

for(x=0;x<=n;x++) s+=F( x );

return s;

}

F( int x)

{ return x*x+1 ;}

8.函数fun 的功能是计算x n

double fun(double x,int n)

{

int i; double y=1;

for(i=1;i<=n;i++) y=y*x;

return y;

}

主函数中已经正确定义m,a,b 变量并赋值,并调用fun 函数计算:m=a4+b4-

(a+b)3。实现这一计算的函数调用语句为 fun(a,4)+fun(b,4)-fun(a+b,3) 9.在内存中,供用户使用的存储区可分为三个部分,它们是程序区、

静态储存区、动态储存区。

10.函数直接或者间接地自己调用自己,被称为函数的递归调用。

11.在函数内部定义的只在本函数内有效的变量叫局部变量,在函

数以外定义的变量叫全部变量。

12.以下程序的输出结果是。

#include

void fun(int x,int y)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

int x=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);

}

13.以下程序的输出结果是。

#include

int fun(int a,int b)

{

printf("a=%d,b=%d ",a,b);

return(a>b?a:b);

}

main()

{

int i=2,j=5,k=3,m;

m=fun(fun(i,j),fun(j,k));

printf("m=%d\n",m);

}

14.下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一

位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其他以

此类推。请填空。

相关主题
文本预览
相关文档 最新文档