实验四 函数程序设计

发布时间:2019-12-06 09:53:24   来源:文档文库   
字号:

C语言程序设计实验报告

实验四 函数程序设计

班级 2012196 学号 201219628 姓名 李明月

一、实验目的

(1)掌握C语言函数定义及调用的规则;

2)掌握递归函数的编写方法和运行过程;

(3)理解变量的作用域和生存期

二、实验内容及步骤

1、程序改错

输入已编好的源程序,源程序中包含有错误,先对源程序进行编译和连接,然后根据提示信息,修改程序中的错误,经过多次修改编译连接,直到编译、连接成功。最后运行程序,输出正确结果。

(1)下述程序中,函数FUN功能是:计算正整数NUM的各位上的数字之积。例如,若输入252,则输出应该是20;若输入202,则输出应该是0

#include /*提示:有3处错误*/

#include

long fun(num)

{long k=1;

do

{k*=num%10;

num\=10;

}while (num)

return k;

}

void main()

{long n;

scanf(%ld,&n);

printf(\n%ld\n,fun(n));

}

修改后程序代码:

#include

#include

long fun(long num)

{long k=1;

do

{k*=num%10;

num/=10;

}

while (num);

return k;

}

void main()

{long n;

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

2、编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含123456个点,掷两枚骰子之后,计算点数之和。如果第一次掷的点数和为711,则游戏者获胜;如果第一次掷的点数和为2312,则游戏者输;如果第一次掷的点数和为4568910,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到掷到该点数时算是游戏者获胜。如果投掷7次仍未掷到该点数,则游戏者输。

程序代码:

#include

#include

#include

int main()

{

int sum1();

int sum,dot,i=1,state;

srand(time(NULL));

sum=sum1();

switch(sum)

{

case 7:

case 11: state=1; break;

case 2:

case 3:

case 12: state=-1; break;

default: state=0;

dot=sum;

printf("你获胜需要掷出的点数是: %d\n",dot);

break;

}

while(state==0)

{

sum=sum1();

if(sum==dot&&i<7)

state=1;

else if(i>=7)

state=-1;

i++;

}

if(state==1)

printf("恭喜你,你赢了\n");

else

printf("对不起,你输了\n");

return 0;

}

int sum1()

{

int n1,n2,sum;

n1=1+(rand()%6);

n2=1+(rand()%6);

sum=n1+n2;

printf("你掷的点数是:%d\n",sum);

return sum;

}

运行结果:

3. 递归程序设计练习——计算最大公约数

利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。

性质1:如果x>y,则xy的最大公约数与x-yy的最大公约数相同

性质2:如果y>x,则xy的最大公约数与xy-x的最大公约数相同

性质3:如果x=y,则xy的最大公约数与x值和y值相同,即

具体要求:

主函数中随机输入xy的值

所有变量定义为整数变量。

键盘输入数据前要有提示。

要求用函数求最大公约数。

程序代码:

#include

int main()

{

int maxgongyue(int x,int y); //声明函数

int a,b,m;

printf("请输入两个整数:\n");

scanf("%d %d",&a,&b);

m=maxgongyue(a,b); //调用函数

printf("这两个整数的最大公约数是:%d\n",m);

return 0;

}

int maxgongyue(int x,int y) //运用递归函数来实现最大公约数的求解

{

if(x>y)

maxgongyue(x-y,y);

else if(y>x)

maxgongyue(y-x,x);

else

return(x);

}

运行结果:

4. 定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。

程序代码:

#include

#define exchange(a,b,temp) {temp=b;b=a;a=temp;} //定义一个带参数的宏,来实现两个数的替换

int main()

{ float a,b,temp=0;

printf("请输入两个数a,b");

scanf("%f %f",&a,&b);

exchange(a,b,temp); //使用宏,实现两个数的交换

printf("a=%f b=%f\n",a,b);

return 0;

}

运行结果:

三、实验心得

通过本次实验,对于函数运用有了进一步的提高,对于函数的声明调用,有了更深层次的体会,函数可以帮助我们实现特定的功能,当编写一些较大的程序的时候,应用比较方便,对于程序员的工作量也有了一定的减少。当我们调用一些库函数的时候,要记得在程序的最上面写上相应的语句。如果希望通过函数调用使主调函数能得到一个确定的值,就需要在函数的最后加上一个return语句来实现。

1.林黛玉:三生石畔,灵河岸边,甘露延未绝,得汝日日倾泽。离恨天外,芙蓉潇湘,稿焚情不断,报汝夜夜苦泪。

  2.薛宝钗:原以为金玉良缘已成,只待良辰,奈何君只念木石前盟,纵然艳冠群芳牡丹姿,一心只怜芙蓉雪。

  3.贾元春:贤孝才德,雍容大度,一朝宫墙春不再,一夕省亲泪婆娑。昙花瞬息,红颜无罪,到底无常。

  4.贾探春:虽为女流,大将之风,文采诗华,见之荡俗。诗社杏花蕉下客,末世悲剧挽狂澜,抱负未展已远嫁。

  5.史湘云:醉酒卧石,坦荡若英豪,私情若风絮,嫁与夫婿博长安,终是烟销和云散,海棠花眠乐中悲。

  6.妙玉:剔透玲珑心,奈何落泥淖,青灯古佛苦修行,高洁厌俗袅亭亭。可惜不测之风云,玉碎冰裂,不瓦全。

  7.贾迎春:沉默良善,见之可亲,深宅冷暖,累遭人欺,腹中无诗情风骚,膺内缺气概魄力。空得金黄迎春名,可怜一载赴黄泉。

  8.贾惜春:高墙白曼陀,冷水伴空门。孤寒寂立一如霜,如何能得自全法?狠心舍弃近身人。侯门金簪冰雪埋,海灯僻冷长弃世。

  9.王熙凤:毒酒甘醇,罂粟灿艳,锦绣华衣桃花眼,眼明刀锋吊梢眉。何幸七窍玲珑心,只惜冷硬霜凝集。千机算尽,反误性命。

  10.贾巧姐:七月七日,牵牛花开,绮罗金线裹绕成,家亡院坍落污地。幸有阴德济困危,得获余生农家栖。一亩薄田,岁月绵长。

  11.李纨:寒梅立霜,春来朝气。本自名宦出,农家稻香自甘愿,忠贞侍亲犹清心。竹溪茅舍佳蔬,分畦田列落英,一世宁安。

12.秦可卿:花容柳腰,风情月韵。钗黛兼美太风流,袅娜温软惜早夭。荒唐言尽,辛酸泪流,引情凡世仙客来,红楼梦醒扶春归。

 2. 陆雪琪只是微笑,深深凝视着他,这个在梦里萦绕了无数次的男子,许久之后,轻轻地,低低地道:“别管明天了,好吗?”

  

  3. 清风一缕西南荡,风铃响,仙乐扬。碧水霓裳,共与灵犀晃。月映残鬓忆以往,襟又湿,欲断肠。探首出窗望迷茫,青云上,黑竹旁,翠影依依,拂袂试晨霜。笑语欢声起心浪,同心结,不能忘!

  4. 我半生说学,尽在相术,尤精于风水之相。这青云山乃是人间罕有灵地,我青云一门占有此山,日后必定兴盛,尔等决不可放弃。切记,切记!

  5. 风雨萧萧,天地肃杀,苍茫夜雨中,彷彿整个世间,都只剩下了这一处地方,只有他们两人。

  6. 生则尚有希望,死则背信怯懦

  7. 曾经的一抹绿,我会倾尽全部守护她 .

  8. 这样的一生,又会有多少的事,或人,值得你这般不顾一切呢?

  9. 光阴如刀般无情,温暖你心的,是不是只有一双淡淡微笑的眼眸?你忘了么?多年之后,又或者另一个轮回沧桑?你记得的,又是什么?那空白的空虚就像回忆一样,怔怔的看着黑暗、远方。曾经的,我曾经拥抱过么?

  10. 天高云淡,蔚蓝无限,的确令人心旷神怡,可是,却怎比得上,深心处里那一个心爱女子的──一个微笑?

  11. 碧瑶: 现在这些事,其实都是我的不是,是我瞒骗了他,所以我受什么责罚,也是应当的,但我绝不能背叛师门。

  12. 暮雪千山,我不是一个人。

  13. 师父,你别说了,弟子心里都早已想得清楚了。此事乃是天意,师父你自己也想不到的,何况当日最后时刻,虽然田师叔他老人家口不能言,但我心里清楚明白地感觉到他的心意,那一剑,田师叔也是要我出手的。

  14. 陆雪琪:‘我当然在乎,若有可能,谁不愿长相厮守,谁不想天长地久?只是明知道难以达成,便不去想了吧!反正将来怎样,谁又知道,我却是终究不肯忘怀的。'

  15. 若不是情到深处难自禁,又怎会柔肠百转冷如霜?也许真的拥抱了你。这个世界就从此不一样了吧。

  16. 雨丝从夜空里落了下来,在黑暗的夜色中,在张小凡少年的眼里,仿佛带了几分温柔,甚至于他忽然觉得,这夜是美丽的,这雨是缠绵的,就连雨水打在竹叶上的清脆,也是动听的,响在了他灵魂深处。只因为在他身旁,有那样一个美丽女子,抬着头,带着七分青春二分欢喜乃至一分凄凉的美,怔怔出神地看着。这一场雨!

  17. 旧时沧桑过 曾记否伤心人 白发枯灯走天涯 一朝寂寞换宿休

  18. 那眼光在瞬间仿佛穿过了光阴,忘却了这周围熊熊燃烧的火焰,看到了当初少年时,曾经的过往。

  19. 黑暗深渊里的回忆,仿佛和今日一模一样,像是重新回到了,那曾经天真的岁月。原来,这一个身影,真的是,从来没有改变过吗?那变的人,却又是谁?

  20. 在你绝望的时候,有没有人可以与你相伴? 即使无路可走,还有人不曾舍弃吗?

  21. 一切,终究是要结束的。 一切,仿佛也将要重新开始…… 日月旋转,穿梭不停,斗转星移,谁又看尽了人世沧桑?

  22. 那时候,我们身陷绝境,垂死挣扎,可是我却一直没有害怕过,当时若是就那样和你一起死了,我——我也心甘情愿!

  23. 原来,千百年的时光,还是抹不去深深的一缕伤怀么……

  24. 我知道你心里在想什么,师姐,你多半是骂我不知人事,不知这世道艰险,我心中所想所求,泰半都难有结果。其实我又何尝不知?若说心苦,我也曾的确为此苦过。只是,我却是想开了,人家说世难容,不可恕,而我终究不能如他一般,破门出家。但即便如此,我也只求心中有那么一个人可以相思,而且我还知道,他心中也有我,只要这般,我也就心满意足了。

  25. 一剑斩龙,两界阴阳,三生合欢,四灵血阵,五婴圣骨,六和镜玄八卦幻,七朵痴情伤心瓣。八凶赤炎玄火鉴。

  26. 碧瑶:你哪里会笨了?你聪明的紧!难怪我爹老是对我说,你这个人看似木讷,其实内秀的很。

  27. 九幽阴灵,诸天神魔,以我血躯,奉为牺牲。三生七世,永堕阎罗, 只为情故,虽死不悔。

  28. 从小到大,不知道有多少人讨好我,送了多少奇珍异宝,可是……“她抬起头,凝视著张小凡的眼睛,轻轻道,”就算全天下的珍宝都放在我的眼前,也比不上你为我擦拭竹子的这只袖子。“

  29. 你心中苦楚,天知我知,我不能分担你的痛楚,便与你一道承担。总希望有一日,你能与心中爱人,欢欢喜喜在一起的-------陆雪琪语

  30. 我从来都不苦的,师姐。从来师门传道,便是要我们无牵无挂,心境自在,参悟造化,以求长生,不是么?可是,我要长生做什么?

  31. 我不后悔,十年了,我心中还是记挂着你。如果可能,我情愿放弃一切,跟你一起到天涯海角。可是,终究是不可能了!

本文来源:https://www.2haoxitong.net/k/doc/0ba32bd11b5f312b3169a45177232f60ddcce796.html

《实验四 函数程序设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式