C语言程序设计 第六章 函数 试题及答案
1 选择题
*6.1建立函数的目的之一,以下正确的说法是     
A)提高程序的执行效率    B)提高程序的可读性
C)减少程序的篇幅        D)减少程序文件所占内存
参考答案:B
*6.2 以下正确的说法是     
A)用户若需要调用标准库函数,调用前必须重新定义
B)用户可以重新定义标准库函数,若如此,该函数将失去原有意义
C)用户系统根本不允许用户重新定义标准库函数
D)用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动寻该文件。
参考答案:B
6.3 以下正确的函数定义形式是     
A)double fun(int x,int y)    B)double fun(int x;int y)
C)double fun(int x,int y);    D)doubel fun(int x;int y);
参考答案:A
*6.4 以下正确的函数形式是     
A)double fun(int x,int y){z=x+y;return z;}
B)double 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;}
参考答案:D
*6.5以下正确的说法是     
A)实参和与其对应的形参占用独立的存储单元
B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用一个存储单元
D)形参是虚拟的,不占用存储单元
参考答案:A
参考分析:本题并不严谨,因为实参可以是表达式,当实参为表达式时,实参并不单独占用独立的存储单元。
6.6 若调用一个函数,且此函数中没有return语句,则正确的说法是该函数     
A)没有返回值                    B)返回若干个系统默认值
C)返回一个用户所希望的函数值    D)返回一个不确定的值
参考答案:D
参考分析:函数有没有返回值是由函数类型所决定的,当没有retrun语句,系统不能返回一个确定的值而已。
6.7 以下不正确的说法是,C语言规定     
A)实参可以是常量、变量或表达式
B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8 以下正确的说法是     
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
参考答案:C
6.9 C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是     
A)地址传递                            B)单向值传递
C)由实参传给形参,再由形参传回实参    D)由用户指定传递方式
参考答案:B
6.10 以下程序有语法性错误,有关错误原因的正确说法是     
main()
{int G=5,k;
void prt_char();
......
k=prt_char(G);
......
}
A)语句void prt_char();有错,它是函数调用语句,不能用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
参考答案:C
6.11 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是     
A)float型    B)int型    C)long型    D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由      所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13 下面函数调用语句含有实参的个数为     
fun((exp1,exp2),(exp3,exp4,exp5));
A)1    B)2    C)4    D)5
参考答案:B
参考分析:该函数的实参是两个逗号表达式。
6.14 以下错误的描述是     
函数调用可以
A)出现在执行语句中      B)出现在表达式中
C)作为函数的实参        D)作为函数的形参
参考答案:D
6.15 以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include <stdio.h>
#include <math.h>
float f(float,float);
main()
函数printf{float x,y,z,sum;
scanf("%f%f%f",&x,&y,&z);
sum=f(【1】)+f(【2】);
printf("sum=%f\n",sum);
}
float f(float a,float b)
{float value;
falue=a/b;
return(value);
}
【1】A)x-y,x+y    B)x+y,x-y    C)z+y,z-y    D)z-y,z+y
【2】A)x-y,x+y    B)x+y,x-y    C)z+y,z-y    D)z-y,z+y
参考答案:【1】B    【2】C
6.16以下正确的描述是________。
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可嵌套
D)函数的定义和函数的调用均可以嵌套
参考答案:B
6.17 以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有的这样的数及其个数。请选择填空。
sub(int k,int n)
{int a1,a2;
a2=【1】;
a1=k-【2】;
if((k%3==0&&a2==5)||(k%3==0&&a1==5))
  {printf("%4d",k);n++;return n;}
else return -1;
}
main()
{int n=0,k,m;
for(k=10;k<100;k++)
  {m=sub(k,n);
    if(m!=-1) n=m;
    }
printf("\nn=%d",n);
}
【1】A)k*10    B)k%10    C)k/10    D)k*10%10
【2】A)a2*10    B)a2    C)a2/10    D)a2%10
参考答案:【1】C    【2】A
6.18 以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是     
void move(char getone,char putone)
{printf("%c-->%c\n",getone,putone);}
void hanoi(int n,char one,char two,char three)
{if(n==1) move(one,three);
else
  {hanoi(n-1,one,three,two);
    move(one,three);
    hanoi(n-1,two,one,three);
    }
}
A)A-->C    B)A-->C    C)A-->C    D)A-->C
  A-->B      A-->B      A-->B      A-->B
  C-->B      C-->A      C-->B      C-->B
  B-->A      A-->B      A-->C      A-->C
  C-->B      B-->C      B-->A      A-->B
  A-->C      A-->C      B-->C      B-->C
  A-->B      A-->B      A-->C      A-->C
参考答案:C
6.19 若用数组名作为函数调用的实参,传递给形参的是     
A)数组的首地址          B)数组第一个元素的值
C)数组中全部元素的值    D)数组元素的个数
参考答案:A
6.20 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为     
int a[3][4];
f(a);
A)f(int array[][6])  B)f(int array[3][])  C)f(int array[][4])  D)f(int array[2][5])
参考答案:B
6.21 若使用一位数组名作为函数实参,则以下正确的说法是     
A)必须在主调函数中说明此数组的大小
B)实参数组类型与形参数组类型可以不匹配
C)在被调函数中,不需要考虑形参数组的大小
D)实参数组名与形参数组名必须一致
参考答案:C
6.22 以下函数binary的作用是应用折半查法从存有10个整数的a数组中对关键字m进行查,若到,返回其下标值;反之,返回-1。请选择填空。
int binary(int a[],int m)
{int low=0,high=9,mid;
while(low<=high)
  {mid=(low+high)/2;
  if(m<a[mid]) 【1】;
  else if(m>a[mid]) 【2】;
  else return(mid);
  }
return(-1);
}
A)high=mid-1    B)high=mid+1    C)low=mid-1    D)low=mid+1
参考答案:【1】A    【2】D
6.23如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是