实验八函数模板与类模板
一、实验目的
1.理解模板的作用。
2. 学习函数模板及其声明方法。
3. 掌握模板函数及其生成方法。
4. 学习函数模板的异常情况的处理方法。
5. 学习类模板的定义和使用方法。
一、实验内容
1. 设计一个函数模板,其中包括数据成员T a[n]以及对其进行由大到小排序的成员函数 sort( ),模板参数T可实例化成字符串。
2. 设计一个分数类模板,要求:
(1)分数类模板中包含:两个分数的加、减、乘法、除运算;
(2)分数的输出格式:分子/分母;
(3)测试程序中分子和分母既可以同时为int类型,也可以同时为float类型。
3. 整数vector容器A和vector容器B,编程实现将A的在B中也有的元素给删除掉?(选做)
4. 使用STL中的映射(map)容器,建立阿拉伯的数字0~9和英文单词Zero到Nine的映射关系,并输入阿拉伯数字(如:1),输出英文数字(如:One)。(选做)
实验报告 实验名称 课程名称___电子技术基础实验 院系部: 专业班级:学生姓名:学号:同组人:实验台号:指导教师:成绩:实验日期: 华北电力大学
实验报告要求: 一、实验目的及要求 二、仪器用具 三、实验原理 四、实验步骤(包括原理图、实验结果与数据处理) 五、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见。) 六、实验原始数据
一、实验目的及要求: 1. 学会放大器静态工作点的调试方法,分析静态工作点对放大器性能的影响。 2. 掌握放大器电压放大倍数和最大不失真输出电压的测试方法。 3. 悉常用电子仪器及模拟电路实验设备的使用。 二、仪器用具:略 三、实验原理 图1.2.1为电阻分压式工作点稳定单管放大器实验电路图。 图1.2.1 共射极单管放大器实验电路 在图1.2.1电路中,当流过偏置电阻1B R 和2B R 的电流远大于晶体管VT 的基极电流B I 时(一般5~10倍),则它的静态工作点可用下式估算: CC B2B1B1B U R R R U +≈ U CE =U CC -I C (R C +R F1 + R E ) 电压放大倍数: 1)1( // F R β++-=be L C V r R R β A 其中r be =200+26 (1+β)/I E 输入电阻:R i =R B1 // R B2 // [r be +(1+β)R F1] 输出电阻:R O ≈R C 四、实验方法与步骤: 1. 调试静态工作点 接通+12V 电源、调节R W ,使U E =2.0V ,测量U B 、U E 、U C 、R B2值。记入表1.2.1。 E U BE = U B - U E =0.665V ,U CE = U C - U E =5.8V,I C ≈I E = U E /R E =2/(1.1)=1.82mA 实验数据显示,Q 点的值满足放大电路的静态工作点要求,BJT 处于放大区。 2. 测量不同负载下的电压放大倍数 C E BE B E I R U U I ≈+-≈1 F R
C++函数模板详解 经常有碰到函数模块的应用,很多书上也只是略有小讲一下,今天又狂碰到函数模块,无奈特地找来C++编程经典<
实验八公式、序列及函数的使用 一、实验目的 1.熟练掌握序列填充及公式复制的方法; 2.掌握常用函数的功能及使用方法,并能用它们来解决一些实际问题。 二、实验内容与操作步骤 在Excel环境下完成以下各操作: (一)序列填充及公式的使用 1.在Excel中创建一个空白工作簿 2.利用Excel提供的数据填充功能,在Sheet1工作表中输入以下数据: ⑴在区域A1:A9中从上到下填入:2,4,6,8,10,12,14,16,18 ⑵在区域B1:B9中从上到下填入:1,2,4,8,16,32,64,128,256 ⑶在区域C1:C12中从上到下填入:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC ⑷在区域D1:D7中从上到下填入:星期日,星期一,星期二,星期三,星期四,星期五,星期六 3.在Sheet2工作表中,利用公式计算二次函数ax2+bx+c的值,其中a=2,b=3,c=5,x从-3到4变化,每隔0.5取一个函数值。操作方法写出如下: 4.把工作簿以E81.XLS为文件名存入D:\EX8中。 (二)函数的使用 在Excel环境下打开D:\EX8\E82.XLS文件,依次完成以下各操作后按E83.XLS为文件名存入D:\EX8中。 1、统计函数的使用 ⑴单击“统计函数”工作表;
⑵在区域F3:G8中用“统计函数”计算出各分店的统计值。 操作方法是:先在F3单元及G3单元输入的计算公式,然后选定区域F3:G3后双击其填充柄。其中F3单元的公式为,G3单元的公式为。 ⑶在区域B9:E12用“统计函数”计算出各季度的统计值。 2、条件函数的使用 ⑴单击“条件函数”工作表。 ⑵计算出各学生的平均分; ⑶给定各学生的成绩等级,规则如下:平均分≥90为“A”,80≤平均分<90为“B,70≤平均分<80为“C”,60≤平均分<70为“D”,平均分<60为“E”。以此规则在区域F3:F62用IF函数确定各学生的等级。 ⑷用FREQUENCY函数在区域I2:I5中统计出平均分0~59,60~79,80~99,100各分数段的学生人数。 3、文本函数的使用 ⑴单击“文本函数”工作表; ⑵在区域A2:F32给出的数据清单中,编号的前3位为系别信息,101为数学系,102为物理系,103为化学系,据此在区域B3:B32用函数求出每位教师的系别。其中B3单元使用的公式为。 ⑶已知身份证号的第7至第10位数为出生年份,据此在区域F3:F32用函数求出每位教师的出生年份。其中F3单元使用的公式为。 4、日期函数的使用 ⑴单击“日期函数”工作表; ⑵在区域A2:F32给出的数据清单中,在区域E3:E32用日期函数求出每位职工的工龄。其中E3单元使用的公式为。 ⑶在区域F3:F32用日期函数求出每位职工的工作天数(即自参加工作以来已经过的总天数。其中F3单元使用的公式为。 5、财务函数的使用 使用 PMT 函数完成以下有关的操作: ⑴单击“财务函数”工作表; ⑵某企业向银行贷款5 万元,准备4年还清,假定当前年利率为 4 % ,在 B5 单元 计算每个月应向银行偿还贷款的数额,根据条件在 B2 : B4 补充所需内容。其中单元格B5 使用的公式为。 ⑶假定当前年利率为 5 %,为使 5 年后得到 10 万元的存款,在 D5 单元计算现在开
实验记录本模版 本科毕业设计(论文) 实验记录本 课题名称: 姓名: 学号: 指导教师: 宁夏医科大学药学系 实验记录具体要求: 实验记录的统一标准格式,要求实验记录必须有下列主要内容,课题名称、实验目的、研究内容、实验日期、实验条件、参考文献、实验材料、实验设计原理和方法、实验过程、实验结果、实验讨论及记录者签名。实验记录必须做到及时、真实、准确、完整,防止漏记和随意涂改。严禁伪造和编造数据。 1, 课题名称,要求写明本课题的全名、课题来源等。 2, 实验目的,写明本次实验的名称和具体目的。 3, 研究内容,本次实验具体要研究的内容及所要解决的问题。 实验设计原理,根据实验的目的和内容,采用统计学原理设计实验,以4, 使实验结束后数据的分析和统计,有利于得出科学的实验结论。 5, 研究方法,根据实验设计确定本次实验的方法,详细记录本次实验所要采取的具体实验设计、技术路线、实验方法、工艺流程,详细叙述每个实验步骤。 6, 实验日期,本次实验的年、月、日、时。在记录本的每一页右上角填写日期。
7, 实验条件,实验室的温度、湿度、动物实验室的级别。 8, 实验材料,详细 记录标本、样品的来源、取材的时间,实验原料的来源、特性。所用试剂、标准品、对照品等的名称、来源、厂家、批号、规格及配制方法等。所使用的仪器、设备的名称、厂家、出厂日期、生产批号、规格型号。 9, 实验过程,详细记录本次实验过程中所出现的具体情况及所观察到的反应过程。需保留所有的原始记录于实验记录本上。 10,实验结果,详细记录实验所获得的各种实验数据及反应现象,并做简要分 析。不得在实验记录本上随意涂改实验结果,如必须修改,须在修改处划一斜线,不可完全涂黑,保证修改前记录能够辨认,并应由修改人签名,注明修改时间及原因。 11, 实验讨论,对本次实验结果进行分析、讨论,详细说明在实验过程 中所发现的问题及解决的方法,为下一步的实验制定实施方案。 12, 参考文献,详细记录所参考的文献资料的作者、文题(书名)、刊物(出版社)、页码、发表时间及卷、期号等。 13, 记录者签名,参加记录的人需在实验记录本上签名,最后由指导教师审核后签名。 实验室温度、湿度, 实验日期, 实验记录人, 指导教师,
湖北民族学院信息工程学院实验报告 (电气、电子类专业用) 班级:000000 姓名:00000 学号:0000000000000 实验成绩: 实验时间:2019年6月10日5-8节实验地点:自动控制原理实验室课程名称:电力电子技术与matlab仿真实验类型:设计型□验证型□综合型□实验题目:三相桥式全控整流及有源逆变电路 实验仪器:装有matlab软件的电脑一台
(1)交流电压源的参数设置 三相电源的相位互差120°,设置交流峰值相电压为100V、频率为60Hz。(2)负载的参数设置 H =C R Ω L , inf , 45= =
本实验中只要改变参数对话框的数值的大小,即改 变了触发信号的控制角。打开仿真 ode23tb 0.02s 启动仿真。 打开仿真/参数窗后,选择ode23tb 设置好各模块参数后,启动仿真;改变触发角 3、有源逆变带电阻电感性负载的仿真 (1)各模块参数设置同上
Continuous pow ergui v +- Ud alpha_deg AB BC CA Block pulses Synchronized 6-Pulse Generator Scope i +- Id i +-IC i +-IB i +- IA 0Constant2 30 Constant1 v +- CA C v +- BC B v +-AB A + RLC g A B C + - Bridge Iabc id ud Uabc 6pulse 2 时三相电压、三相电流、触发信号、负载电压和负载电流的波形
图 4=120时三相电压、三相电流、触发信号、负载电压和负载电流的波形图=150时三相电压、三相电流、触发信号、负载电压和负载电流的波形
本科毕业设计(论文) 实验记录本 课题名称: 姓名: 学号: 指导教师: 宁夏医科大学药学系
实验记录具体要求: 实验记录的统一标准格式,要求实验记录必须有下列主要内容:课题名称、实验目的、研究内容、实验日期、实验条件、参考文献、实验材料、实验设计原理和方法、实验过程、实验结果、实验讨论及记录者签名。实验记录必须做到及时、真实、准确、完整,防止漏记和随意涂改。严禁伪造和编造数据。 1.课题名称:要求写明本课题的全名、课题来源等。 2.实验目的:写明本次实验的名称和具体目的。 3.研究内容:本次实验具体要研究的内容及所要解决的问题。 4.实验设计原理:根据实验的目的和内容,采用统计学原理设计实验,以使实验结束后数据的分析和统计,有利于得出科学的实验结论。 5.研究方法:根据实验设计确定本次实验的方法,详细记录本次实验所要采取的具体实验设计、技术路线、实验方法、工艺流程,详细叙述每个实验步骤。 6.实验日期:本次实验的年、月、日、时。在记录本的每一页右上角填写日期。 7.实验条件:实验室的温度、湿度、动物实验室的级别。 8.实验材料:详细记录标本、样品的来源、取材的时间,实验原料的来源、特性。所用试剂、标准品、对照品等的名称、来源、厂家、批号、规格及配制方法等。所使用的仪器、设备的名称、厂家、出厂日期、生产批号、规格型号。 9.实验过程:详细记录本次实验过程中所出现的具体情况及所观察到的反应过程。需保留所有的原始记录于实验记录本上。 10.实验结果:详细记录实验所获得的各种实验数据及反应现象,并做简要分析。不得在实验记录本上随意涂改实验结果,如必须修改,须在修改处划一斜线,不可完全涂黑,保证修改前记录能够辨认,并应由修改人签名,注明修改时间及原因。 11.实验讨论:对本次实验结果进行分析、讨论,详细说明在实验过程中所发现的问题及解决的方法,为下一步的实验制定实施方案。 12.参考文献:详细记录所参考的文献资料的作者、文题(书名)、刊物(出版社)、页码、发表时间及卷、期号等。 13.记录者签名:参加记录的人需在实验记录本上签名,最后由指导教师审核后签名。
实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main()
实验1 cin、cout及面向过程的编程实验2 引用与函数重载 实验3 类与对象 实验4 静态成员与对象参数 实验5 拷贝构造函数与内存分配 实验6 对象数组与子对象 实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1) 实验9 运算符重载(2) 实验10 继承与派生 实验11 虚函数与类族 实验12 STL
实验1 cin 、cout 及面向过程的编程 1A :显示某个日期是星期几 (1) 输入、输出要求: 输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例: (2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即 7)%110)1(26244(-+? ?? ???++-??????+??????+=d m c c y y w 公式中的符号含义: w ——星期几 c ——年份的前两位 y ——年份的后两位 m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日 ??——代表取整,即只要整数部分 %——除法求余数 例如:对于2049年10月1日,计算过程如下: 5 7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+??? ???++?-??????+??????+=w 即2049年10月1日是星期5。如果计算结果是负数,则加7。 1B :格式化输出实数 从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下
实验报告 (2013 / 2014 学年第二学期) 课程名称Java语言程序设计 实验名称综合图形界面程序设计 实验时间2014年5月5日 指导单位计算机学院软件教学中心 指导教师薛景 学生姓名臧玉付班级学号12001037 计算机科学与技术学院(系)计算机学院专业 (计算机通信)
2、编写一个简单的计算器软件,实现简单的四则运算。(请在下方空白处填写本程序的全部 ..程序代码及软件界面截图) import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class test extends JFrame { private final int BUTTON_WIDTH=50; private final int BUTTON_HEIGHT=40; JButton one=new JButton("1"); JButton two=new JButton("2"); JButton three=new JButton("3"); JButton four=new JButton("4"); JButton five=new JButton("5"); JButton six=new JButton("6"); JButton seven=new JButton("7"); JButton eight=new JButton("8"); JButton nine=new JButton("9"); JButton zero=new JButton("0"); JButton DOT=new JButton("."); JButton ADD=new JButton("+"); JButton SUB=new JButton("-"); JButton MUL=new JButton("*"); JButton DIV=new JButton("/"); JButton EQU=new JButton("=");
实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include
#include
实验报告 实验项目名称____________________________ 实验室__________________________________ 所属课程名称______________________________ 实验类型_________________________________ 实验日期__________________________________ 班级__________________________ 学号__________________________ 姓名__________________________ 成绩__________________________
实验概述: 【实验目的及要求】【实验原理】
【实验环境】(使用的软硬件) 实验内容: 【实验方案设计】
【实验过程】(实验步骤、记录、数据、分析) 【结论】(结果) 【小 结】
指导教师评语及成绩: 成绩: 指导教师签名: 批阅日期: 附件: 实验报告说明 1实验项目名称:要用最简练的语言反映实验的内容。 2 ?实验类型:一般需说明是验证型实验还是设计型实验、综合型实验或其他实验。 3 ?实验目的与要求:目的要明确,要抓住重点。 4 ?实验原理:简要说明本实验项目所涉及的理论知识。
5.实验环境:实验用的软硬件环境(配置)。 6.实验方案设计(思路、步骤和方法等):这是实验报告极其重要的内容,概括整个实验过程。 对于验证型实验,要写明依据何种原理、何仲操作方法进行实验,并写明需要经过哪几个步骤。 对于设计型和综合型实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。 7.实验过程(实验中涉及的记录、数据、分析):写明具体上述实验方案的具体实施,包括实验过程中的记录、数据和相应的分析。 8.结论(结果):即根据实验过程中所见到的现象和测得的数据,做出结论。 9.小结:对本次实验的心得体会、思考和建议。 10.指导教师评语及成绩:指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值。
实验八 函 数(二) 参考答案 /*1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】*/ double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) {t=array[i][j]; array[i][j]=arrar[j][i]; array[j][i]=t ; } } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student! 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】 int fun( char s[])
实验报告模板 不知道如何写实验报告的朋友,下面请看我给大家整理收集的实验报告模板,希望对大家有帮助。 实验报告模板1 一、演示目的 气体放电存在多种形式,如电晕放电、电弧放电和火花放电等,通过此演示实验观察火花放电的发生过程及条件。 二、原理 首先让尖端电极和球型电极与平板电极的距离相等。尖端电极放电,而球型电极未放电。这是由于电荷在导体上的分布与导体的曲率半径有关。导体上曲率半径越小的地方电荷积聚越多(尖端电极处),两极之间的电场越强,空气层被击穿。反之越少(球型电极处),两极之间的电场越弱,空气层未被击穿。当尖端电极与平板电极之间的距离大于球型电极与平板电极之间的距离时,其间的电场较弱,不能击穿空气层。而此时球型电极与平板电极之间的距离最近,放电只能在此处发生。 三、装置 一个尖端电极和一个球型电极及平板电极。 四、现象演示 让尖端电极和球型电极与平板电极的距离相等。尖端电极放电,而球型电极未放电。接着让尖端电极与平板电极之间的距离大于球型电极与平板电极之间的距离,放电在球型电极与平板电极之间发生
雷电暴风雨时,最好不要在空旷平坦的田野上行走。为什么? 实验报告模板2 一、实验目的及要求: 本实例是要创建边框为1像素的表格。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域网,并且接入国际互联网。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装网页三剑客(dreamweaver mx;flash mx;fireworks mx)等网页设计软件; 4、安装acdsee、photoshop等图形处理与制作软件; 5、其他一些动画与图形处理或制作软件。 三、实验原理 创建边框为1像素的表格。 四、实验方法与步骤 1) 在文档中,单击表格""按钮,在对话框中将"单元格间距"设置为"1"。 2) 选中插入的表格,将"背景颜色"设置为"黑色"(#0000000)。 3) 在表格中选中所有的单元格,在"属性"面版中将"背景颜色"设置为"白色"(#ffffff)。 4) 设置完毕,保存页面,按下"f"键预览。 五、实验结果
实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include
x=x-y; printf("%d,%d\n",x,y); 3.#include
各种用C 语言实现的模板可能在使用形式上有所不同。现以一个求和函数Sum 为例,用C++ Template 可写如下: template R Sum(const T *array, int n) { R sum = 0; for (int i = 0 ; i < n ; ++i) sum += i; return sum; } 如果不是内置类型,该模板隐式地需要有R R::operator+=(T)运算符可用。 1. 使用函数指针作为Functor 替换者 Typedef struct tagAddClass { Void (*add)(char* r1, const char* r2); Int elemSize; Char sum[MAX_ELEM_SIZE]; } AddClass; void Sum(AddClass* self, const char* array, int n) { for (int i = 0 ; i < n ; ++i) self->add(self->sum, array + i*self->elemSize); } 使用时:
….. V oid AddInt(char* r1, const char* r2) { *(long*)r1 += *(int*)r2; } AddClass addClass = {AddInt, 2, 0 }; Int array[100]; Read(array); Sum(&addClass, array, 100); ….. 2. 用宏作为Functor的替换者 #define GenSumFun(SumFunName, Add, RetType, ElemType) \ RetType SumFunName (const ElemType *array, int n) \ { \ RetType sum = 0; \ for (int i = 0 ; i < n ; ++i) \ Add(sum, i); \ return sum; \ } 使用时: #define AddInt(x, y) ((x) += (y))
淮海工学院计算机科学系实验报告书 课程名:《C语言程序设计A 》 题目:实验8 函数 ——递归函数 班级:软嵌151 学号:2015123349 姓名:陈正宁
1、实验内容或题目 (1)用递归编写n!的函数,并在main主函数中调用此函数。 (2)有n个大小不同的盘片从大到小放在A柱上,另有B和C两个空柱,要求将这n个盘片从A柱搬到C柱上,在搬动过程中,每次只能搬一个盘片,而且小的不能放在大的之下。编写hanio函数实现搬迁过程。 (3)编写一个程序,求解皇后问题:在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。 2、实验目的与要求 (1)要求熟练掌握函数的定义和调用,熟悉函数返回值的使用。 (2)熟悉函数调用的方式和过程。 (3)重点掌握递归函数的使用。 (4)要求实验的第2题采用递归函数编写,盘片的数目在main主函数中输入。提示:函数的参数定义如hanio(n,A,C,B),表示将n个盘片从A柱通过C柱搬到B柱。 (5)要求实验的第3题采用递归函数编写皇后的个数n由用户输入,其值不能超过20;采用整数数组q[N]求解结果,因为每列只能放一个皇后,q[i]的值表示第i个皇后所在的行号,即该皇后放在(q[i],i)的位置上。求解皇后问题的递归模型如下:place(i,n):若i=n,则n个皇后放置完毕,输出解(输出q数组元素) place(k,n):在第k列找一个合适位置i,放置一个皇后(即q[k]=i);place(k+1,n);其中,place(k,n)表示前面的第1,…,k-1个皇后放置好后,现在用于放置k,…,n的皇后。 3、实验步骤与源程序 ⑴实验步骤 ⑵源代码 (1)、 #include
实验5 函数 姓名:学号:实验日期: 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: 1.在“菜单栏”中单击“组建”,然后在弹出的下划栏中选择“开始调试”,然后选择“Step Into”;或者按“F11”。 2.然后开始单步调试,按F10 提问 修改前运行结果画面: (1),请在下面粘贴运行结果画面: #include
实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:#include
int a=3,b=5; 通过本题,可以得出什么结论?若没给未知量赋予初值,那未知量将被随意赋值,赋值一主函数的赋值为先。 2.2 实验内容部分第2题源程序代码,请贴图: 程序运行结果画面,请贴图: 2.3 实验内容部分第3题源程序代码,请贴图:
实验8 参考答案 二、实验内容与操作步骤 (二) 函数的使用 1、统计函数的使用 其中F3单元的公式为=SUM(B3:E3) ,G3单元的公式为=A VERAGE(B3:E3)。 2、条件函数的使用 ⑶其中F3单元使用的公式为: =IF(E3>=90,”A”,IF(E3>=80,”B”,IF(E3>=70,”C”,IF(E3>=60,”D”,”E”))))。 然后双击F3单元的填充柄。 ⑷具体的操作步骤及计算公式如下: (1)在区域H2:H4输入统计间距数据59.9,79.9,99.9; (2)选定作为统计结果数据的输出区域:I2:I5; (3)输入频度分析统计函数的公式:=FREQUENCY(E3:E62,H2:H4); (4)按[Ctrl]+[Shift]+[Enter] 3、文本函数的使用 ⑵其中B3单元使用的公式为 =IF(LEFT(A3,3)=”101”,”数学系”,IF(LEFT(A3,3)=”102”,”物理系”,”化学系”))。 ⑶其中F3单元使用的公式为 =MID(E3,7,4) 。 4、日期函数的使用 ⑵其中E3单元使用的公式为 =YEAR(TODAY())-YEAR(D3)+1 。 ⑶其中F3单元使用的公式为 =TODAY()-D3 。 5、财务函数的使用 ⑵其中B5单元使用的公式为 =PMT(B2/12,B3*12,B4)。 ⑶其中E5单元使用的公式为 =PMT(E2/12,E3*12,,E4)。 6、排位函数的使用 ⑵其中G2单元使用的公式为 =F2-$B$10 。 ⑶其中H2单元使用的公式为 =RANK(F2,$F$2:$F$8,1) 或 =RANK(G2,$G$2:$G$8,1) 。 三、思考与练习 1、具体的操作步骤及计算公式如下: (1) 在区域F10:F13输入统计间距数据99,199,299,399; (2) 选定作为统计结果数据的输出区域:G10:G14; (3) 输入频度分析统计函数的公式:=FREQUENCY(C3:C23,F10:F13); (4) 按[Ctrl]+[Shift]+[Enter] 2、操作步骤及计算公式:
C++编程之函数模板 1、函数之模版出现 在调换两个数值之间的函数写法上,由于有int、float、double等不同的数据类型,如下例:[cpp]view plain copy 1.void swapValues(int& num1, int& num2 ) 2.{ 3.int temp; 4. temp = num1; 5. num1 = num2; 6. num2 = temp; 7.} 上例只能适合于int 类型的变量,假如要调用double类型的两个数调换,又要重写上面的函数(把上面int 的位置全改为double)。可以达到目的,但不高效。我们需要一种能交换各种数据类型变量的函数定义,它的表示方法如下所示: [cpp]view plain copy 1.void swapValues( TypeData& var1, TypeData& var2) 2.{ 3. TypeData temp; 4. temp = var1; 5. var1 = var2; 6. var2 = temp; 7.} 在C++语言中,上述函数定义方式是可行的。我们可以定义一个适用于各种数据类型变量的函数。 2、函数模版语法 模版定义和函数声明以如下方式:
template 实验八 函 数(二) 参考答案 1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 1 2.0、34.0、4.0、2 3.0、3 4.0、4 5.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】 double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) t=array[i][j], array[i][j]=arrar[j][i], array[j][i]=t ; } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案】 int fun( char s[]) { int i,word=0,num=0;/*word 标志是否是单词,num 用来记录单词数*/ for(i=0;s[i]!=?\0?;i++)实验八 参考答案