资源描述:
《C语言实验七、函数程序设计答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验七函数及程序结构(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。?4.掌握变量的存储类别。?二、实验内容1.[目的]掌握函数的嵌套调用方法。[题目内容]编写程序计算。要求设计主函数main()读取a、b、c的值,并调用ratio函数计算a/(b-c)的值。如果(b-c)=0那么ratio就不能计算,因此,ratio函数调用另一个函数dif,以测试(b-c)的差是否为零,如果b不等于c,dif返回1,否则返回0。[输入]a、b、c的值[输出]计算结果[提示]main函数调用rat
2、io函数,ratio函数调用dif函数。三个函数平行定义,嵌套调用。#includevoidmain(){floatratio(intx,inty,intz);intdif(intx,inty);inta,b,c;floatd;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);d=ratio(a,b,c);if(d==0.0)printf("b-c为零。");elseprintf("%d/(%d-%d)=%f",a,b,c,d);}floatratio(intx,inty,intz)
3、{if(dif(y,z)==1)return(float)x/(float)(y-z);elsereturn0.0;}intdif(intx,inty){if(x==y)return0;elsereturn1;}2.[目的]利用标准库提供的随机数功能。[题目内容]编写程序,帮助小学生练习乘法计算。用随机数函数生成2个一位的随机数,提示“6乘以7等于?”,要求从键盘输入答案,如果答案正确,输出“很好!”,否则输出“不对!重做。”直到做对为止。[输入]无[输出]提示信息[提示]包含系统文件stdlib.h,描述的随机数函数intrand(void)
4、、voidsrand(unsignedseed)。#include#includevoidmain(){intshu(void);inta,b,c,i,flag;for(i=1;i<=10;i++){flag=1;srand(11+i*2);/*不同的初始种子数,产生不同的随机数序列*/a=shu();srand(12+i*3);/*不同的初始种子数,产生不同的随机数序列*/b=shu();while(flag==1){printf("%d乘以%d等于?",a,b);scanf("%d",&c);if(a*
5、b==c){printf("很好!");flag=0;}elseprintf("不对!重做。");}}}intshu(void){returnrand()%10;}3.[目的]掌握函数的递归调用。[题目内容]编写一个程序,其功能为:用递归函数产生fibnocci数列的前20项并输出。fibnocci数列可用递归形式定义为:fib[0]=0fib[1]=1fib[n]=fib[n-1]+fib[n-2]n>=2[输入]无[输出]fibnocci数列的前20项[提示]使用for循环语句以及递推算法,fibnocci数列的前两项均为1,以后各项等于其
6、前两项之和。#includevoidmain(){intfibonacci(intn);inti;for(i=0;i<20;i++)printf("%6d",fibonacci(i));}intfibonacci(intn){if(n==0
7、
8、n==1)returnn;elsereturnfibonacci(n-1)+fibonacci(n-2);}4.[目的]掌握函数的递归调用。[题目内容]用递归算法求n!.[输入]整数n[输出]n![提示]计算n!的递归公式:#includevoidmain(){in
9、tfun(intx);intn;printf("请输入n:");scanf("%d",&n);if(n<0)printf("n为负数。");elseprintf("%d",fun(n));}intfun(intx){if(x==0)return1;elsereturnx*fun(x-1);}5.[目的]掌握函数的递归调用。[题目内容]求解两个整数的最大公约数的递归形式的定义:gcd(m,n)=nm能整除以ngcd(n,m%n)m能整除以n[输入]m、n[输出]最大公约数[提示]#includevoidmain(){intg
10、cd(intx,inty);intm,n;printf("请输入m,n:");scanf("%d%d",&m,&n);if(n==0)printf("