• 沒有找到結果。

一、填空题

1.形参是指__________;实参是指__________。

2.局部变量是__________;全局变量是__________。

3.在 C 语言中,函数的形参隐含的存储类型说明是__________。

4.C 编译中的预处理是在编译__________进行的。

5.return 语句的一般形式是__________,其功能是__________。

6.C 语言中变量的存储类别有__________、__________、__________和__________。

二、单项选择题

1.C 语言规定,当简单变量作实参时,它和对应形参之间的数据传递方式为( )。 A.地址传递

B.单向值传递

C.由实参传给形参,再由形参传回实参

D.由用户指定传递方式 2.以下错误的描述是( )。

A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式

C.实参可以是任意数据类型 D.形参应与其对应的实参类型一致

3.C 语言中一个函数返回值的类型由( )决定。

A.return 语句中的表达式类型 B.调用函数的主调函数类型 C.系统默认的类型

D.定义函数时所指定的类型

4.有一个如下定义的函数,则该函数的类型为( )。 f(int a)

{printf("%d",a);

}

A.与参数 a 的类型相同 B.void 的类型 C.没有返回值 D.无法确定

5.在 C 语言程序中( )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用不可以嵌套

D.函数的定义和函数的调用均可以嵌套 6.关于 return 语句,下列正确的说法是( )。

A.在主函数和其他函数中均可出现 B.必须在每个函数中出现

C.可以在同一个函数中出现多次

D.只能在除主函数之外的函数中出现一次

7.数组名作为实参传递给函数时,数组名被处理为( )。 A.该数组的长度

B.该数组的元素个数

C.该数组的首地址 D.该数组中各元素的值

8.下列哪种数据不存放在动态存储区中?( )。 A.函数形参变量 B.局部自动变量

C.函数调用时的现场保护和返回地址 D.局部静态变量

9.在一个源程序文件中,定义的全局变量的作用域为( )。 A.本文件的全局范围

B.本程序的全局范围 C.本函数的全局范围

D.从定义该变量的位置开始至本文件结束为止 10.以下程序的输出结果是( )。

long fun(int n) {

long s;

if (n==1||n==2) s=2;

else

s=n-fun(n-1);

return s;

} main() {

printf("%ld\n",fun(3));

}

A.1 B.2 C.3 D.4 三、阅读程序题

1.写出下列程序的运行结果。

#include "stdio.h"

main()

{int x=2,y=3,z=0;

int func(int x,int y,int z);

printf("(1) x=%d,y=%d,z=%d\n",x,y,z);

func(x,y,z);

printf("(3) x=%d,y=%d,z=%d\n",x,y,z);

}

int func(int x,int y,int z) {z=x+y;

x=x*x;

y=y*y;

printf("(2) x=%d,y=%d,z=%d\n",x,y,z);

}

2.写出下列程序的运行结果。

main() {int i,a=3;

for (i=0;i<3;i++)

printf("%d,%d\n",i,f(a));

}

f(int a) {auto int b=0;

static int c=3;

b++;c++;

return(a+b+c);

}

3.写出下列程序的运行结果,并写出程序的功能。

#include "stdio.h"

int sum(int k);

main() {int s,i;

for (i=1;i<=10;i++)

s=sum(i);

printf("s=%d\n",s);

}

#include "stdio.h"

void p1();

void p2();

static int a=5;

main ( ) {

printf("a=%d\n",a);

p1();

p2();

}

void p1() {

printf("a*a=%d\n",a*a);

}

void p2() {

printf("a*a*a=%d\n",a*a*a);

}

四、程序填空题

1.以下函数的功能是求 x 的 y 次方。

double fun(double x,int y) {

#include "stdio.h"

main()

{int func(int n);

int s,i;

(1) ;

for (i=0;i<=10;i++) s= (2) ;

printf("%d\n",s);

}

int func(int n) {int k,p;

p= (3) ;

for (k=1;k<=n;k++) p= (4) ; return (5) ; }

五、编程题

1.计算组合 !

!( )!

m n

n

m n m

C

。设 m=6,n=10,m 和 n 的值要求使用键盘输入,求出结果 后按下列格式输出,其中,在?号的位置上显示计算结果。要求使用一个自定义函数求出 p!

供主函数调用,另外使用一个自定义函数打印一行 “*”号供主函数调用。

****************************

C= ?

****************************

2.设计一个自定义函数 rep,功能为重复输出 n 个字符,然后在主函数里调用该函数,

分别输出下列图形:

(1)**********

&&&&&&&&&&

**********

&&&&&&&&&&

**********

&&&&&&&&&&

(2)#

##

###

####

#####

(3)1 22 333 4444 55555

(4) * ***

*****

*******

*********

3.设计一个计算字符串长度的自定义函数 len,调用该函数求一个字符串的长度。

4.计算s  1! 2! 3!     10!,要求使用一个自定义函数 facto 求出 n!供主函数调用,分 别使用以下 3 种方法设计 facto 函数。

(1)使用自动变量与循环的方法。

(2)使用函数递归调用的方法。

(3)使用静态变量的方法。

5.函数嵌套调用练习。学生要在 6 门课程中选修 2 门课程,其中有 2 门是专业选修课程,

要求在所选择的 2 门课程中,至少有一门是专业选修课。设计程序计算有多少种选法,要求设 计一个函数 cnm 计算C ,设计一个函数nm facto 计算 p!(提示:方法 1:sC C21 41C22;方法 2:

2 2

6 4

sCC )。

6.函数递归调用练习。设计程序,根据组合的性质计算组合CnmCnm1Cnm11

7.设要将一段英文书信译成密码,密码的编码规则是:用原来的字符后面第 4 个字母代 替原来的字母。例如“A”后面的第 4 个字母是“E”,如此类推。设计一个程序,能够实现加 密和解密功能。要求首先显示一个菜单供用户选择,当用户选择 1 时,实现加密功能,而当用 户选择 2 时,实现解密功能。程序使用户通过键盘给字符数组输入要加密或者解密的文字,然 后对文字进行处理,最后将加密或解密的文字显示出来。要求显示的功能菜单及提示信息如下:

功能菜单

*******************************

* 1. 加密 *

* 2. 解密 *

* 3. 退出 *

*******************************

Please input your choice:

8.为小学生设计一个验算程序,具有验算两个整数加、减、乘、除的功能。要求显示菜 单如下,供小学生选择。当选择 1 时,让学生输入被加数和加数,然后将求和结果显示出来;

当选择 2、3 或者 4 时,则做相应的操作。要求将输入与输出分别设计为输入函数 input 和输 出函数 output。

功能菜单

*******************************

* 1. 加法验算 *

* 2. 减法验算 *

* 3. 乘法验算 *

* 4. 除法验算 *

*******************************

请输入(1~4):

相關文件