当前位置:文档之家› C语言第7章函数

C语言第7章函数

C语言第7章函数
C语言第7章函数

第七章函数

一、选择题

1.如果在一个函数的复合语句中定义了一个变量,则该变量()。

A)只在该复合语句中有效,在该复合语句外无效

B)在该函数中任何位置都有效

C)在本程序的源文件范围内均有效

D)此定义方法错误,其变量为非法变量

2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:。A)地址传递;B)单向值传递;

C)双向值传递;D)由用户指定传递方式

3.以下关于C语言程序中函数的说法正确的是:。

A)函数的定义可以嵌套,但函数的调用不可以嵌套;

B)函数的定义不可以嵌套,但函数的调用可以嵌套;

C)函数的定义和调用均不可以嵌套;

D)函数的定义和调用都可以嵌套。

4.以下正确的函数形式是:。

A)double fun(int x,int y) B)fun (int x,y)

{z=x+y;return z;} {int z;return z;}

C)fun(x,y) D)double fun(int x,int y) {int x,y; double z; {double z;

z=x+y; return z;} z=x+y; return z;}

5.以下说法不正确的是:。

C 语言规定

A)实参可以是常量、变量或表达式

B)形参可以是常量、变量或表达式

C)实参可以是任意类型

D)形参应与其对应的实参类型一致或赋值兼容

6.在下面的函数声明中,存在着语法错误的是。

A)BC(int a, int);B)BC(int,int);

C)BC(int,int=5);D)BC(int x, int y);

7.以下错误的描述是。

函数调用可以

A)出现在执行语句中B)出现在一个表达式中

C)做为一个函数的实参D)做为一个函数的形参

8.下面叙述中正确的是。

A)对于用户自己定义的函数,在使用前必须加以说明

B)函数可以返回一个值,也可以什么值也不返回

C)说明函数时必须明确其参数类型和返回类型

D)空函数不完成任何操作,所以在程序设计中没有用处

9.下面叙述中错误的是。

A)主函数中定义的变量在整个程序中都是有效的

B)在其他函数中定义的变量在主函数中也都不能使用

C)形式参数也是局部变量

D)复合语句中定义的函数只在该复合语句中有效

10.下面叙述中正确的是。

A)全局变量在定义它的文件中的任何地方都是有效的

B)全局变量在程序全部执行过程中一直占用内存单元

C)同一文件中的变量不能重名

D)使用全局变量有利于程序的模块化和可读性的提高

11.若函数的类型和return语句中表达式的类型不一致,则。

A)编译时出错

B)运行时出现不确定结果

C)不会出错,且返回值的类型以return语句中表达式的类型为准

D)不会出错,且返回值的类型以函数的类型为准

12.在函数的说明和定义时若没有指出函数的类型,则。

A)系统自动认为函数类型为整型

B) 系统自动认为函数类型为实型

C)系统自动认为函数类型为字符型

D)编译时会出错

13.C语言中若不特别声明,则变量的类型被认为是。

A)extern B)static

C)register D)auto

14.在函数调用语句fun1(fun2(x,y),(x,y),z=x+y);中,fun1的实际参数的个数是。

A)3 B)7 C)4 D)5

15.对函数的调用不可以出现在。

A)对一个变量赋初值

B)调用函数时传递的实际参数

C)函数的形式参数

D)引用数组元素[ ]的运算符中

16. 若用数组名作为函数调用的实参,传递给形参的是。

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

C)数组中全部元素的值D)数组元素的个数

17.以下正确的说法是。

在C语言中:

A)实参和与其对应的形参各占用独立的存储单元

B) 实参和与其对应的形参共占用一个存储单元

C) 只有当实参和与其对应的形参同名时才共占用存储单元

D) 形参是虚拟的,不占用存储单元

18.有如下程序

int func(int a,int b)

{ return(a+b);}

主函数包含程序段:

int x=2,y=5,z=8,r;

r=func(func(x,y),z);

则r的值为。

A) 12 B) 13 C) 14 D) 15

19.以下C语言中,对函数不正确的描述是。

A)当用数组名作形参时,形参数组改变可使实参数组随之改变

B)允许函数递归调用

C)函数形参的作用范围只是局限于所定义的函数内

D)函数说明必须在主调函数之前

20.一个数据类型为void的函数中可以没有return语句,那么函数的被调用时。

A) 没有返回值B) 返回一个系统默认值

B) 返回值由用户临时决定D) 返回一个不确定的值

二、填空题

1函数直接或者间接地自己调用自己,被称为函数的____。

2在C 语言中,某函数在一个程序中被调用的次数是____限制的。

3一个C 程序可以由一个或多个____组成。

4从用户的角度看,C 语言中的函数有两种,即库函数和____。

5在定义函数时,函数名后面的括号中的变量名称为____。

6在调用函数时函数名括号后面的变量名称为____。

7在函数内部定义只在本函数内有效的变量称为____。

8在函数外部定义的变量称为____。

9 在C 语言中,一个函数一般由两个部分组成,分别是___和函数体。

10 函数调用时,实参和形参分别占用不同的内存单元,数据传递时按照___的方式进行。

三、判断题

1. 不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。

2. 通过return语句,函数可以带回一个或一个以上的返回值。

3.C程序中有调用关系的所有函数必须放在同一个源程序文件中。

4. 如果被调用函数的定义出现在主调函数之前,可以不必加以声明。

5. C程序中,任何非主函数都可以调用其他任何非主函数。

6. 如果某个函数在定义时省略了存储类型,则默认的存储类型是int。

7. 函数定义时,可以不指定形参的类型,函数调用时由实参的类型决定形参的类型。

8. 若 i 为某函数 func 之内说明的变量,则当 func 执行完后,i值无定义。

9. 在C语言中,所有函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数。

10. 函数内定义的变量是外部变量,而在函数之外定义的变量称为局部变量,外部变量是全局变量。

答案:

一、ABBDBCDBABDADACAADDA

二、递归调用无函数自定义函数形式参数实际参数局部变量

全局变量函数首部单向值传递

三、正确错误错误正确正确正确错误正确正确错误

C语言 第七章 函数

第七章函数 一、选择题 1.【B】 分析:函数返回值的隐含类型是整型。 2.【B】 分析:main函数可以在任何地方出现。它是程序的入口。 3.【D】 分析:函数的调用有一个返回值或者实现一定的功能,因此可以作为独立的语句存在,也可以出现在表达式中,可以作为一个函数的实参(返回值是一个实际的值)。4.【B】 分析:实参与形参之间的数据传递,只能是实参传给形参,单向传递。 5.【B】 分析:任何函数(除了main函数)的使用通过调用实现。普能的函数都能被单独编译(一定要能过调用才能运行),不能在一个函数中嵌套定义另一个函数。 6.【CD】 分析:C选项程序就是由若干个函数组成,无论是否有其他函数,主函数一定得存在。每个程序都必须有且仅有一个主函数,但不是每个程序文件都必须有main()函数。因为一个程序可能包含多个程序文件。函数不能嵌套定义。 7.【D】 分析:函数调用时实参必须与形参在个数,类型,顺序上相同。A选项中的"abc"是字符串,所以错误。C选项中'65'本身就是错误的。函数的返回值为空,不能用于赋值运算,所以B选项错误。D选项的第二个32在传给形参时可以转换为实型,正确。8.【A】 分析:实参都是用逗号隔开,第二个实参是个加法表达式,第三个实参是个逗号表达式。9.【C】 分析:fl函数功能返回较大的值,f2函数的功能返回较小的值。f1(a,b)返回为4,f2(a,b)返回为3。 10.【C】 分析:void *fun();的含义是fun函数的返回值是无值型的指针类型。 11.【C】 分析:函数在调用时不会出现类型说明符,所以A,D错误。函数的返回值为空,不能用于赋值运算,所以B选项错误。 12.【D】 分析:fun函数的功能选择两个数中较大的一个作为返回值。x为3,y为8,z为6以实参传到形参中,所以fun(fun(x,y), 2*z)等价于fun(fun(3,8), 2*6)等价于fun(8, 12),最后r被赋12。答案选D。 13.【B】 分析:fun函数功能返回两个数之和。此题就是函数调用作为函数实参。a为2,b为5,c 为8传到fun((int)fun(a+c,b),a-c))中那么它等价于fun(15,-6)。所以答案选B。14.【C】 分析:此题关键的一点就是实参与形参数据是单向传递的,a为31以实参传到函数中或者说传到形参z中,而函数体z=x*x+y*y会使z发生改变,形参改变了,但是实参是不

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

c语言课后习题第7章函数

习 题 7 7.1 已有变量定义和函数调用语句:int a=1,b=–5,c ;c=fun(a,b);fun 函数的作用是计算 两个数之差的绝对值,并将差值返回调用函数,请编写fun 函数。 Fun(int x,int y) { } 7.1 求两数之差绝对值 #include fun(int x,int y) { return abs(x-y); } main() { int a=1,b=-5,c; c=fun(a,b); printf("|%d-%d|=%d\n",a,b,c); } 7.2 已有变量定义和函数调用语句:int x=57;isprime(x);函数isprime( );用来判断 一个整型数a 是否为素数,若是素数,函数返回1,否则返回0。请编写isprime 函数。 isprime(int a) { } 7.3 已有变量定义和函数调用语句int a ,b ;b=sum(a);函数sum()用以求∑=n k k 1,和数作为 函数值返回。若a 的值为10,经函数sum 的计算后,b 的值是55。请编写sum 函数。 Sum(int n) { } 7.3 求∑k #include sum(int n) { int k,s=0; for(k=1;k<=n;k++) s=s+k; return s; } main() { int a,b; printf("Input a: "); scanf("%d",&a); b=sum(a);

printf("%c(1,%d)=%d\n",228,a,b); } 7.4 一函数,输入一行字符,将此字符串中最长的单词输出。 7.4 输出最长的单词,假设只包含字母和空格,单词间以空格分隔,空格个数不限#include void fun(char a[]) { int n,i,j,k=0,len[80],p; char c[80][80],max[80]; n=strlen(a); for(i=0;i #include int fun(char a[]) { int i,n=0,m; for(i=0;a[i];i++) { if(isalpha(a[i])) /*如果a[i]是字母,求出相应的十进制数*/ switch(a[i]) { case 'a': case 'A': m=10; break;

C语言第7章函数

第七章函数 一、选择题 1.如果在一个函数的复合语句中定义了一个变量,则该变量()。 A)只在该复合语句中有效,在该复合语句外无效 B)在该函数中任何位置都有效 C)在本程序的源文件范围内均有效 D)此定义方法错误,其变量为非法变量 2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:。A)地址传递;B)单向值传递; C)双向值传递;D)由用户指定传递方式 3.以下关于C语言程序中函数的说法正确的是:。 A)函数的定义可以嵌套,但函数的调用不可以嵌套; B)函数的定义不可以嵌套,但函数的调用可以嵌套; C)函数的定义和调用均不可以嵌套; D)函数的定义和调用都可以嵌套。 4.以下正确的函数形式是:。 A)double fun(int x,int y)B)fun(int x,y) {z=x+y;return z;}{int z;return z;} C)fun(x,y)D)double fun(int x,int y) {int x,y;double z;{double z; z=x+y;return z;}z=x+y;return z;} 5.以下说法不正确的是:。 C语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致或赋值兼容 6.在下面的函数声明中,存在着语法错误的是。 A)BC(int a,int);B)BC(int,int); C)BC(int,int=5);D)BC(int x,int y); 7.以下错误的描述是。 函数调用可以 A)出现在执行语句中B)出现在一个表达式中 C)做为一个函数的实参D)做为一个函数的形参 8.下面叙述中正确的是。 A)对于用户自己定义的函数,在使用前必须加以说明 B)函数可以返回一个值,也可以什么值也不返回 C)说明函数时必须明确其参数类型和返回类型 D)空函数不完成任何操作,所以在程序设计中没有用处 9.下面叙述中错误的是。 A)主函数中定义的变量在整个程序中都是有效的

C语言基础题第七章:函数

第七章:函数 一、单选题 1、若已用k=fun( fun (a,b,&c ) , 5, &a ); 形式正确调用fun函数,则该函数的形参个数为 B A、2 B、3 C、4 D、5 2、以下叙述中正确的是。 D A、形参和实参均属于局部变量 B、形参和实参必须是变量 C、形参的默认类型是register D、形参的默认类型是auto 3、假设x为局部变量,而且在整个程序运行期间始终占据固定的存储单元,则它的存储类应是。B A、auto B、static C、extern D、register 4、int fun( int x , int y ) C { return x+y ; } main( ) { printf(“%d \n”, fun(fun(1,2), fun ( 3,4 ) ) ) ; } 程序运行后的输出结果是。 A、3 B、7 C、10 D、编译错误 5、void fun ( char *s ) B { s=s+2; *s = *s +2 ; } main () { char *a="12345 " ; fun ( a ) ; printf ( " % s \n ", a ); } 程序运行后的输出结果是。 A、12345 B、12545 C、345 D、545 6、void fun ( int *a, int * b) { int *t ; t=a ; a = b ; b = t ; ( *a )++ ; (* b) +=2 ; } main ( ) { int a=1, b=10 ; fun ( &a, & b) ; printf ( " %d, %d \n ",a , b ); } 程序运行后的输出结果是。 D A、1,10 B、10,1 C、12,2 D、3,11 7、void fun ( char *p ) B { p++ ; *p=' a ' ; } main ( ) { char a[20]= " 13579 " ; fun ( a +1 ) ; fun( a + 3) ; printf ( " %s\n ", a ); } 程序运行后的输出结果是。 A、1a5a B、13a7a C、1a5a9 D、a3a79

C语言 第七章 函数

C语言函数实验 【试验目的】 1、掌握C语言中函数定义、调用函数的方法。 2、掌握函数形参与实际参数的参数传递关系。 【试验内容】 1、以下程序的输出结果是()。 #include double f(int n) { int i; double s=1.0; for(i=1;i<=n;i++) s+=1.0/i; return s; } int main() { int i; double a=0.0; double f(int n); for(i=0;i<3;i++) a+=f(i); printf("a=%f\n",a); return 0; } 2、以下程序输出结果是()。 #include int fun(int b) { int d=5; d+=b++; printf("d1=%d\n",d); } int main() {

int a=2,d=3; int fun(int b); fun(a); d+=a++; printf("d2=%d\n",d); return 0; } 3、以下程序输出结果是()。#include int f(int g) { switch(g) { case 0: return 0; case 1: case 2: return 1; } return (f(g-1)+f(g-2)); } int main() { int k; int f(int g); k=f(5); printf("k=%d\n",k); } 4、以下程序的输出结果是()。#include int fun(int n) { int s; if(n==0) s=7; else s=n+fun(n-1); return s; } int main() { printf("%d\n",fun(3)); return 0; }

小甲鱼C语言第七章 函数

第七章函数 如果有人问你,这个地球上什么动物最聪明?我想不会有其他答案,这个地球上人类是最聪明的。我们去百度一下“人类”,会发现百度百科中是这样描述人类的:人的总称,是地球上一中相比较来说比较高智慧的生物,可以说是地球至今的统治者。《现代汉语词典》对人的解释是:能制造工具、并且能够熟练使用工具进行劳动的高等动物。 《现代汉语词典》中对人类的解释离不开“工具”这个词。我们人类的祖先在使用天然工具的过程中,逐渐学会了如何制造工具。工具是什么呢?工具往往具有某些特定的作用、可以实现某种功能。比如打火机,可以用于打火,当我们想抽烟的时候,只需要轻轻的按一下打火机就可以了,而不需要钻木取火,如果现在还有人钻木取火的话,除非那个人是想实验一下钻木取火的真实性,否则为了帮助这个社会,我们就可以打电话通知精神病院了。 工具简化了我们的生活,也丰富了我们的生活。当我们需要实现某种功能的时候,只需要把对应的工具拿过来使用就好了。C语言中也提供了这种使用某种“工具”来处理特定问题的方法,称之为函数。 7.1 函数概述 有些人在看到本章的标题的时候可能就会惊呼:我函数学的最差了!!我最讨厌函数了!!。没错,数学中的函数的确很讨厌(针对我个人来说),我也很不喜欢它。但是不要担心,这里不会讲数学中的函数,更不会告诉你一次函数和二次函数的差别。我们这里讲的是计算机语言中的函数。 函数,在有些语言当中也称为方法。要说计算机语言中的函数和数学中的函数完全不一样吗?其实也不然,在计算机语言当中,函数就是具有特定功能的“工具”。像我们目前使用过的printf函数和scanf函数,前者用于输出,后者用于输入。还有我们每次编写代码都会使用的main函数。只不过printf和scanf函数是C语言提供的,我们只需要会用就行了,而main函数的功能是我们自己编写的。 为了更好的理解函数的概念,我举个例子来说。日常生活中我们经常会用到ATM自动取款机,这是一个非常方便的工具,我们平常只需要把钱存在卡里,需要的时候可以24小时去取款机中取钱,我想大家都应该有过去取款机取钱的经历,回想一下这个过程:走到取款机面前,我们要把卡放进去,然后取款机会提示输入密码,密码正确之后,选择取款,然后输入取款金额,取款机会把相应的钱吐出来,随后将会提示你是否打印凭条,打印完之后点击取款机屏幕上的退出,便可以取回自己的银行卡。 取款机实现了“自动取款”这个功能,在使用这个功能的时候,我们首先需要把卡放进取款机里,而且还要输入正确的密码,当密码正确之后,我们使用取款这个功能取得相应的钱。最后这个功能完成了,打印一张凭条,打印了此次取款的记录,最后把卡退还给用户。 那么自动取款机就可以说是一个函数,它具有取钱、存钱、转账等等功能,而且我们不需要知道这种功能是如何实现的,我们只需要会使用就可以了。 我们在C语言中也使用函数来实现某种特定的功能。C语言中函数分为两类,一类是库函数,一类是自定义函数。C语言有着丰富的库函数,这个库函数又是个啥子东西?C语言的语句十分简单,如果要使用C语言的语句来完成printf()和scanf()的功能,就需要编写颇为复杂的程序,因为C语言的语句中没有提供可以用于输出或输入的语句。又如为了显示一段文字,或者输入一段文字,我们可以直接使用printf和scanf函数,可以直接用于输出和输入,我们不必去关心这两个函数是如何实现输出和输入功能的。但是,C语言是不可

相关主题
文本预览
相关文档 最新文档