实验四 模块化设计思想和函数.doc_第1页
实验四 模块化设计思想和函数.doc_第2页
实验四 模块化设计思想和函数.doc_第3页
实验四 模块化设计思想和函数.doc_第4页
实验四 模块化设计思想和函数.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验(实训)报 告项 目 名 称 实验四 函数 所属课程名称 C语言程序设计 项 目 类 型 验 证 性 实验(实训)日期 班 级 学 号 姓 名 指导教师 马 雪 英 浙江财经学院教务处制一、实验(实训)概述:【实验目的】1. 熟悉定义函数的方法;验证函数实参与形参的对应关系、值传递;函数重载.2. 理解全局变量和局部变量、动态存储和静态存储变量。3. 学会使用预编译命令【实验要求】1. 正确使用函数进行程序设计;2. 正确运用实参与形参进行参数传递。【基本原理】见第四章课件【实施环境】(使用的材料、设备、软件)Visual C+ 6.0二、实验(实训)内容:实验任务一 用DEBUG跟踪程序流程,回答问题第1题【考查知识点】函数调用、参数传递、调试【项目内容】用辗转相除法求最大公约数,并利用最大公约数求最小公倍数。已经有如下正确的程序了,请为该程序建立控制台工程,然后按照要求进行测试和调试。#include using namespace std;int main()int gcd(int,int);int lcm(int,int,int);int m,n,g,l;cinmn;g=gcd(m,n);coutG.C.D=gendl;l=lcm(m,n,g);coutL.C.M=lu)t=u;u=v;v=t;while (r=u%v)!=0)u=v;v=r;return(v);int lcm(int u,int v,int h)return(u*v/h);【方案设计】请根据课件中关于辗转相除法的相关内容,理解辗转相除法的执行过程。并画出gcd函数的流程图。【实验(实训)过程】(步骤、记录、数据、程序等)(1) 测试:请拟5组数据,比如m=100,n=105等等,运行上面的程序,初步测试该程序是否正确。对每组数据,写出程序的输出结果,判断输出结果是否正确。回答:(2)调试:对下面每组数据,通过调试,给出每个步骤后,m、n(或u、v)变量的值。提示1:调试方法,在cin语句处插入一个断点,进行调试,如下图所示。然后单步运行(step over),输入两个数据m和n。提示2:当运行到g=gcd(m,n);这条语句处时,点击调试工具条上的Step Into按钮,进入到gcd函数中进行调试。1) m=18, n=33main函数中:m的值是:n的值是:gcd函数中: u v进入到gcd时: 执行完if语句后:第一次while循环执行之后:第二次while循环执行之后:main函数中:gcd函数的返回值是:赋值后变量g的值是:赋值后变量l的值是:1) m=10, n=16main函数中:m的值是:n的值是:gcd函数中: u v进入到gcd时: 执行完if语句后:第一次while循环执行之后:第二次while循环执行之后:main函数中:gcd函数的返回值是:赋值后变量g的值是:赋值后变量l的值是:【结论】(结果、分析)无第2题【考查知识点】函数调用、参数传递、调试【项目内容】教材课后习题7。写一个函数验证著名的哥德巴赫猜想:任一个不小于 6 的偶数可以表示为两个素数之和。如6=3+3,8=3+5,10=3+7,。在主函数中输入一个不小于6的偶数n,然后调用函数godbaha,在godbaha函数中再调用prime函数,prime函数的作用是判别一个数是否为素数。在godbaha函数中输出以下形式的结果:34=3+31已经有如下正确的程序了,请为该程序建立控制台工程,然后按照要求进行测试和调试。#include #include using namespace std;int main()int godbaha(int);int n;cout n;godbaha(n);return 0;int godbaha(int n) int prime(int);int a,b;for(a=3;a=n/2;a=a+2)if(prime(a) b=n-a;if(prime(b)cout n = a + b endl; return 0;int prime(int m)int i,k=sqrt(m);for(i=2;ik) return 1;else return 0;【方案设计】为该程序建立控制台工程。【实验(实训)过程】(步骤、记录、数据、程序等)(1)测试:请运行该程序,输入几个大于6的偶数,初步判断该程序的正确性。给出你测试的结果回答:(2) 调试:观察函数调用过程。回答下面的问题。提示1:在main函数的cin语句处设置断点(如下图所示),进行调试,输入n的值为20。提示2:当运行到godbaha(n);这条函数调用语句时,点击调试工具天上的Setp Into按钮,进入到godbaha函数内部进行调试。重点观察godbaha函数中for循环执行过程中a、prime(a)、b、prime(b)这四个表达式的值。 a prime(a) b prime(b)第1次for循环后:第2次for循环后:第3次for循环后:第4次for循环后:第5次for循环后:【结论】(结果、分析)无实验任务二 给出程序,记录编译、连接错误,并进行调试与运行。(或者为程序填空题,简答题等)第1题【考查知识点】函数的定义及调用、素数的判定、while循环的使用【项目内容】读入一批正整数(以零或负数表示结束),输出其中的素数。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。提示:读入一批正整数(以零或负数表示结束)的含义是,在一次运行过程中,可以连续进行判断,每输入一个正整数,回车,判断该正整数是否为素数,再输入下一个数,判断。直到输入的数为0或者为负数时,结束判断。#include #include using namespace std;int main()int x;int prime(int m);cin x;while( (1) )if(prime(x) cout prime endl;else cout not prime x;return 0;int prime(int m)int k,n,res;/res为0表示不是素数,为1表示是素数if(m=1) return 0;res=1;n=(int)sqrt(m);for(k=2;k=n;k+)if(m%k=0)(2) ;break;return (3);(1) A、x=0 C、x0(2) A、res=1 B、res=0 C、res=-1 D、res=2(3) A、1 B、res C、0 D、-1【方案设计】(1) 请填写你选择的答案。(2) 选择好答案后,为完整的程序建立控制台工程【实验(实训)过程】(步骤、记录、数据、程序等)(1) 如果你选择正确的话,那么输入以下数据,正确的运行过程是:45not prime51not prime89prime7prime请测试你的程序是否正确【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。比如:123 456(表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。 第2题 问答题【考查知识点】带默认参数的函数(1) 在带有默认参数的函数中,指定默认值的参数必须放在形参表列中的最右端,否则出错。为什么?回答:(2) 在使用带默认参数的函数时,应当在什么时候给出参数的默认值,在定义时还是在声明时?回答:(3) 一个函数不能既作为重载函数,又作为有默认参数的函数。为什么?回答:实验任务三 给出程序,要求给出程序运行结果、回答问题,或者设计测试数据等。第1题【考查知识点】自动变量、静态局部变量、函数定义及调用、参数传递【项目内容】0506学年程序设计基础课程期末考试 四 程序分析 第1题#include using namespace std;int f(int a)auto int b=0;static int c=3;b=b+1;c=c+1;return a+b+c;int main()int a=2,i;for(i=0;i3;i+)coutf(a) ;coutendl;return 0;【方案设计】为该程序建立控制台工程。【实验(实训)过程】(步骤、记录、数据、程序等)(1) 请给出程序的输出结果回答:(2) 请分析每次函数调用后b和c的值分别是多少f函数中:b c第一次执行完函数f中的语句后:第二次执行完函数f中的语句后:第三次执行完函数f中的语句后:(3) 请根据这道题,总结静态局部变量的含义。回答:【结论】(结果、分析)无第2题【考查知识点】求余、取整数各位上数字的方法、函数定义及调用【项目内容】下面的程序是实现:输入一个正整数,统计该正整数的各位上数字中,0出现了几次,1出现了几次,。如没有出现,则不输出该位数字的信息。#include using namespace std;int f(int number, int digit)int count=0;while(number!=0)if(number%10=digit)count+;number=number/10;return count;int main()unsigned int num;cin num;for(int i=0; i=9; i+)if(f(num,i)!=0)cout i : f(num,i) endl;return 0;【方案设计】为该程序建立控制台工程。【实验(实训)过程】(步骤、记录、数据、程序等)(1) 请拟5个正整数,尽量大一点,但不要超出unsigned int所表示的范围。然后运行程序,输入每个正整数,记录各自的输出。回答:(2) 请分析f函数中while循环的功能,并画出流程图。while(number!=0)if(number%10=digit)count+;number=number/10; 【结论】(结果、分析)无实验任务四 根据题目说明,编程实现并进行程序调试第1题【考查知识点】函数的的定义及调用【项目内容】C+程序设计及习题及参考答案P70页,第45题。编写程序:任意输入3个整数,找出其中的最大值。用函数maximum()找出3个数中的最大值,主函数输入三个数并输出最大值。提示:3个整数是在main函数中通过键盘输入的,然后调用maximum函数求出这三个数中的最大值并输出。maximum函数的功能是接受从main函数传过来的3个数,求出最大值后,返回给main函数。【方案设计】提示:请在此粘贴你的完整程序。【实验(实训)过程】(步骤、记录、数据、程序等)提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手) ,请参照实践指导第4章和附录A,对程序的错误进行修改并记录。回答:【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。比如:123 456(表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。 第2题【考查知识点】函数的的定义及调用、3个数的排序【项目内容】编写程序:任意输入3个整数,然后对这三个整数按从小到大的顺序进行排序。在主函数中输入三个数,用函数sort()对这3个数进行排序。提示:因为return语句只能返回一个值,因此在sort函数中对这3个整数排好序后,是不能把这3个数都返回到main函数的,因此只能在sort函数中进行输出。【方案设计】提示:请在此粘贴你的完整程序。【实验(实训)过程】(步骤、记录、数据、程序等)提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手) ,请参照实践指导第4章和附录A,对程序的错误进行修改并记录。回答:【结论】(结果、分析)提示一:请记录该程序的运行过程:输入输出。比如:123 456(表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。 提示二:请多拟几组数据,验证你的程序时候正确。 回答:第3题【考查知识点】库函数的调用、输出格式控制【项目内容】2005年秋浙江省高等学校计算机等

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论