1、第八章 函数一、选择题(把正确选项的字母标号填到表格中)题号1234567891011121314151617181920答案- 5 -1.把程序分解为多个函数的过程叫做 。A)图形化 B)问题分解 C)结构化 D)程序设计2.以下关于函数定义与声明的描述中正确的是 。A)函数调用出现在被调用函数中 B)函数声明中必须要带参数名C)函数定义就是声明函数的语句D)函数定义包含了实现函数功能的语句3.以下不是函数头内容的是 。A)函数名 B)数据类型 C)标题 D)形参列表4.以下关于函数参数问题的描述中正确的是 。A)无形参时要使用用void B)函数定义中的参数叫实参C)参数之间使用分号分隔D
2、)形式参数是在函数体中定义的5.以下关于局部变量的描述中错误的是 。A)局部变量是在函数内部定义的量 B)局部变量的值可以通过return语句返回C)局部变量在函数外是不可见的D)局部变量可以和其所在函数的形参同名6.以下正确的说法是 。A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)函数值的类型就是其返回值的类型D)实参的个数可以少形参个数7.以下叙述中不正确的是 。A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效8.调用函数时若实
3、参是简单的变量,则它与对应形参之间的数据传递方式是 。A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定9.以下叙述正确的是 。A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义10.在C语言中,变量的隐含存储类别是 。A)autoB)staticC)externD)无存储类别11.若有函数内部说明:int a34;则数组a中各元素 。A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值012.下面关
4、于return语句的形式描述错误的是 。A)语句格式可以是: return 表达式;B)语句格式可以是: return(表达式); C)一条return语句可以返回多个函数值D)一条return语句只能返回一个函数值13.下面函数调用语句含有实参的个数是 。func(exp1,exp2),(exp3,exp4,exp5);A)1B)2C)4D)514.下面程序执行后的输出结果为 。#include stdio.hvoid fun(int a,int b)int s;s=a*b/2;printf(%dn,s);return;void main(void)int a=10,b=16;fun(a,b
5、);return;A)10B)16C)160D)8015.下面程序执行后的输出结果为 。#include stdio.hvoid main(void)fun3(fun1(),fun2();int fun1(void) int k=20;return k;int fun2(void) int a=15;return a;void fun3(int a,int b)int k;k=(a-b)*(a+b);printf(%dn,k);return;A)0B)184C)175D)编译不通过16.下面程序的文件名为t.exe,在DOS下输入的命令行参数为:t to meet me则程序输出的结果是 。#
6、include stdio.hvoid main(int argc,char *argv) int i;printf(%dn,argc);return;A)3B)4C)2D)以上答案都不正确17.现有:#include stdio.hint *fun(int *a,int *b) int c;c=*a%*b;return &c;void main(void)int a=5,b=19,*c;c = fun(&a, &b);printf(%dn,+*c);则程序执行后的结果为 。A)8B)7C)6D)518.若有: fun(char *p2, char *p1) while(*p2=*p1)!=0
7、)p1+;p2+; 该函数的功能是 。A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2 C)对p1和p2两个指针所指字符串进行比较 D)检查p1和p2两个指针所指字符串中是否有019.下面程序执行后的结果是 。#include stdio.hint fun(int n)if(n2)return(fun(n-1)+fun(n-2);else return(2);void main(void) printf(%ldn, fun(5);A)10B)15C)20D)以上3个答案都不正确20.下列程序的输出结果是 。#include stdio.h#define N 3
8、#define M 3void fun(int aMN)printf(%dn,*(a1+2);void main(void)int aMN;int i,j;for(i=0;iM;i+)for(j=0;jN;j+)aij=i+j-(i-j);fun(a); A)3B)4C)5D)6二、判断题(错的填,对的填)题号1234567891011121314151617181920答案1. C语言是结构化程序设计语言。2. 函数声明与函数定义是一回事。3. 函数不允许嵌套定义,也就是说在一个函数的函数体内不允许再定义另一个函数。4. main函数之外的函数之间允许嵌套调用。5. 无返回值的函数,其函数体
9、的最后允许没有return语句。6. 函数通过形式参数接收其他函数传来的数据。7. 使用return语句,可以使同一个函数返回多个值。8. 没有形参的函数在定义时必须使用void关键字说明。9. 有返回值的函数,其调用可以作为表达式的一部分参加运算。10. 没有形式参数的函数,调用时圆括号内必须是空的。11. main函数可以调用任何函数,其他函数不能调用main函数。12. 一个函数若发生函数调用,该函数的执行就会暂时停止,进而转到被调用函数执行,执行完被调用函数再返回到该函数,继续往后执行。13. 程序中定义的static型的对象其生命期是整个程序的运行时间。14. static型的数值变
10、量在编译时系统对其初始化进行处理,若没有人为赋值,系统将为其赋0值。15. 自动型变量包含函数的形参变量以及函数体内部定义的局部变量。16. 函数内部的定义的数值型动态变量若不人为赋值,系统将自动为其赋0值。17. 若函数内部出现与外部同名的变量,系统会报错。18. 向函数传数组时,系统将为形参中的数组分配空间。19. 函数名是一地址常量,其值是该函数代码的首地址。20. 直接或间接调用自己的函数叫做递归函数。三、应用题1分析程序,回答问题。#include stdio.hint k = 1;void fun(int k) k+;k=k*6;void main(void)fun(k);prin
11、tf(%dn,k);(1)程序运行后的输出结果是什么?(2)若把阴影中的int k替换为void,程序运行后的输出结果又是什么?2分析程序,回答问题。#include “stdio.h”int fun(void) int a = 0;a+;return a;void main(void) int i, s=0;for(i=1;i b ? a : b;int main(void) int x = 20;int y = 30; printf(“Max value of %d and %d is %dn”,x,y,p(x,y);return 0;(1)在下方写出划线的地方应该定义函数指针p并令其指向函数fun的语句。(2)程序执行的结果是什么?四、编程题1.C语言程序设计(第2版)第263页第11题。2.C语言程序设计(第2版)第263页第12题。3.C语言程序设计(第2版)第264页第18题。4.C语言程序设计(第2版)第264页第23题。5.C语言程序设计(第2版)第264页第26题。