1、以下关于函数叙述中,错误的是?
A、函数未被调用时,系统将不为形参分配内存单元;
B、实参与形参的个数必须相等,且实参与形参的类型必须对应一致;
C、当形参是变量时,实参可以是常量、变量或表达式;
D、如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间;
答案:B;强制转换问题
2、函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?
A、实参将地址传递给形参,并释放原先占用的存储单元;
B、实参将地址传递给形参,调用结束时形参再将此地址回传给实参;
C、实参将值传递给形参,调用结束时形参再将其值回传给实参;
D、实参将值传递给形参,调用结束时形参并不将其值回传给实参;
答案:D;
3、若函数的形参为一维数组,则下列说法中正确的是()。
A、使用函数时的对应实参必为数组名。
B、形参数组可以不指定大小。
C、形参数组的元素个数必须等于实参数组的元素个数。
D、形参数组的元素个数必须多于实参数组的元素个数。
答案:B;
4、有以下函数定义:
void fun(int n,double x){……}
下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。
A、fun(int y,double m);
B、k=fun(10,12.5);
C、fun(x,n);
D、void fun(n,x);
答案:C;A选项直接写名称错误,B选项有返回值K,D选项写void重复
5、程序运行结果是:
#include<stdio.h>
float fun(int x, int y)
{
return(x+y);
}
void main()
{
int a=2,b=5,c=8;
printf(“%3.0f\n”, fun((int)fun(a+c, b), a-c));
}
A、编译出错
B、 9
C、21
D、9.0
答案:C;
6.以下描述正确的是?
A、调用函数时的实参只能是有确定值的变量;
B、return()语句的括号中,可以是变量、常量或有确定值的表达式;
C、C语言中,函数调用时实参和形参间的参数传递方式不都是值传递;
D、实参和形参若类型不匹配,编译时将报错;
答案:B;
7、 C 语言中函数返回值的类型是由【 】决定。
A)return 语句中的表达式类型
B)调用函数的主调函数类型
C)调用函数时临时
D)定义函数时所指定的函数类型
答案:D;
8、 若在一个 C 源程序文件中定义了一个允许其他源文件引用的实型外部变量 a,则在另一文件中可使用的引用说 明是【 】。
A) extern static float a;
B) float a;
C) extern auto float a;
D) extern float a;
答案:D;
9、若定义函数 float *fun( ), 则函数 fun 的返回值为【 】。
A)一个实数
B)一个指向实型变量的指针
C)一个指向实型函数的指针
D)一个实型函数的入口地址
答案:B;
10、若程序中定义函数
float myadd(float a, float b)
{
return a+b;
}
并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是【 】。
A)float myadd( float a,b);
B)float myadd(float b, float a);
C)float myadd(float, float);
D)float myadd(float a, float b);
答案:A
11、以下程序的正确运行结果是【 】。
#inclued<stdio.h> main()
{
int k=4,m=1,p;
p=func(k,m); printf( "%d",p);
p=func(k,m); printf( "%d",p);
}
func(int a,int b)
{
static int m=0,i=2;
i+=m+1; m=i+a+b;
return (m);
}
A)8,17
B)8,16
C)8,20
D)8,8
答案:A;静态变量用完后不释放