1、简单变量做实参时,它和对应形参之间的数据传递方式是()。
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回给实参
D.由用户指定的传递方式
正确答案:B
2、若函数的调用形式如下:
f((x1,x2,x3),(y1,y2))
则函数形参个数是( )。
A.5
B.2
C.3
D.4
正确答案:B
3、下列程序段中,有错误的是( )。
A. void change(int x, int y)
{
int t;
t=x; x=y; y=t;
}
B. int f2(int x)
{
return (x>1?printf(\"Y\"): putchar('N'));
}
C. int f()
{
int x;
scanf(\"%d\
return x++, x+5;
}
D.int main()
{
float a=2.6 , b;
b=max(2.1, 3.6)=a++;
printf(\"%f\
}
正确答案:D
4、以下说法正确的是( )。
A.C程序中,被调用的函数必须在main()函数中定义
B.C程序中的main()函数必须放在程序的开始处
C.C程序总是从第一个定义的函数开始执行
D.C程序总是从主函数main()开始执行
正确答案:D
5、关于函数原型,叙述错误的是( )。
A.当自定义函数被放在了主调函数的后面,就需要在函数调用之前,加上函数的原型声明
B.所有函数定义放在main函数之前,可以省略原型声明
C.函数可以不必进行声明,可以放在程序的任意位置
D.被调用函数在主调函数之前定义,可以省略函数原型声明
正确答案:C
6、下列函数定义中,正确的是( )。
A.int max1(int a,b)
{
return a>b?a:b;
}
B.int max1(a,b)
{
int a,b;
return a>b?a:b;
}
C.int max1(int a,int b)
{
return a>b?a:b;
}
D.int max1(int a,int b);
{
return a>b?a:b;
}
正确答案:C
7、以下函数返回值的类型是( )。
int fff(float x)
{
x=x+5;
return x;
}
A.无法确定
B.void 类型
C.int类型
D.与参数x的类型相同
正确答案:C
8、以下叙述错误的是( )。
A.函数调用可以出现在一个表达式中
B.函数调用可以作为一个函数的实参
C.函数调用可以作为一个函数的形参
D.函数允许递归调用
正确答案:C
9、下面叙述中错误的是( )。
A.函数的形参和实参必须要使用相同名字的变量
B.一般来说,函数的形参和实参的类型要一致
C.函数的形式参数,在函数未被调用时不被分配存储空间
D.若函数的定义出现在主调函数之前,则可以不必再加说明
正确答案:A
二、判断题
1、模块化程序设计方法是采用逐步分解、分而治之的方法处理问题。(√)
2、没有返回值的函数可以进行函数的语句调用。(×)
3、函数通过return语句可以向主调用函数返回多个值。(×)4、一个函数中有且只能有一个return 语句。(×)
5、函数可以根据需要通过参数与调用函数之间进行数据传递。三、填空题
1、数组作为函数参数进行函数调用时,实参应当采用( )。正确答案:数组名
2、以下函数的功能是连接两个字符串,请完善程序。
void str_cat(char str1[ ], char str2[ ], char str[ ])
{
int i,j;
√)
(
for(i=0;str1[i]!= '\\0';i++)
str[i]=str1[i];
for(j=0;str2[j]!='\\0';j++)
str[i++]=str2[j];
_______;
}
正确答案:str[i]='\\0' 或 str[i]=0
3、以下函数的功能是计算x的y次方,请完善程序。
double fun(float x, int y)
{
int i=1;
double z=1;
if(y==0) return 1;
while( i<=y )
{
z= _______;
i++;
}
return z;
}
正确答案:z*x 或 x*z
4、如果函数不要求返回值,可用_____来定义函数为空类型。
正确答案:void
5、下面程序的运行结果:_______。
#include int fan(int n)
{
int k;
if(n==0||n==1)
return 3;
else
k=n-fan(n-2);
return k;
}
int main()
{
printf(\"%d\\n\
return 0;
}
正确答案:7
6、/*下列程序是求n元数组的平均值,请完善程序。*/
#include #define N 10
float aver (float array[ ], int n)
{
int i;
float sum=0;
for (i=0; isum=sum+array[i];return sum/n;
}
int main()
{
int i;
float a[N];
for (i=0; iscanf(\"%f\printf(\"平均值 %f\\n\
return 0;
}
正确答案:aver(a,N)