当前位置:首页 > 《c语言程序设计基础》单元总结与练习题及答案()
6.函数要先声明,然后才能使用,函数声明在程序中的位置有以下几种情况:(1)函数声明写在主调函数的外部,这时的函数声明为全局声明。(2)函数声明写在主调函数的说明语句中,这时的函数声明为局部声明。(3)函数的定义出现在主调函数之前,则函数声明可以省略。 7.函数的调用形式为:函数名(实际参数列表)。若调用无参函数,则实参为空;若调用有参函数,则在()内写出与形参类型、数量一致的实参。对于有参函数,函数调用过程中存在着参数传递的问题,参数传递有两种情况,其一为 值传递,其二为 地址传递。 8.函数在函数体中出现了对自身调用的语句,就称为函数递归调用。使用递归方法解决问题的关键是如何找出 递归关系 ,以及找出递归调用的 终止条件 。 9.带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 。通常用带参数的宏定义代替简单公式型函数。 10.函数的存储类型有static和extern两种。 extern 型函数称为“外部函数”,可以被其他编译单位中的函数调用; static 型函数称为“内部函数”,只能被本编译单位的函数调用。 11.程序中变量的使用范围称为变量的作用域,每个变量都有自己的作用域。按照作用域的范围可分为两种: 局部变量 和 全局变量 。 12.变量的存储方式可分为“动态存储”和“静态存储”两种。动态存储变量包括 auto 和 regiest 两种类型;静态存储变量包括 static 和 extern 两种类型。静态存储变量若没有初始化,则默认初始值为 0 。static类型变量的值具有继承性,即本次调用的初值是上次调用结束时变量的值。 单元练习
一.选择题
1.关于使用函数的目的,以下不正确的说法是( )。
A.提高程序的执行效率
B.提高程序的开发效率
D.提高程序可读性
C.减少程序文件所占内存 2.以下正确的函数首部是( )。
A.void fun(int x,int y) C.void fun(int x,y) 3.设函数fun的定义形式为:
B.void fun(int x;int y) D.void fun(x,y)
void fun(char ch, float x) { ......} A.fun(\
B.t=fun('D',12.3);
D.fun(65,65);
则以下对函数fun的调用正确的是( )。
C.fun('65',3.7);
4.关于函数的实参和形参,以下正确的说法是( )。
A.实参和对应的形参各占用独立的存储单元 B.实参和对应的形参共同占用同一存储单元 C.只有当实参与形参重名时才共同占用存储单元 D.形参是虚拟的,不占用存储单元
5.当调用函数时,实参是一个数组名,则向函数传递的是( )。
A.数组的长度
B.数组的首地址
D.数组的每一个元素的值
C.数组的每一个元素的地址
6.将一个函数指定为static存储类别后,该函数将( )。
A.既可以被同一源文件中的函数调用,也可以被其他源文件中的函数调用 B.只能被同一源文件中的函数调用,不能被其他源文件中的函数调用 C.只能被其他源文件中的函数调用,不能被同一源文件中的函数调用 D.既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用 7.以下叙述正确的是( )。
A.全局变量的作用域一定比局部变量的作用域作用范围大 B.静态static类型变量的生存期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值
二.填空题
1.假设已有#define M(r) r*r,则语句printf(“%d”,M(2+3));的执行结果为 。
2.以下程序输出结果为 。
#include
void main() {
int x=2,y=3; x=x+y;y=x-y;x=x-y; printf(\
}
fun(x,y);
printf(\
3.以下程序输出结果为 。
#include
void main() { }
int a=3,b=9; fun();
printf(\a=10;b=20;
4.以下程序输出结果为 。
#include
int f( ) //定义f函数,a为形参 {int b=0; //定义b为自动变量 static int c=3; //定义c为静态局部变量 b=b+1; c=c+1; return b+c; } void main( ) {int a1,a2; a1=f(); a2=f();
printf(\}
5.以下程序输出结果为 。
#include
void main() { }
int i,j=0; for(i=1;i<3;i++)
j+=fun(i); printf(\if(n==1) return 1; else return fun(n-1)+1;
6.以下程序输出结果为 。
#include
void main() { }
int b[5]={1,2,3,4,5}; fun(b,5);
for(int i=0;i<5;i++) printf(\for(int i=0;i if(a[i]>0) a[i]*=2; ******************************************************************************* 习题答案: 一.选择题 1.A 2.A 3.D 4.A 5.B 6.B 7.B 二.填空题 1.11 2.3,2 2,3 3.3,9 4.5,6 5.3 6.2 4 6 8 10 *******************************************************************************
共分享92篇相关文档