资源描述:
《C语言函数定义、调用-递归函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言程序设计实验报告实验5函数程序设计班级学号姓名一、实验目的(1)掌握c语言函数定义及调用的规则;(2)掌握递归函数的编写方法和运行过程;(3)理解变量的作用域和生存期。二、补充知识:>怎样模拟计算机“想”一个数呢?用随机函数rand()产生[0,RAND_MAX]之间的随机数magicrand();RAND_MAX是在stdlib.h中定义,不大于双字节整数的]大值32767,所以使用前加#include>产生[0,b-1]之间的随机数♦magic=rand()%b;>产生[a,a+b-1]之间的随机数♦magic=rand
2、()%b+a;rand()产生的数据是一串伪随机序列,要实现真正的随机化,用srand()函数播种种子:♦ttinclude♦srand(time(NULL));♦magic=rand()%100+1;二、实验内容及步骤1、程序改错输入已编好的源程序,源程序中包含有错误,先对源程序进行编译和连接,然后根据提示信息,修改程序中的错误,经过多次修改一编译一连接,直到编译、连接成功。最后运行程序,输出正确结果。⑴下述程序中,函数FUN功能是:计算正整数NUM的各位上的数字之积。例如,若输入252,则输出应该是20;若输入202,则输出应该是
3、0。^include/*提示:有3处错误*/#ineludelongfun(num){longk=l;do{k*=num%10;num=10;)while(num)returnk;}voidmain(){longn;scanf("%ld”,&n);printf("%ld”,fun(n));修改后程序代码:ttincludelongFun(longnum)longk=1;do{k*=nun%1O;num/=1O;}uhile(num);returnk;}intmain(){longn;sc
4、anFC^ld'^&n);longFun(longnum);printFC^ldXn'^funtn));return0;"C:UsersAdministratorDesktopDebugl.exe"2020Pressanykeytocontinue2、编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,掷两枚骰子之后,计算点数Z和。如果第一次掷的点数和为7或11,则游戏者获胜;如果第一次掷的点数和为2、3或12,则游戏者输;如果第一次掷的点数和为4、5、6、8、9或10,则将这个和作为游
5、戏者获胜需要掷出的点数,继续投骰子,肓到掷到该点数时算是游戏者获胜。如果投掷7次仍未掷到该点数,则游戏者输。#include"stdio.h〃ttinclude"stdlib.h"^include"conio.h〃#include〃time.h〃enum{CONTINUE,WON,LOST);voidmain(){intstatus二CONTINUE;inti二0,j二0,add,k;srand((unsigned)time(NULL));while(i=0)i=rand()%6;printf(,zl:%drT,i);while(j==0)j=ra
6、nd()&6;printf(z,2:%d〃,j);add二i+j;if(add==llIIadd==7)status二WON;if(add==2
7、
8、add==3
9、
10、add==12)status二LOST;if(status二二WON)printfCYouWin!,z);elseif(status二二LOST)printf(,zYOUL0ST!,z);else{for(k=l;k<=7;k++){i二0;J=0;printf(〃***************%d****************〃,k)while(i==0)i=rand(
11、)%6;printf(,zl:%d〃,i);while(j==0)j=rand()%6;printf(z,2:%d〃,j);if((i+j)=add)status二WON;break;}}if(status二二WON)printf("YOUWTN!,z);elseprintf("YOUL0ST!,z);}getch();1:52:2VouWin?3.递归程序设计练习一一计算最犬公约数利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。性质1:如果x〉y,则x和y的最大公约数与x-y和y的最大公约数相同性质2:如果y>x,
12、则x和y的最大公约数与x和y-x的最大公约数相同性质3:如果x二y,则x和y的最大公约数与x值和y值相同,即