《第7章用函数实现模块化程序设计概要》由会员分享,可在线阅读,更多相关《第7章用函数实现模块化程序设计概要(9页珍藏版)》请在金锄头文库上搜索。
1、实验二求最大公约数与最小公倍数【实验目的】熟练函数的嵌套调用。【实验内容】编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回。在main函数中实现输入与输出。以7_2.c命名本程序并上交。主函数如下:#includevoid 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=gongbe
2、ishu(a. b);printf(gongyueshu is %dn gongbeishu is %d,c,d);int gongyueshu( int a, int b ) int gongbeishu( int a, int b ) 【实验提示】可以在最小公倍数中嵌套调用最大公约数函数。实验三报数问题【实验目的】掌握数组和函数的应用。【实验内容】m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次存到数组p中,包括最后一个人的序号。到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)。若m=6,则输出n=1 3 6 4 2 5 1;若m=10,则输出n=4 3
3、 6 9 2 7 1 8 5 10 4;若m=100,则输出n=91 3 6 9100 58 91。函数int fun(int n ,int p )实现上述功能,返回n个人中最后余的1人的起始序号,并将退出的序号顺序写入p指向的数组中。以7_3.c命名本程序并上交。#includeint baoshu(int n ,int p ) void main()int m,a10000,i,num; scanf(%d,&m); num= fun(m,a); printf(n=%dn,num); for(i=0;im;i+) printf(%8d ,ai); printf(n);实验四 数组中插入元素的
4、函数【实验目的】学习在一维数组中插入元素的方法。【实验内容】参照给定的主函数,编写一个函数void insert(int a , int n, int y ),它的功能是:把y值插入到有n个数的有序的a数组中, y的值从键盘读入。插入后,数组中的数仍然有序。以7_4.c命名本程序并上交。对照下面三种情况运行程序:1)插在最前2)插在最后3)插在中间。int a11=2,4,6,8,10,12,14,16,18,20;void insert( int a , int n, int number );void main( ) int i, x ;printf(original array is:n
5、);for(i=0;i10;i+)printf(%5d,ai);printf(n);printf(insert a new number:);scanf(%d,&x); insert(a,10,x); for(i=0;i11;i+) printf(%d ,ai);void insert( int a , int n, int number ) 若输入数11,输出 2 4 6 8 10 11 12 14 16 18 20 输入数1, 输出 1 2 4 6 8 10 12 14 16 18 20 输入数33,输出 2 4 6 8 10 12 14 16 18 20 33【实验提示】1若x插入数组的
6、中间,插入后此元素之后的数,依次后移一个位置。例如查找到 11应该放置在a 5 的位置上,原来a5的数据 12 以及其后的所有元素后移一位。2后移元素的过程,应该注意从数组的末尾开始依次an=an-1,an-1=an-2实验五 从数组中删除数据【实验目的】深入理解数组做函数参数。【实验内容】编写函数int delnum(int a , int num , int n),用于在长度是n的数组a中,删除一个值为num的元素。删除后数组的长度作为函数的返回值返回。注意,num在数组中可能不只一个。请以7_5.c命名本程序并上交。主函数如下:# define N 10void main( ) int
7、aN , num;scanf(“%d”,&num);输入N个数到数组a中; 调用delnum函数在数组a中删除指定的数num;输出删除了num后的数组a; 定义并编写delnum函数实验六 求数组逆序的函数【实验目的】熟练掌握操作数组的方法及数组名作函数参数的使用方法。【实验内容】从键盘输入int型数组a 20 的20 个元素值,编写一个函数实现对数组元素数据的逆序放置。即第1个元素与第20个元素互换,第2个元素与第19个元素互换,第10个元素与第11个元素互换。请完善下述程序并以7_6.c命名本程序。#includevoid main( )void nixu( int a , int n )
8、; /* 逆序函数声明 */int a20,x;for (x=0;x20;x+ ) scanf(%d,&ax);printf(Before invert,the array is:n);for (x=0;x20;x+ ) printf(%d ,ax);printf(“n”);nixu(a,20); /* 调用逆序函数,注意实参是什么 */printf(nAfter invert,the array is:n);for (x=0;x20;x+ ) printf(%d ,ax);printf(“n”);void nixu(int a , int n) int i, t; for (i=0;iy?x
9、:y;return(z);void main( )int x=8;printf( max=%dn,max(x,y) );实验八变量的静态存储方式【实验目的】熟悉static定义静态变量的用法。【实验内容】下面程序运行后的输出结果是_。#includevarfunc( ) int var=0;static int static_var=0;printf(40:var equal %d n,var);printf(40:static var equal %d n,static_var);printf(n);var+;static_var+;void main( ) int i; for(i=0;i
10、); scanf(%d,&num); printf(40:The square for this number is %d n,SQ(num); if(num=50)again=TRUE; elseagain=FALSE;作业2编写宏,求两个数的最大值。请以7_9.c命名本程序并上交。习题1. 有如下程序#includelong fib( int n)if(n2) return(fib(n-1)+fib(n-2);else return(2);void main( ) printf(%dn,fib(3);该程序的输出结果是()A、2B、 4C、 6D、8 2. 在C语言中,函数的隐含存储类别是
11、()A、 autoB、 staticC、 externD、 无存储类别3. 以下所列的各函数首部中,正确的是()A、 void play(var: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. 以下程序的输出结果是()A、 0B、 29C、 31D、 无定值fun(int x,int y,int z) z=x*x+y*y;main( ) int a=31;fun(5,2,a);printf(%d,a);5. 以下程序的输出结果是()f(int b ,int m,int n) int I,s=0; for(i=m;in;i=i+2) s=s+bi; return s; main( ) int x,a =1,2,3,4,5,6,7,8,9; x=f(a,3,7); printf(%dn,x); A、10B、18C、8D、156. 以下程序的输出结果是()A、1B、2C、3D、4long fun( int n) long s;if(n=1 | n=2)s=2;else s=n-fun(n-1);return s;main( ) p