C语言重修复习资料(2016年4月答案) 下载本文

C程序设计复习 8.数组作为函数参数,注意其含义及使用的情况;

9.变量的存储类型,注意static类型的初值、值的变化,外部变量的使用等; 10.内部函数和外部函数:注意其区别。 【要点归纳】 1、函数定义

函数定义的格式有两种,即传统格式和现代格式。 z 传统的函数定义的一般格式如下: 存储类别 数据类型 函数名(形参表) 形参说明语句序列; { 说明语句序列; 可执行语句序列; }

z 现代的函数定义的一般格式如下:

存储类别 数据类型 函数名(形参说明表) { 说明语句序列; 可执行语句序列; }

2、函数调用 C 语言中函数调用的一般格式如下: 函数名(实参表)

注:在调用函数时,实参与形参的个数必须相等,对应类型应一致,实参与形参按对应顺序一一传递数据。 3、被调函数说明

在程序中调用一个函数时,需要说明该函数的数据类型,这称为函数说明。 函数说明在程序的数据说明部分。 传统的函数说明格式如下: 数据类型 函数名(); 现代的函数说明格式如下:

数据类型 函数名(形参说明表); 或

数据类型 函数名(形参数据类型表); 4、函数的存储类别

在 C 语言中,函数可分为 static 型和 extern 型两种。 z extern 型函数

在定义一个函数时,若指定函数的存储类别为 extern 关键字,则称该函数为“外部”函数,其基本特征是:该函数可以被其他编译单位中的函数调用。 z static 型函数

在定义一个函数时,若指定函数的存储类别为 static 关键字,则称该函数为“静态”函数,其基本特征是:只限于本编译单位中的其他函数调用它,而不允许其他编译单位中的函数调用它。

5、函数参数的计算顺序

在 Turbo C 中,函数参数的计算顺序是从右向左进行的。

第 21 页 共 43 页

C程序设计复习 6、变量的作用域

从作用域的角度看, C 语言的变量分为局部变量和全局变量。 z 局部变量

在函数内部或复合语句内定义的变量称为局部变量,也称为内部变量。函数的形式参数也属于局部变量。 z 全局变量

在函数外部定义的变量称为全局变量。全局变量的作用域是从该变量定义的位置开始,到整个源文件结束止。 7、变量的存储类别 ⑴局部变量的存储类别

z auto 局部变量 z register 局部变量 z static 局部变量 ⑵全局变量的存储类别

z static 全局变量 z extern 全局变量

二.练习

㈠.填空题:

1.以下程序的输出结果是 12 。

unsigned fun6(unsigned num) { unsigned k=1; do

{ k*=num;num/=10;}while(num); return k;} main()

{ unsigned n=26; printf(“%d\\n”,fun6(n)); } 2.以下程序的输出结果是 9.0 。

double sub(double x,double y,double z) { y-=1.0;z=z+x;return z;} main()

{ double a=2.5,b=9.0; printf(“%f\\n”,sub(b-a,a,a));} 3.以下程序的输出结果是 4 。

fun1(int a,int b) { int c;

a+=a;b+=b;c=fun2(a,b); return c*c;}

fun2(int a,int b) { int c;

c=a*b%3;return c;}

第 22 页 共 43 页

C程序设计复习 main()

{ int x=11,y=19; printf(“%d\\n”,fun1(x,y));}

4.下面pi函数的功能是,根据以下公式返回满足精度ε要求的π的值。请填空。

double pi(double eps)

{ double s=0.0,t=1.0;int n; for( n=1 ;t>eps;n++) { s+=t;t=n*t/(2*n+1); return (2.0* s );} 5.以下函数是求x的y次方。请填空。

double fun(double x,int y) { int i;double z=1;

for(i=1;i <=y ;i++) z= z*x ;return z;} 6.以下程序的功能是计算s=1!+2!+??+n!请填空。

long f(int n) { int i;long s;

s= 1 ;for(i=1;i<=n;i++) s= s*i ; return s;} main()

{ long s;int k,n; scanf(“%d”,&n);s= 0 ;

for(k=1;k<=n;k++) s=s+ f(k) ; printf(“%d\\n”,s);}

7.在定义一个函数时如果不加类型说明,则它隐含的类型为 int 。 8.下列程序的运行结果是a= 4 4 ,b= 5 6

f( )

{ int a=3; static b=4; a=a+1; b=b+1; printf(“a=%d,b=%d\\n”,a,b);} main( )

{ f( ); f( );}

9.下列程序的运行结果是 i=7;j=6;x=7 i=2;j=7;x=5 main( )

{int i=2,x=5,j=7; fun(j,6 );

printf(“i=%d;j=%d;x=%d\\n”,i,j,x);} fun( int i, int j)

{ int x=7; printf(“i=%d;j=%d;x=%d\\n”,i,j,x);} 10.下列程序的运行结果是 # x=2 y=3 z=0

第 23 页 共 43 页

C程序设计复习 * x=4 y=9 z=5 @ x=2 y=3 z=0

main( )

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

printf(“# x=%d y=%d z=%d\\n”, x, y, z); add(x, y, z);

printf(“@ x=%d y=%d z=%d\\n”, x, y, z);} add( int x, int y, int z) { z=x+y; x=x*x;; y=y*y;

printf(“* x=%d y=%d z=%d\\n”, x, y, z);}

㈡.选择题:

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

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

B.在C语言程序中,要调用的函数必须在main函数中定义 C.C语言程序总是从main函数开始执行

D.C语言程序中的main函数必须放在程序的开始部分 2.以下函数的类型是( C )。

A.与参数x的类型相同 B.void类型 C.int类型fff(float x) { printf(“%d\\n”,x*x);}

3.以下函数调用语句中,含有的实参个数是( B )。 A.1 B.2 C.4 D.5

func((exp1,exp2),(exp3,exp4,exp5)); 4.以下程序的输出结果是( C )。

A.11 B.20 C.21 D.31

func(int a,int b)

{ int c;c=a+b;return c;} main()

{ int x=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf(“%d\\n”,r);} 5.以下程序的输出结果是( A )。

A.-1 B.0 C.1 D.2

main()

{ int i=2,p; p=f(i,i+1); printf(“%d\\n”,p);} int f(int a,int b) { int c;c=a;

第 24 页 共 43 页

.无法确定 D