版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告工学院土木工程专业09级2011至2012学年度第1学期学号:xxxxxx姓名:xxxxxx2011年12月1日第3~4节综合楼325教室进入实验室时间同组者离开实验室时间实验项目名称09:50无11:30实验七函数(二)实验目的:1、进一步熟悉怎样利用函数实现指定的任务;2、熟悉函数的嵌套调用和递归调用的方法;3、熟悉全局变量和局部变量的概念和用法;实验内容(1)写一个函数,用“起泡法”对输入的10个字符按由小到大顺序排列。①输入程序,进行编译和运行,分析结果。输入程序如下:#include<stdio.h>#include<string.h>#defineN10charstr[N];intmain(){voidsort(char[]);inti,flag;for(flag=1;flag==1;){printf("inputstring:\n");scanf("%s",&str);if(strlen(str)>N)printf("stringtoolong,inputagain!");elseflag=0;}sort(str);printf("stringsorted:\n");for(i=0;i<N;i++)printf("%c",str[i]);printf("\n");return0;}voidsort(charstr[]){inti,j;chart;for(j=1;j<N;j++)for(i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}运行结果如下:②将要排序的字符串改为5个,按由大到小的顺序排列。输入程序如下:#include<stdio.h>#include<string.h>#defineN5charstr[N];intmain(){voidsort(char[]);inti,flag;for(flag=1;flag==1;){printf("inputstring:\n");scanf("%s",&str);if(strlen(str)>N)printf("stringtoolong,inputagain!");elseflag=0;}sort(str);printf("stringsorted:\n");for(i=0;i<N;i++)printf("%c",str[i]);printf("\n");return0;}voidsort(charstr[]){inti,j;chart;for(j=1;j<N;j++)for(i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]<str[i+1]){t=str[i+1];str[i+1]=str[i];str[i]=t;}}运行结果如下:(2)用递归法将一个整数n转换成字符串。n的位数不确定,可以使任意的整数。①输入程序,进行编译和运行,分析结果。输入程序如下:#include<stdio.h>intmain(){voidconvert(intn);intnumber;printf("inputaninteger:");scanf("%d",&number);printf("output:");if(number<0){putchar('-');putchar('');number=-number;}convert(number);printf("\n");return0;}voidconvert(intn){inti;if((i=n/10)!=0)convert(i);putchar(n%10+'0');putchar(32);}运行结果如下:②分析递归调用的形式和特点。函数调用的一般形式为:函数名(实参表列)说明:1.如果是调用无参函数,则“实参表列”可以没有,但括弧不能省略。2.如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配。实参与形参按顺序对应,向形参传递数据。3.如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序。有两种调用形式:直接递归----在函数体内调用自身,间接递归----函数中调用其他函数,并由其他函数调用自身特点:原问题可以分解为若干子问题分别进行求解;适当地合并子问题的解可以得到原问题的解;而子问题的求解方式与原问题的求解相同;因而需要调用相同的函数来实现;由此而涉及到递归技术。③思考如果不用递归法,能否改用其他方法解决此问题,上机试一下。答:应该有别的方法,但至今没有想出来。(3)编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。①在程序中用全局变量,编译和运行程序,分析结果。讨论为什么要用全局变量。输入程序如下:#include<stdio.h>intletter,digit,space,others;intmain(){voidcount(char[]);chartext[80];printf("inputstring:\n");gets(text);printf("string:");puts(text);letter=0;digit=0;space=0;others=0;count(text);printf("\nletter:%d\ndigit:%d\nspace:%d\nothers:%d\n",letter,digit,space,others);return0;}voidcount(charstr[]){inti;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))letter++;elseif(str[i]>='0'&&str[i]<='9')digit++;elseif(str[i]==32)space++;elseothers++;}运行结果如下:分析:在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,外部变量是全局变量(也称全程变量)。全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。在此题中,由于调用函数的返回值太多,所以运用全局变量避免了返回时所造成的麻烦。故在此题中使用全局变量比较简便。②能否不用全局变量,修改程序并运行之。答:不能。使用局部变量后,在调用的函数中无法识别letter、digit、space和others等变量。必须重新定义并一一返回。此过程比较麻烦。(4)求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据求出来的最大公约数求最小公倍数。①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传送给函数hcf,求出的最大公约数返回主函数,最后再与两个整数一起作为实参传递给函数lcd,求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。输入程序如下:#include<stdio.h>intmain(){inthcf(int,int);intlcd(int,int,int);intu,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);return0;}inthcf(intu,intv){intt,r;if(v>u){t=u;u=v;v=t;}while((r=u%v)!=0){u=v;v=r;}return(v);}intlcd(intu,intv,inth){return(u*v/h);}运行结果如下:②用全局变量的方法。用两个全局变量分别代表最大公约数和最小公倍数。用两个函数分别求最大公约数和最小公倍数,但其值不由函数带回,而是赋给全局变量。在主函数中输出他们的值。输入程序如下:#include<stdio.h>intHcf,Lcd;intmain(){voidhcf(int,int);voidlcd(int,int);intu,v;scanf("%d,%d",&u,&v);hcf(u,v);lcd(u,v);printf("H.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度消防水泵房改造与维护合同协议书3篇
- 工作计划表模板(共6篇)
- 2024年员工三级安全培训考试题含答案下载
- 岩溶泉水化学特征研究-第2篇-洞察分析
- 语言习得与认知负荷-洞察分析
- 鱼池养殖产业链协同-洞察分析
- 装饰工程关键工序的施工方法及确保质量的技术措施
- 施工方案及组织计划
- 03 完形填空20篇(15空名校名题)-2023-2024学年七年级英语上学期期中热点题型专练(原卷版)
- 土工布铺设施工方案与技术措施
- 高职计算机专业《Web前端开发技术》说课稿
- 【独立储能】山西省独立储能政策及收益分析-中国能建
- 中东及非洲冲击式破碎机行业现状及发展机遇分析2024-2030
- 工程制图(中国石油大学(华东))智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 化工原理(1)智慧树知到期末考试答案章节答案2024年华北科技学院
- DZ/T 0441.1-2023 岩芯数字化技术规程 第1部分 总则(正式版)
- 2024-2030年中国无创血流动力学监测装置行业市场发展趋势与前景展望战略分析报告
- CHT 1027-2012 数字正射影像图质量检验技术规程(正式版)
- 文艺复兴经典名著选读智慧树知到期末考试答案章节答案2024年北京大学
- 一年级下-科学-非纸笔测试
- 淘气的一天(教案)2023-2024学年数学二年级下册 北师大版
评论
0/150
提交评论