资源描述:
《实验四 函数程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言程序设计实验报告实验四函数程序设计班级2012196学号201219628姓名李明月一、实验目的(1)掌握C语言函数定义及调用的规则;(2)掌握递归函数的编写方法和运行过程;(3)理解变量的作用域和生存期。二、实验内容及步骤1、程序改错输入已编好的源程序,源程序中包含有错误,先对源程序进行编译和连接,然后根据提示信息,修改程序中的错误,经过多次修改—编译—连接,直到编译、连接成功。最后运行程序,输出正确结果。(1)下述程序中,函数FUN功能是:计算正整数NUM的各位上的数字之积。例如,若输入252,则输出应该是20;若
2、输入202,则输出应该是0。#include/*提示:有3处错误*/#includelongfun(num){longk=1;do{k*=num%10;num=10;}while(num)returnk;}voidmain(){longn;scanf(“%ld”,&n);printf(“%ld”,fun(n));}修改后程序代码:#include#includelongfun(longnum){longk=1;do{k*=num%10;num/
3、=10;}while(num);returnk;}voidmain(){longn;5scanf("%ld",&n);printf("%ld",fun(n));}2、编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,掷两枚骰子之后,计算点数之和。如果第一次掷的点数和为7或11,则游戏者获胜;如果第一次掷的点数和为2、3或12,则游戏者输;如果第一次掷的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到掷到该点数时算是游戏者
4、获胜。如果投掷7次仍未掷到该点数,则游戏者输。程序代码:#include#include#includeintmain(){intsum1();intsum,dot,i=1,state;srand(time(NULL));sum=sum1();switch(sum){case7:case11:state=1;break;case2:case3:case12:state=-1;break;default:state=0;dot=sum;printf("你获胜需要掷出的点数是
5、:%d",dot);break;}while(state==0){sum=sum1();if(sum==dot&&i<7)state=1;elseif(i>=7)state=-1;i++;}if(state==1)printf("恭喜你,你赢了");elseprintf("对不起,你输了");return0;}intsum1()5{intn1,n2,sum;n1=1+(rand()%6);n2=1+(rand()%6);sum=n1+n2;printf("你掷的点数是:%d",sum);returnsum;}
6、运行结果:3.递归程序设计练习——计算最大公约数利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。性质1:如果x>y,则x和y的最大公约数与x-y和y的最大公约数相同性质2:如果y>x,则x和y的最大公约数与x和y-x的最大公约数相同性质3:如果x=y,则x和y的最大公约数与x值和y值相同,即具体要求:①主函数中随机输入x、y的值②所有变量定义为整数变量。③键盘输入数据前要有提示。④要求用函数求最大公约数。程序代码:#include5intmain(){intmaxgongyue(intx,
7、inty);//声明函数inta,b,m;printf("请输入两个整数:");scanf("%d%d",&a,&b);m=maxgongyue(a,b);//调用函数printf("这两个整数的最大公约数是:%d",m);return0;}intmaxgongyue(intx,inty)//运用递归函数来实现最大公约数的求解{if(x>y)maxgongyue(x-y,y);elseif(y>x)maxgongyue(y-x,x);elsereturn(x);}运行结果:4.定义一个带参数的宏,使两个参数的值互换。
8、在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。程序代码:#include#defineexchange(a,b,temp){temp=b;b=a;a=temp;}//定义一个带参数的宏,来实现两个数的替换intmain(){floata,b,temp=0;p