第六部分  函数
一、单项选择题
1.C语言中的函数返回值的类型是由(D)决定
A.return语句中的表达式            B.调用函数的主调函数   
C.调用函数时临时              D.定义函数时所指定的函数类型
2.下面不正确的描述是( B  )。
A.调用函数时,实参可以是表达式
B.调用函数时,实参和形参可以共用内存单元
C.调用函数时,将形参分配内存单元
D.调用函数时,实参与形参的类型必须一致
3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是( D  )
A.地址传递                    B.值传递   
C.由实参传递给形参,并由形参传回给实参    D.由用户指定传递方式
4.下面的函数调用语句中含有(  A )个实参
int a,b,c;
int sum(int x1,int x2);
……
total=sum((a,b),c);
A.2    B.3  C.4        D.5 
5.在C语言中( C  )
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义和调用均不可以嵌套
C.函数的定义不可以嵌套,但是函数的调用可以嵌套
D.函数的定义和调用均可以嵌套       
6.关于C语言中的return语句正确的是(C )
A.只能在主函数中出现
B.在每个函数中都必须出现
C.可以在一个函数中出现多次
D.只能在除主函数之外的函数中出现
7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有不对的是( D
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)
8.在C语言中,函数的数据类型是指( A  )
A.函数返回值的数据类型
B. 函数形参的数据类型
C.调用该函数时的实参的数据类型
D. 任意指定的数据类型
9.已知如下定义的函数:
fun1(a)
{ printf("\n%d",a)。
}
则该函数的数据类型是(  C )
A.与参数a的类型相同
B.void型
C. 整型
D. 无法确定
10.定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是( D  )
A. swapa(int x,int y)
{ int temp。
temp=x。x=y。y=temp。
}
B. swapb(int *x,int *y)
{ int temp。
temp=x。x=y。y=temp。
}
C.swapc(int *x,int *y)
{ int temp。 
temp=*x。*x=*y。*y=temp。
}
D. swapd(int *x,int *y)
{ int *temp。
temp=x。x=y。y=temp。
}
11.求一个角的正弦函数值的平方。能够实现此功能的函数是(B)
A.
sqofsina(x) 
{ float x。
return(sin(x)*sin(x))。
}
B. double sqofsinb(x)
{ float x。
return(sin((double)x)*sin((double)x))。
}
C.double sqofsinc(x)
{ return(((sin(x)*sin(x))。
}
D. sqofsind(x)
{ float x。
return(double(sin(x)*sin(x)))。
12.已知函数定义如下:
float fun1(int x,int y)
{ float z。
z=(float)x/y。
return(z)。
c语言用递归函数求n的阶乘}
主调函数中有int a=1,b=0。可以正确调用此函数的语句是(D  )
A.printf("%f",fun1(a,b))。 B. printf("%f",fun1(&a,&b))。
C. printf("%f",fun1(*a,*b))。 D.调用时发生不对
13.下面函数的功能是( B )
a(s1,s2)
char s1[],s2[]。
{ while(s2++=s1++) 。
}
A.字符串比较
B.字符串复制
C. 字符串连接
D. 字符串反向
二、填空题
1.在C语言中,存储类型为 局部自动型的变量,只能在使用它们时才占用存储空间。
2.在一个源文件中定义的全局变量的作用域为整个源程序。
3.下面程序的执行结果是84
int  d=1;
fun(int p)
{
int d=5;
d+=p++;
printf(%d,d);
}
main()
{
  int a=3;
fun(a);
  d+=a++;
printf(%d,d);
  }
4.该fun函数的功能是求10的阶乘。
  1) #include
  2) long fun ( int n)
  3) {if (___1___)
  4) return (n*fun(___2___));
  5) else if ( ___3___)
  6) return 1;}
第一处:n>1
  第二处:n-1·
  第三处:n==1
解析:从第2、4行看到了函数名,函数体中又出现了函数的调用,则是递归。我们知道:n!=n*(n-1)! 这就是一个递归的表达式,写成函数就是fun(n)=n*fun(n-1)。因此,4行处填写n-1。又:1!=1 故3,5行就好填了。因此答案是 n>1 n-1 n==1。还有 0!=1 故,还可填写:n>0 n-1 n==0
  注意:3 5行的条件是相反的,这也是if与else条件的互斥性。
5. 程序的功能是计算s=1!+2!+3!+……+n!
  1) long fun(int n)
  2) { int i;
  3) long s;
  4) s=___1___;
  5) for (i=1; i<=n; i++)
  6) s=___2___;
  7) return s;
  8) }
  9) main()
  10) { long s;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。