2024年1月4日发(作者:)

C语言(函数,变量作用范围)一

1 C语言程序由函数组成,以下说法正确的是( A ).

A)主函数可以在其它函数之前,函数内不可以嵌套定义函数

B)主函数可以在其它函数之前,函数内可以嵌套定义函数

C)主函数必须在其它函数之前,函数内不可以嵌套定义函数

D)主函数必须在其它函数之前,函数内可以嵌套定义函数

2 以下说法中不正确的是 ( A )。

A) 主函数main中定义的变量在整个文件或程序中有效

B) 不同的函数中可以使用相同名字的变量

C) 形式参数是局部变量

D) 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

3 下面函数

f(double x)

{printf(“%6dn”,x);}

的类型为( C ).

A) 实型 B)void 类型 C)int类型 D) A)、B)、C)均不正确

4 以下说法中正确的是( C ).

A)C语言程序总是从第一个定义的函数开始执行

B)在C语言程序中,要调用的函数必须在main函数中定义

C)C语言程序总是从main函数开始执行

D) C语言程序中,main函数必须放在程序的开始部分

5 以下正确的函数定义是( C ).

A) double fun(intx,int y);

{int z;

z=x+y; return z;}

B) fun(intx,y)

{int z; return z;}

C) double fun(intx,int y)

{double z;

z=x+y; return z;}

D) double fun( x, y)

{intx,y;

double z;

z=x+y; return z;}

6 定义为void类型的函数,其含义是( A ).

A)调用函数后,被调用的函数没有返回值

B)调用函数后,被调用的函数不返回

C)调用函数后,被调用的函数的返回值为任意的类型

D)以上三种说法都是错误的

7 设有如下定义:

int x=10,y=3,z ;

则语句

printf("%dn",z=(x%y,x/y));

的输出结果是( D ).

A) 1 B)0 C) 4 D)3

8 在C语言的函数中,( C )。

A)必须有形参 B)形参必须是变量名

C)可以有也可以没有形参 D)数组名不能作形参

9 函数调用语句f((x,y),(a,b,c),(1,2,3,4));中,所含的实参个数是( C ).

A) 1 B) 2 C) 3 D) 4

10 如果函数的首部省略了函数返回值的类型名,则函数被默认为( C )。

A)void类型 B)空类型

C)int类型 D)char类型

11 用数组名做函数的参数,实际上传递给形参的是( A ).

A) 数组元素的首地址 B) 数组的第一个元素的值 C) 每一个数组元素

D)整个数组的个数

12 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B ).

A)float

B)int

C)long int

D)void

13 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式是( B ).

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])

14 下列说法中正确的是( D ).

A)调用函数时,实参变量与形参变量可以共用内存单元

B)调用函数时,实参的个数、类型和顺序与形参可以不一致

C)调用函数时,形参可以是表达式

D)调用函数时,将为形参分配内存单元

15 下列语句中,不正确的是 ( D )。

A)c=2*max(a,b); B)m=max(a,max(b,c));

C)printf("%d",max(a,b)); D)int max(intx,int max(inty,int z))

16 以下函数调用语句:

fun(x+y,x-y);中实际参数的个数是( B ).

A) 1 B) 2 C) 4 D)5

17 C语言可执行程序开始执行点为( C ).

A)程序中第一条可执行语句 B) 程序中第一个函数

C)程序中的main函数 D) 包含文件中的第一个函数

18 若调用一个函数,且此函数中无return语句,则正确的说法是( D ).

A) 没有返回值;

B) 返回若干个系统默认值;

C) 能返回一个用户所希望的函数值;

D) 返回一个不确定的值

19 执行下列程序后, 变量i的值应为( A ).

int ma(intx,int y)

{return x*y;

}

main()

{ inti;

i = 5;

i = ma(i,i-1)-7;

}

A) 13 B) 17 C) 19 D) 以上都错

20 下列程序的结果为( C ).

change(intx,int y)

{int t;

t=x;x=y;y=t;

}

main()

{

int x=2,y=3;

change(x,y);

printf("x=%d,y=%dn",x,y);

}

A) x=3,y=2 B) x=2,y=3 C) x=2,y=2 D) x=3,y=3

21 执行下列程序后, 变量a的值应为( D ).

int f(int x)

{return x+3;}

main()

{int a=1;

while(f(a)<10)

a++;

}

A) 11 B) 10 C) 9 D) 7

22 若有以下函数定义,则在主函数中正确的调用语句是( C ).

void fun(int array[][5])

{ ………..}

main()

{ int a[3][5], b;

……..}

A)fun(a[3][5]);

B)b=fun(a);

C) fun(a);

D) fun(a)

23 C语言中的函数( D ).

A)可以嵌套定义。

B)不可以嵌套调用。

C)可以嵌套调用,但不能递归调用。

D)嵌套调用和递归调用均可。

24 C语言中( A )函数的递归调用.

A) 允许 B) 不允许

25 对于以下递归函数f, 调用f(4),其返回值为( B ).

int f(int n)

{ if (n)

return f(n-1)+n;

else

return n;

}

A) 8 B) 10 C) 11 D) 12

26 以下不正确的描述为( B ).

A)在函数之外定义的变量为外部变量,外部变量是全局变量。

B)在函数中既可以使用本函数中的局部变量,又可以使用全局变量。

C)若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。

27 以下正确的说法是:建立函数的目的之一是( B ).

A) 提高程序的执行效率; B) 提高程序的可读性

C) 减少程序的篇幅; D) 减少程序文件所占内存

28 执行下列语句后,a的值为( C ).

int a=12, b=7;

m(inta,int b)

{

a=b;

}

main()

{

m(a,b);

}

A) 0 B) 1 C) 12 D) 7

29 全局变量的有效范围为(D ).

A) 该程序的所有文件

B) 从本源文件的开始到结束

C) 该程序的主函数

D) 从定义变量的位置开始到本源文件结束

30 以下说法中正确的是( C ).

A)形参是全局变量,其作用范围仅限于函数内部

B)形参是全局变量,其作用范围从定义之处到文件结束。

C)形参是局部变量,其作用范围仅限于函数内部

D)形参是局部变量,其作用范围从定义之处到文件结束。

1 若使用一维数组名作为函数实参,则以下说法正确的是( AC )

A)必须在主调函数中说明此数组的大小

B)实参数组与形参数组类型可以不匹配

C)实参数组与形参数组的大小可以不一致

D)实参数组名与形参数组名必须一致

1 实参可以是常量、变量或表达式。对

2 定义函数时,形参的类型说明可放在函数体内。

3 在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内存单元。

4 数组名作函数参数时,也采用“值传送”方式。

5 在C函数中,当以数组名作为参数时,对形参变量的操作不会影响到调用函数中的实参变量,即形参值不能传回给实参。

6 函数调用可以作为一个函数的形参。

7 数组名做函数的参数时,可以只在主调函数中定义数组,被调用函数只需要确定名称就可以了。

8 数组元素做函数的实参,是双向传递,即“地址传递”方式。

9 形参和实参的变量名称可以一样。对

10 除了利用实际参数和形式参数在各函数之间传递数据外,利用全局变量,也可以在各函数间传递数据。对

11 函数的实参与形参的类型应一致。对

12 在C中,形式参数只是局限于所在函数. 对

13 在一个函数定义中只能包含一个return语句。

14 C语言不允许在调用一个函数的过程中出现直接或者间接地调用该

函数本身。

15 C语言中允许函数的嵌套定义和嵌套调用。

16 在同一源文件中,外部变量与局部变量同名时,则在局部变量的作用范围内,外部变量不起作用。对

17 不同函数中使用相同名字的变量时,代表的是相同的变量。

18 全局变量在在程序的全部执行过程中都占用存储单元。对

1 f( int m )

{

inti, j;

for( i=0; i

for( j=m-1; j>=0; j--)

printf("%1d%c",i+j, j?'*':'#');

}

如果调用f(3)将输出【 2*1*0#3*2*1#4*3*2# 】