c语言函数练习题

c语言函数练习题
c语言函数练习题

函数练习题

一、选择题(一题2分,共40分)

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,10

B、10,20,30

C、456,567,678

D、678,567,456

8.下述函数定义形式正确的是()。

A、int f(int x; int y)

B、int f(int x,y)

C、int f(int x, int y)

D、int f(x,y: int)

9.关于函数参数,说法正确的是()。

A、实参与其对应的形参各自占用独立的内存单元

B、实参与其对应的形参共同占用一个内存单元

C、只有当实参和形参同名时才占用同一个内存单元

D、形参是虚拟的,不占用内存单元

10.一个函数的返回值由()确定。

A、return语句中的表达式

B、调用函数的类型

C、系统默认的类型

D、被调用函数的类型

11.以下正确的函数形式是()。

A、double fun(int x,int y)

{ z=x+y; return z; }

B、fun(int x,y)

{ int z; return z; }

C、fun(x,y)

{ int x,y; double z; z=x+y; return z; }

D、double fun(int x,int y)

{ double z; z=x+y; return z; }

12.下列函数中,能够从键盘上获得一个字符数据的函数是()。

A、puts( )

B、putchar( )

C、getchar( )

D、gets( )

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

fun(int a,int b,int c)

{ c=a+b; }

int main()

{ int c;

fun(2,3,c);

printf(“%d\n”,c);

return 0; }

A、2

B、3

C、5

D、无定值

14.分析以下程序的运行结果()。

func(int a,int b)

{ int temp=a;

a=b; b=temp; }

int main()

{ int x,y;

x=10; y=20;

func(x,y);

printf(“%d,%d\n”,x,y);

return 0 ; }

A、10,20

B、10,10

C、20,10

D、20,20

15.现有如下程序

#include "stdio.h"

int fun(int x)

{ printf("x=%d\n",++x); }

int main()

{ fun(12+5); return 0; }

则程序的输出结果是

A、x=12

B、x=13

C、x=17

D、x=18

16.以下函数fff(float x )

{ printf(“%d\n”,x*x); } 的类型是()

A、与参数X的类型相同

B、void类型

C、int 类型

D、无法确定

17. 以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,则该变量

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

B.在该函数中有效

C.在本程序范围内均有效

D.为非法变量

18. 以下不正确的说法为()

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

B.形式参数是局部变量

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

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

19.有以下程序

void f(int v , int w)

{ int t;

t=v;v=w;w=t;}

main( )

{ int x=1,y=3,z=2;

if(x>y) f(x,y);

else if(y>z) f(y,z);

else f(x,z);

printf(“%d,%d,%d\n”,x,y,z);}

A、1,2,3

B、3,1,2

C、1,3,2

D、2,3,1

20. 以下正确的函数形式是()

A.double fun(int x,int y) B.fun(int x,y)

C. fun(x,y)

D.double fun(int x,int y) ;

二、判断题(一题1分,共12分)

1.( )return语句作为函数的出口,在一个函数体内只能有一个。

2.( )在C程序中,函数不能嵌套定义,但可以嵌套调用。

3.( ) C语言的源程序中必须包含库函数。

4.( )在C程序中,函数调用不能出现在表达式语句中。

5.( )在C函数中,形参可以是变量、常量或表达式。

6.( )在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。

7.( )若定义的函数没有参数,则函数名后的圆括号可以省略。

8.( )函数的函数体可以是空语句。

9.( )函数的实参和形参可以是相同的名字。

10.( )C语言中函数返回值的类型由return语句中的表达式的类型决定。

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

12.( )函数调用中,形参与实参的类型和个数必须保持一致。

三、分析程序写结果(每题2分,共14分)

1、以下程式序的运行结果是_____________

main()

{ int i=2,x=5,j=7;

fun(j,6);

printf(“i=%d;j=%d;x=%d\n”,i,j,x); }

fun(int i,int j)

{ int x=7; printf(“i=%d;j=%d;x=%d\n”,i,j,x); }

2、以下程序的运行结果是_____________

main()

{ increment();

increment();

increment(); }

increment()

{ int x=0;x+=1; printf(“%d”,x); }

3、以下程序的运行结果是_____________

main()

{ int a=1,b=2,c;

c=max(a,b);printf(“max is %d\n”,c); }

max(int x,int y)

{ int z; z=(x>y)?x:y; return(z); }

4、若输入一个整数10,以下程序运行结果是_____________ main()

{ int a,e[10],c,i=0;

printf(“输入一个整数: \n”);

scanf(“%d”,&a);

while(a!=0)

{ c=sub(a); a=a/2; e[I]=c; i++;}

for(;i>0;i--) printf(“%d”,e[i-1]); }

sub(int a)

{ int c;

c=a%2; return c; }

5、以下程序的运行结果是_____________

main()

{int x=2,y=3,z=0;

printf(“(1)x=%d y=%d z=%d\n”,x,y,z);

add(x,y,z);

printf(“(3)x=%d y=%d z=%d\n”,x,y,z);}

add(int x,int y, int z)

{z=x+y; x=x*x; y=y*y;

printf(“(2)x=%d y=%d z=%d\n”,x,y,z);}

6、以下程序的运行结果是_____________

int x;

main()

{x=5; cude(); printf(“%d\n”,x);}

cude()

{x=x*x*x;}

7、函数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。实现这一计算的函数调用语句为_____________ _________。

四、程序填空(一空2分,共34分)

1. 以下程序的功能是计算函数F(x,y,z)=(x+z)/(y-z)+(y+2×z)/(x-2×z)的值,请将程序补充完整。( )

#include

float f(float x,float y)

{ float value;

value= 【1】;

return value; }

main()

{ float x,y,z,sum;

scanf("%f%f%f",&x,&y,&z);

sum=f(x+z,y-z)+f(【2】);

printf("sum=%f\n",sum); }

2. 以下程序是将输入的一个整数反序打印出来,例如输入1234,则输出4321,输入-1234,则输出-4321。请将程序补充完整。( )

void printopp(long int n)

{ if(n==0)

return ;

if( 【1】) { printf( "-" );n=-n; }

while(n)

{ printf("%ld",n%10);

【2】; }

}

main()

{ long int n;

scanf("%ld",&n);

printopp(n);

printf("\n"); }

3. 下面的程序用递归定义的方法实现求菲波拉契数列1、1、2、3、5、8、13、21……第7项的值fib(7),菲波拉契数列第1项和第2项的值都是1。请将程序补充完整。#include

long fib(【1】)

{ switch(g)

{ case 0: return 0;

case 1:

case 2: return 1; }

return (【2】); }

main()

{ long k;

k=fib(7);

printf("k=%d\n",k); }

4. 下面是一个计算1至m的阶乘并依次输出的程序。程序中应填入的正确选项是【】。

#include

double result=1;

factorial( int j)

{ result=result*j;

return result; }

main()

{ int m,i=0;double x;

printf("Please enter an integer:");

scanf("%d",&m);

for(;i++

{ x=factorial(i);

printf("%d!=%.0f\n", 【1】); }

}

5. 以下程序的功能是求任意两个整数a和b的最大公约数,并予以显示。请将程序补充完整。( )

#include

#include

long codivisor(long n1,long n2)

{ long t;

while( n2!=0 )

{【1】; n1=n2; n2=t;}

return (【2】); }

main()

{ long a,b,x;

printf("please input two numbers:");

scanf("%ld%ld",&a,&b);

x=codivisor(a,b);

printf("maximum common divisor of %ld and %ld is : %ld\n", a,b,x); } 6. 以下程序是选出能被3整除且至少有一位是5的所有三位正整数k(个位为a0,十位为a1,百位为a2),打印出所有这样的数及其个数。请将程序补充完整。( )

#include

sub(int m,int n)

{ int a0,a1,a2;

a2=【1】;

a1=【2】;

a0=m%10;

if(m%3==0 && (a2==5||a1==5||a0==5))

{ printf(“%d”,m);

n++; }

return n; }

main()

{ int m=0,k;

for(k=105;k<=995;k++)

m=sub(【3】);

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

7、C语言规定,可执行程序的开始执行点是_____________。

8、在C语言中,一个函数一般由两个部分组成,它们是_____________和_____________。

9、下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是,改正后应是。void add(float a,float b)

{float c; c=a+b; return c;}

相关主题
相关文档
最新文档