资源描述:
《c语言实验指导3--用函数进行程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、软工2010级2班maoSWU实验环境Windows,VisualC++实验目录第3周实验一:C语言编程基础3验证必做任务h运行环境任务2:数据类型任务3:结构化程序设计第4周实验二:用数组编程3验证必做第5周实验用函数进行程序设计3验证必做第6周实验四:用指针编程3设计必做第7周实验五:结构体编程3设计必做第8周实验六:文件操作3设计必做实验三用函数进行程序设计实验目的1、掌握C语言函数定义及调用的规则,理解参数传递的过程。2、掌握函数嵌套调用过程及递归调用过程。3、理解数组元素作参数和数组名作参数的不同。4、编程验证全局变
2、量、局部变量,动态变量、静态变量。实验内容1、编程验证基本的函数定义和调用下面的程序,在主函数main中输入2个整数,并传给函数max。函数max返回最大值。#includeintmax(intx,inty){/*本函数返回x和y中的最大值*/intz;if(x>y)z=x;elsez=y;returnz;Bmain(){inta,b;printf("请输入a和b,用空格分幵:");scanf("%d%d〃,&a,&b);printf(〃最大值是%d〃,max(a,b));2、编程验证函数嵌套调用的执
3、行过程执行下凹的程序,分析嵌套调用的过程。再分析一下,如果没有函数声明,编译时有何问题。#includevoidf1(void);/*这3行是函数声明*/voidf2(void);voidf3(void);voidf1(){printf("Tamfl");f2();}voidf2(){
4、f3();printfC’Iamf2");avoidf3(){printfClamf3〃);main(){fl();f2():3、编程验证函数的递归调用过程#includeintf(inta[],
5、intn){if(n>=l){printf(〃要计算f(a,%d),先计算f(a,%d)〃,n,n-1);returnf(a,n-l)+a[n-l];}elsereturn0;amain(){intaa[5]={l,2,3,4,5},sum;sum=f(aa,5);printf(〃数组aa[5]中5个元素的总和是%d",sum);4、编程验证数组元素及数组名作参数有何不同数组元素作参数以及数组名作参数(1)把数组元素作参数。下面的程序,main函数中有数组a[6]。其中a[0]~a[4]这5个元素赋了初值。要获得其中最
6、大值,放到元素a[5]中。^includeintmax(intxO,intxl,intx2,intx3,intx4){/*获得5个变量的最大值*/inti,m,b[5];m=b[0]=x0;b[l]=xl;b[2]=x2;b[3]=x3;b[4]=x4;for(i=l;i〈5;i++)if(b[i]〉m)m=b[i];returnm;amain(){intm,a[6]={23,45,89,12,34};/*a[5]没有赋初值,系统自动初始化为0*/a[5]=max(a[0],a[l],a[2],a[3],a[
7、4]);/*将a[0]〜a[4]的最大值放到已[5]中*/printf("数组a的最大值已经放到a[5]中,值是%d〃,a[5]);(2)把数组名作参数。#include〈stdio.h〉voidmax(intb口,intn){/*获得数组b□中的前n个元素的最大值,放到b[n]中*/inti,m;m=b[0];for(i=l;i<5;i++)if(b[i]〉m)m=b[i];b[n]=m;/*修改了b[5],实际上就修改了a[5]*/amain(){intm,a[6]={23,45,89,12,34};/*a[5]没有赋
8、初值,系统自动初始化为0*/max(a,5);/*将a□中前5个元素的最大值放到8[5]中*/printf("数组a的最大值己经放至!)a[5]屮,值是%d",a[5]);5、编程验证全局变量、局部变量,动态变量、静态变量。下面的程序,main屮是个循环,每次输入a和b的值,输出这是第儿次,并输出最大值。max函数中有一静态局部变呈cotmt,用来存放被调用的次数。注意,虽然它是局部变量,但因为它是静态的,所以有固定内存空间,其值在max函数退出后可以得到保留。将这个程序和本实验的第一个程序进行比较,思考为什么在函数调川时
9、不川参数。#include〈stdio.h〉inta=l,b;/*全局变量*/intmax(){/*本函数返回a和b中的最大值*/intz=3;/*局部变量,存放本次输入的2个数中的最大值*/staticintcount=0;/*静态局部,本函数被调用的次数,每次被调用,co