当前位置:文档之家› 第八章函数有答案

第八章函数有答案

第八章函数有答案
第八章函数有答案

试卷编号:313

所属语

言:C语言

试卷方

案:

第八章函数

试卷总

分:

100 分

共有题

型:4

一、填空共12 题(共计48 分)

第 1 题(分)题号:824

以下程序运行后输出结果为【1】.(2007 年春江苏省二级C)#include"" int mystery(int a,int b)

{

if(b==1) retutn a;

else return a+mystery(a,b-1);

}

void main()

{ int x=5,y=3; printf("%d\n",mystery(x,y));}

答案:

=======(答案1)=======

15

说明:5+(5, 2 );5+5+(5,1);5+5+5

第 2 题(分)题号:820

以下程序运行时, 输出结果是【1】.(2006 年春江苏省二级C)

#include <> main()

{ int s,i,sum(int);

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

s=sum(i);

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

}

sum(int k)

{ static int x=0;

return x+=k;

}

答案:

=======( 答案1)=======

15

说明:子函数中的x 是static ,所以是累加,x=0+1+2+3+4+5 第 3 题 (分) 题号:823

以下程序运行后输出结果为【1】.(2007 年春江苏省二级C) #include""

int a;

int m(int a)

{ static int s; return(++s)+(--a);}

void main()

{ int a=2; printf("%d",m(m(a)));}

答案:

=======( 答案1)=======

3

说明:因为static int s ,所以s 是静态的,要累加,第一次调用m(2) ,return(++s)+(--a)

相当于return (0+1)+(2-1), 下一次调用m(m(a))=m(2), return(++s)+(--a) 相当于return (1+1)+(2-1)

第 4 题 (分) 题号:821

以下程序运行时, 输出结果为【1】.(2006 年春江苏省二级C)

#include<>

main( )

{ printf("%d\n",f(21,35));}

int f(int a,int b)

{ if(a==b)return a;

else

if(a>b) return f(a-b,b);

else return f(a,b-a);

}

答案:

=======( 答案1)=======

7

说明:第一次调用 f (21,35),第二次调用f(21,14), 第三次调用f(7,14), 第四次调用f(7,7)

第 5 题(分)题号:819

以下程序运行时输出的结果的第二行是【1】,第四行是【2】, 第六行是【3】(2005 年春江苏省二级C)

#include <>

void change( int s[3][3] , int d )

{ int i , j , k ;

if( d== 0 )

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

for( j = i+ 1; j<3 ; j++)

{ k = s[i][j] ; s[i][j] = s[j][i] ; s[j][i] = k ; }

}

else

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

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

{ k = s[i][j] ; s[i][j] = s[2-j][2-i] ; s[2-j][2-i] = k ; }

}

main()

{ int s[3][3] = ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) , I , j , k , n ;

change( s , 0 ) ;

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

{ for( j = 0 ; j<3 ; j++) printf("%4d" , s[i][j]) ;

printf("\n") ;

}

change( s , 1 ) ;

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

{ for( j = 0 ; j<3 ; j++) printf("%4d" , s[i][j] ) ;

printf("\n") ;

答案:

=======(答案1)=======

}

2 5 8

=======(答案2)=======

9 8 7

=======(答案3)=======

3 2 1

第 6 题(分)题号:816

在声明局部变量时, 不能使用的存储类别标识符是【1】.(2007 年春江苏省二级

C)答案:

=======(答案1)=======

extern

第7 题(分)题号:818

以下程序运行时输出结果是【1】.(2004 年秋江苏省二级C)

#include <>

void num()

{ extern int x , y ;

int a = 15 , b = 10 ;

x = a-b ; y = a+b ;

}

int x , y ;

main()

{ int a = 7 , b = 5 ;

x = a+b ; y = a-b ;

num() ;

c语言第八章函数上机作业

第八章 通过本章实验作业应达目标 1. 掌握定义和调用函数的方法 2.掌握函数嵌套调用的方法 3.掌握通过“值传递”调用函数的方法 4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法 本章上交作业 程序8_1.c、8_2.c、8_4.c、8_5.c上传至211.64.135.121/casp。 实验一判断素数的函数 【实验目的】 掌握用函数实现判断素数的方法。 【实验内容】 编写一个函数int prime(int a),判断参数是否为素数。函数有一个形参a,当a 为素数时,返回1,反之,返回0。以8_1.c命名本程序并上交。 函数声明如下: int prime( int a ); 主函数如下: #include #include void main ( ) { int a, b; printf("please input a number:\n"); scanf("%d", &a); b = prime( a ); if ( b = =1 ) printf("the number is a prime number."); else printf("the number is not a prime number."); } int prime( int a ) { …… }

实验二求最大公约数与最小公倍数 【实验目的】 熟练函数的嵌套调用。 【实验内容】 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回。在main函数中实现输入与输出。以8_2.c命名本程序并上交。 主函数如下: #include void main( ) { int gongyueshu( int a, int b ); int gongbeishu( int a, int b ); int a, b, c, d; printf("please input two integer numbers:"); scanf("%d%d", &a, &b); c=gongyueshu(a, b); d=gongbeishu(a. b); printf("gongyueshu is %d\n gongbeishu is %d",c,d); } int gongyueshu( int a, int b ) { ……} int gongbeishu( int a, int b ) { …… } 【实验提示】 可以在最小公倍数中嵌套调用最大公约数函数。最小公倍数=a*b/最大公约数 实验三求数组逆序的函数 【实验目的】 熟练掌握操作数组的方法及数组名作函数参数的使用方法。 【实验内容】 从键盘输入int型数组a[ 20 ]的20 个元素值,编写一个函数实现对数组元素数据的逆序放置。即第1个元素与第20个元素互换,第2个元素与第19个元素互换,……,第10个元素与第11个元素互换。请完善下述程序并以8_3.c命名本程序。 #include void main( ) { void nixu( int a[ ], int n ); /* 逆序函数声明 */

第八章函数有答案

试卷编号:313 所属语言:C语言 试卷方案:第八章函数 试卷总分:100分 共有题型:4种 一、填空共12题(共计48分) 第1题(分)题号:824 以下程序运行后输出结果为【1】.(2007年春江苏省二级C) #include"" int mystery(int a,int b) { if(b==1) retutn a; else return a+mystery(a,b-1); } void main() { int x=5,y=3; printf("%d\n",mystery(x,y));} 答案: =======(答案1)======= 15 说明:5+(5,2);5+5+(5,1);5+5+5 第2题(分)题号:820 以下程序运行时,输出结果是【1】.(2006年春江苏省二级C)

#include <> main() { int s,i,sum(int); for(i=1;i<=5;i++) s=sum(i); printf("%d\n", s); } sum(int k) { static int x=0; return x+=k; } 答案: =======(答案1)======= 15 说明:子函数中的x是static,所以是累加,x=0+1+2+3+4+5第3题(分)题号:823 以下程序运行后输出结果为【1】.(2007年春江苏省二级C) #include"" int a; int m(int a) { static int s; return(++s)+(--a);} void main() { int a=2; printf("%d",m(m(a)));}

第八章-函数-练习-参考答案

1.以下正确的说法是【】。 在c语言中: A)实参和与其对应的形参各占用独立的存储单元 B)实参相与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 2.c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是【】。 A. 地址传递 B. 由实参传给形参,再由形参传回给实参 C. 单向值传递 D. 由用户指定传递方式 3.以下程序有语法性错误。有关错误原因的正确说法是【】。 main() {int G=5,k; void prt_char(); ..... k=prt_char(G); .....} A)语句void prt_char();有错,它是函数调用语句,不能用void说明 B)变量名不能使用大写字母 C)函数说明和函数调用语句之间有矛盾 D)函数名不能使用下划线 4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是【】。 A)float型 B)void型 C)long型 D)double型 5.C语言规定,函数返回值的类型是由【】。 A)return语句中的表达式类型所决定 B)调用该函数时的主调函数类型所决定 C)调用该函数时系统临时决定 D)在定义该函数时所指定的函数类型所决定 6.下面函数调用语句含有实参的个数为【】 func((expl,exp2),(exp3,exp4,exp5)) A)1 B)2 C)4 D)5 7.以下正确的描述是【】。 在C语言程序中 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义相函数的调用均可以嵌套

第八章(函数)

1. 将程序填写完整,使程序输出100到999之间所有能被7整除且左右对称的数。 例如:707就是满足条件的数。 #include #include void main() { /**/ void find(int m); /**/ int k; for(k=100; k<=999; k++) find( k ); getch(); } void find(int m) { int a,b; if(/**/ (m%7==0) /**/) { a=m%10; /**/ b=m/100; /**/ if(a==b) printf("%d\n",m); } } 2. 将程序填写完整,使其中函数chg能够将一个数组的元素循环左移1个位置,第一个元素存到末尾。 例如:数组元素为 1 2 3 4 5 6 7 8 9 10 则该数组元素循环左移后变为 2 3 4 5 6 7 8 9 10 1 #include #include void chg(/**/ int arr[],int n /**/ ) { int i,temp; temp=arr[0]; for(i=0; i

printf("%d ",a[i]); getch(); } 3. 将程序填写完整,用递归算法求13+23+33+…+n3的值。 #include #include long int fun(int n) { long int k; if(/**/ n==1 /**/ ) k=1; else k=/**/ fun(n-1)+n*n*n; /**/ return (k); } void main() { int i; printf("Input data:"); scanf("%d",&i); if(i<0) printf("Input data ereor!"); else printf("Sum=%ld\n",fun(i)); getch(); } 4.将程序填写完整,使其中函数chg能够求3*3矩阵的转置矩阵。 例如:矩阵 1 2 3 4 5 6 78 9 转置后变成: 1 4 7 2 5 8 3 6 9 #include #include int chg(/**/ int array[3][3] /**/) { int i,j,temp; for(/**/ i=0;i<3;i++ /**/)

第八章 函数

第八章函数 一、选择题: 1、在C语言中,以下说法中正确的是:() A. 实参与其对应的形参各占用独立的存储单元 B. 实参与其对应的形参占用同一个存储单元 C. 只有当实参与形参同名时才占用同一个存储单元 D. 实参占用存储单元,但形参是虚拟的,不占用存储单元 2、以下正确的函数形式是:() A. double fun(int x, int y) { z=x+y; return z;} B. fun(int x,y) { int z; return z;} C. fun(x,y) { int x,y; double z; z=x+y; return z;} D. double fun(int x, int y) { double z; z=x+y; return z;} 3、以下正确的函数定义形式是() A. double fun(int x, int y) B. double fun(int x ;int y) C. d ouble fun(int x, int y); D. d ouble fun(int x,y); 4、定义为void类型的函数,其含义是() A. 调用函数后,被调用的函数没有返回值 B. 调用函数后,被调用的函数不返回 C. 调用函数后,被调用的函数的返回值为任意的类型 D. 以上三种说法都是错误的 5、定义C语言函数时,形参可以是:() A. 常量 B. 变量 C. 表达式 D. 宏定义 6、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是:() A. float型 B. int型 C. long型 D. double型 7、下面函数 f(double x) {printf(“%6d”,x);}的类型为: ( ) A. 实型 B. void 类型 C. int 类型 D. 均不正确 8、有以下程序 void f(int x,int y) { int t; if(x

第八章函数(5503)

1.以下叙述中不正确的是(C)。 A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B.在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C.在C中,外部变量的隐含类别是自动存储类别。 D.在C中,函数形参可以说明为register变量。 2.C语言中规定函数的返回值的类型是由(D )。 A.return语句中的表达式类型所决定 B.调用该函数时的主调用函数类型所决定 C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数类型所决定 3.以下所列的各函数首部中,正确的是(C)。 A. void play(var a:integer,var b:integer) B. void play(int a,b) C.void play(int a,int b) D.sub play(a as integer,b as integer) 4. C 语言允许函数类型缺省定义,此时函数值隐含的类型是(B )。 A.float B.int C.long D.double 5.以下函数调用语句中实参的个数是( A )。 exce((v1,v2),(v3,v4,v5),v6); A.3 B.4 C.5 D.6 6.有参函数的返回值,是通过函数中的( A )语句来获得的。 A.return B.printf C.scanf D.函数说明 7.以下语句错误的是( B)。 A.int x; B.return x,y; C.x=100; D.return 0; 8.以下正确的说法是(A )。 A.实参和与其对应的形参各占用独立的存储单元 B.实参和与其对应的形参共占用一个存储单元

c语言-第8章--函数习题

c语言-第8章--函数习题

第8章函数习题 A卷 1. 单项选择题 (1)C 语言总是从函数开始执行。 A A. main B. 处于最前的 C.处于最后的 D. 随机选一个 (2)函数在定义时,省略函数类型说明符,则该函数值的类型为。A A. int B. float C. long D. double (2)以下函数,真正地没有返回值。 B A. int a(){int a=2;return (a);} B. void b(){printf("c");} C. int a(){int a=2;return a;} D. 以上都是 (3)在C 语言中,有关函数的说法,以下正确的是。A A. 函数可嵌套定义,也可嵌套调用 B. 函数可嵌套定义,但不可嵌套调用 C. 函数不可嵌套定义,但可嵌套调用 D. 函数不可嵌套定义,也不可嵌套调用 (4)以下函数调用语句中,含有实参的个数为。C fun((2,3),(4,5+6,7)); A. 1 B. 2 C. 5 D. 6 (5)函数调用可以在。D A. 函数表达式中 B. 函数语句中 C. 函数参数中 D. 以上都是 (6)被调函数返回给主调函数的值称为。C A. 形参 B. 实参 C. 返回值 D. 参数 (7) ,可以不进行函数类型说明。D A. 被调函数的返回值是整型或字符型时 B. 被调函数的定义在主调函数定义之前时 C. 在所有函数定义前,已在函数外预先说明了被调函数类型 D. 以上都是 (8)被调函数通过语句,将值返回给主调函数。D A. if B. for C. while D. return (9)被调函数调用结束后,返回到。D A.主调函数中该被调函数调用语句处 B.主函数中该被调函数调用语句处

c语言第8章函数

第8章函数 1.以下程序的输出结果是( ) A、6 9 9 B、6 6 9 C、6 15 15 D、6 6 15 int d=1; fun(int p) { static int d=5; d+=p; printf("%d ",d); return(d); } main( ) { int a=3;printf("%d \n",fun(a+fun(d)));} 答案:C 注解:函数fun调用两次,第一次调用的实参是全局变量d的值1,在函数调用执行过程中,输出的是局部静态变量d;第二次调用的实参是第一次调用的返回值和变量a的和,输出的仍是局部静态变量d的值。注意静态变量的定义和初始化是在第一次使用时进行的,在以后的使用过程中,保留上一次的值,不再初始化。2.若有以下调用语句,则不正确的fun函数的首部是() A、void fun(int m,int x[]) B、void fun(int s,int h[41]) C、void fun(int p,int *s) D、void fun(int n,int a) main( ) { … int a[50],n; … fun(n,&a[9]); … } 答案:D 注解:从主函数中fun函数的调用格式可以看出,fun函数的两个形参的类型,第一个形参是整型变量,第二个形参是变量的地址,则必须是数组名或者是指针。 3.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是() A、3 B、4 C、5 D、有语法错 答案:A 注解:该函数调用语句中,含有的实参分别是rec1,rec2+rec3表达式计算后的值和(rec4,rec5)逗号表达式计算后值。 4.有如下程序 int runc(int a,int b) { return(a+b);} main( ) { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r);

第八章多元函数积分学.

第八章 多元函数积分学 基 本 课 题 :8. 1 二重积分的概念与性质 目 的 要 求 :理解二重积分的概念与性质 重 点 :二重积分的性质 难 点 :8. 1 二重积分的概念 教 学 方 法 : 讲授与讨论结合 教 学 手 段 : 电子课件、黑板 教 参 :《高等数学》(人大理工类本科教材) 教学环节及组织: 复习并引入新课 一、二重积分的概念 1. 曲顶柱体的体积 设有一立体, 它的底是xOy 面上的闭区域D , 它的侧面是以D 的边界曲线为准线而母线平行于z 轴的柱面, 它的顶是曲面z =f (x , y ), 这里f (x , y )≥0且在D 上连续. 这种立体叫做曲顶柱体. 现在我们来讨论如何计算曲顶柱体的体积. 首先, 用一组曲线网把D 分成n 个小区域: ?σ 1, ?σ 2, ? ? ? , ?σ n . 分别以这些小闭区域的边界曲线为准线, 作母线平行于z 轴的柱面, 这些柱面把原来的曲顶柱体分为n 个细曲顶柱体. 在每个?σ i 中任取一点(ξ i , η i ), 以f (ξ i , η i )为 高而底为?σ i 的平顶柱体的体积为 : f (ξ i , η i ) ?σi (i =1, 2, ? ? ? , n ). 这个平顶柱体体积之和:i i i n i f V σηξ?≈=∑),(1. 可以认为是整个曲顶柱体体积的近似值. 为求得曲顶柱体体积的精确值, 将分割加密, 只需取极限, 即 i i i n i f V σηξλ?==→∑),(lim 1 0. 其中λ是个小区域的直径中的最大值.

定义 设f (x , y )是有界闭区域D 上的有界函数. 将闭区域D 任意分成n 个小 闭区域 ?σ 1, ?σ 2, ? ? ? , ?σ n . 其中?σ i 表示第i 个小区域, 也表示它的面积. 在每个?σ i 上任取一点(ξ i , ηi ), 作和 i i i n i f σηξ?=∑),(1 . 如果当各小闭区域的直径中的最大值λ趋于零时, 这和的极限总存在, 则称此极限为函数f (x , y )在闭区域D 上的二重积分, 记作σd y x f D ??),(, 即 i i i n i D f d y x f σηξσλ?==→∑??),(lim ),(1 0. f (x , y )被积函数, f (x , y )d σ被积表达式, d σ面积元素, x , y 积分变量, D 积分区域, 积分和. 直角坐标系中的面积元素: 如果在直角坐标系中用平行于坐标轴的直线网来划分D , 那么除了包含边界点的一些小闭区域外, 其余的小闭区域都是矩形闭区域. 设矩形闭区域?σi 的边长为?x i 和?y i , 则?σi =?x i ?y i , 因此在直角坐标系中, 有时也把面积元素d σ 记作dxdy , 而把二重积分记作 dxdy y x f D ??),( 其中dxdy 叫做直角坐标系中的面积元素. 二重积分的存在性: 当f (x , y )在闭区域D 上连续时, 积分和的极限是存在的, 也就是说函数f (x , y )在D 上的二重积分必定存在. 我们总假定函数f (x , y )在闭区域D 上连续, 所以f (x , y )在D 上的二重积分都是存在的. 二重积分的几何意义: 如果f (x , y )≥0, 被积函数f (x , y )可解释为曲顶柱体的在点(x , y )处的竖坐标, 所以二重积分的几何意义就是柱体的体积. 如果f (x , y )是负的, 柱体就在xOy 面的下方, 二重积分的绝对值仍等于柱体的体积, 但二重积分的值是负的.

第八章函数有答案

试卷编号:313 所属语 言:C语言 试卷方 案: 第八章函数 试卷总 分: 100 分 共有题 型:4 种 一、填空共12 题(共计48 分) 第 1 题(分)题号:824 以下程序运行后输出结果为【1】.(2007 年春江苏省二级C)#include"" int mystery(int a,int b) { if(b==1) retutn a; else return a+mystery(a,b-1); } void main() { int x=5,y=3; printf("%d\n",mystery(x,y));} 答案: =======(答案1)======= 15 说明:5+(5, 2 );5+5+(5,1);5+5+5 第 2 题(分)题号:820 以下程序运行时, 输出结果是【1】.(2006 年春江苏省二级C)

#include <> main() { int s,i,sum(int); for(i=1;i<=5;i++) s=sum(i); printf("%d\n", s); } sum(int k) { static int x=0; return x+=k; } 答案: =======( 答案1)======= 15 说明:子函数中的x 是static ,所以是累加,x=0+1+2+3+4+5 第 3 题 (分) 题号:823 以下程序运行后输出结果为【1】.(2007 年春江苏省二级C) #include"" int a; int m(int a) { static int s; return(++s)+(--a);} void main() { int a=2; printf("%d",m(m(a)));} 答案: =======( 答案1)=======

第八章 函数1函数概述

第八章函数 8、1 函数概述 1、C语言的函数: C语言的函数是子程序的总称,包括函数和过程。(有返回值、无返回值,教材中称为:有返回值函数,无返回值函数)。 C语言函数可以分为库函数、用户自定义函数。库函数由系统提供,程序员只需要使用(调用),用户自定义函数需要程序员自己编制。 2、C语言的程序由函数组成,函数是C语言程序的基本单位。 前面章节介绍的所有程序都是由一个主函数main组成的。程序的所有操作都在主函数中完成。事实上,C语言程序可以包含一个main函数,也可以包含一个main函数和若干个其它函数。 C语言程序的结构如图所示。在每个程序中,主函数main是必须的,它是所有程序的执行起点,main函数只调用其它函数,不能为其它函数调用。如果不考虑函数的功能和逻辑,其它函数没有主从关系,可以相互调用。所有函数都可以调用库函数。程序的总体功能通过函数的调用来实现。

3、使用函数的意义(补充) 有些同学提出,我只用一个main函数就可以编程,为什么这么复杂,还要将程序分解到函数,还要掌握这么多概念,太麻烦了?我们说对于小程序可以这样做,但是对于一个有一定规模的程序这样做就不合适了。使用函数的几个原因: (1)使用函数可以控制任务的规模 一般应用程序都具有较大的规模。例如:一个齿轮误差分析软件系统的源程序行数要数千行。一个传动链计算机辅助设计系统的源程序行数5万多行。 使用函数可以将程序划分为若干功能相对独立的模块,这些模块还可以再划分为更小的模块,直到各个模块达到程序员所能够控制的规模。然后程序员再进行各个模块的编制。因为各个模块功能相对独立,步骤有限,所以流程容易控制,程序容易编制,修改。 一般一个模块的规模控制在源程序60行以内(但是也不必教条化)。 (2)使用函数可以控制变量的作用范围 变量在整个模块范围内全局有效,如果将一个程序全部写在main()函数内,大家可以想象,变量可以在main函数内任何位置不加控制地被修改。如果发现变量的值(状态)有问题,你可能要在整个程序中查找哪里对此变量进行了修改,什么操作会对此变量有影响,改动了一个逻辑,一不留神又造成了新的问题,最后程序越改越乱,有时连程序员自己都不愿意再看自己编写的程序。都是“大”惹的祸。 使用函数后,变量局限于自己的函数内,60行代码内,太好了,能控制吗? 函数-函数通过接口(参数表,返回值)通讯,交换数据。 (3)使用函数,程序的开发可以由多人分工协作。 一个main()模块,怎么合作? 将程序划分为若干模块(函数),各个相对独立的模块(函数)可以由多人完成,每个人按照模块(函数)的功能要求,接口要求编制代码,调试,确保每个模块(函数)的正确性。最后将所有模块(函数)合并,统一调试、运行。 (4)使用函数,可以重新利用已有的、调式好的、成熟的程序模块

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