




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验01:熟悉MFC编程一、实验目的通过本实验的学习,使学生熟悉Visual C+ 6.0集成开发环境的使用,为今后程序编程和调试奠定基础;同时熟练C+基本语法、程序的基本结构和调试一般程序的方法。二、实验内容1、进入和退出Microsoft Visual Studio 6.0集成开发环境。 2、菜单、工具栏和集成开发环境的使用方法,在附录的菜单介绍中有,可以查阅MSDN具体使用方法。3、简单程序设计3、简单程序设计 输入一个整数,判断数的奇偶性后输出结果。【过程】:1、首先按要求创建自己的文件夹;2、进入VC环境,选择File|New菜单,弹出Projects页面选择Win32 Console Application工程类型,在Project name 编辑框输入工程名Exp1_1,路径选择自己的文件夹,按OK按钮;3、在随后的Application Wizard 中选择an empty project,按Finish按钮;4、选择File|New菜单,在New对话框的Files页面选择C+ Source File,输入文件名Exp1_1.cpp,选中Add to Project复选框,按OK按钮,打开了源文件编辑窗口,输入以下源代码。 includeVoid main() int input; coutinput; if(input%2) cout”number ”inputt”is odd.”; else cout”number ”inputt”is even.”; return;【要求】:l 仔细阅读程序,掌握程序结构,找到程序的数据定义部分和操作部分,辨识各部分功能,注意输入输出语句的使用;l 按照正确的步骤进入VC环境,在自己创建的工程中录入上述源程序,注意书写格式,养成良好的编程习惯;消除语法错误,编译链接程序;l 运行程序,输入数据观察结果,并进行测试;【测试数据】:345 680 -34 -23.5(有意用非整数测试)分别用上面各数据作为输入数据,测试程序的执行,分析程序结果,并进行记录。 编写程序:要求输入球的半径,分别计算球的表面积、体积和质量,假设球的密度为7.8,输出以上结果。【要求】:注意输入输出形式,要求输入前应有提示性输出,如“Please Input the Radius of the Ball”,注意变量名的定义,最好能望文生义,如:Radius,Volume,Weight等。整数相除取整,注意计算公式正确的数据类型。【提示】:球表面积计算公式s,球体积计算公式。 编写程序:要求实现输入两个整数,将它们交换后输出。【要求】:交换两个整数,一般方法是用一个中间变量,经过几次赋值实现;如果不用中间变量,如何实现?用两种方法实现本程序。【提示】:采用按位异或,任一位与0异或保持不变,而与1异或翻转(0变1;1变0)六、实验步骤1、进入和退出Visual C+ 6.0集成开发环境。 启动并进入Visual C+ 6.0集成开发环境有三种方法:(1)在开始菜单上,选择程序,然后Microsoft Visual Studio 6.0组,再选择Microsoft Visual Studio 6.0。(2)在桌面上创建VC的某种工程的快捷方式,直接双击该图标;(3)如果已经创建了VC的某种工程,双击该工程的dsw(Develop Studio Workshop)文件图标,也可以进入继承开发环境,并打开该工程。(4)选择FileExit菜单,退出集成开发环境。2、菜单、工具栏和集成开发环境的使用方法,在附录的菜单介绍中有,可以查阅MSDN具体使用方法。3、参见程序设计基础C试验指导与课程设计第1.3 实验步骤。七、思考题1、利用VC环境中的MSDN,熟悉VC编程环境。2、要求输入三个不等的整数后按Enter键,屏幕上由大到小输出这三个整数。八、实验报告(1) 预习实验指导书程序设计基础C试验指导与课程设计的实验1;(2) 做好实验记录;(3) 按照实验报告格式(附件1)要求填写实验内容,并提交实验报告。实验02:流程控制语句一、实验目的进一步熟悉编程环境,并通过本实验的学习,使学生:1、 熟悉条件语句、开关语句、循环语句的使用;2、 掌握三种循环结构的区别和联系、如何转换以及正确使用;3、 掌握与循环语句相关的break和continue语句的使用;4、 掌握常用算法:枚举法、递推法、迭代法。二、实验内容1、输入一门课程的成绩,若高于90分,输出“A Grade”,若高于80而低于90,输出“B Grade”,若高于70而低于80,输出“C Grade”,若高于60而低于70,输出“D Grade”,否则,输出“Not Passed”。用if-else嵌套和switch语句两种方法实现。 【注意】:if-else嵌套使用时,注意else子句总是与其最近的if配对;对数据划分区间时,注意关系和逻辑表达式的正确书写。特别注意if-else与switch的区别与联系,switch特别适合某个整数或字符型表达式的值与一组常量匹配的情况。 2、输入一个数,判断是否是3或7的倍数。【提示】:可以分为四种情况输出:(1)是3的倍数,但不是7的倍数;(2)不是3的倍数,是7的倍数;(3)是3的倍数,也是7的倍数;(4)既不是3的倍数,也不是7的倍数;3、范例:输入若干字符,统计其中数字字符,白字符和其他字符的个数,输入EOF结束。【提示】:要统计若干字符,需要循环反复输入,读入数据后用switch语句判断字符的种类;要统计三种字符数,需定义三个用于计数的变量nDigit,nWhite,nOther并首先置0;读入字符用cin.get()函数,在这里,用while循环比较合适,白字符指空格键,tab键和回车键。EOF表示End of File,其值为1,从键盘输入(ctrl+z)即可。【程序】: #include void main() char c; int nDigit, nWhite, nOther; nDigit=nWhite=nOther=0; c=cin.get(); while(c) case 0:case 1:case2: case3: case4: case 5:case 6:case7: case8: case9: nDigit+; break;case :case n:caset: nWhite+; break;default: nOther+;break; c=cin.ger(): /读入下一个字符cout”Digits=”tnDigitn;cout”White space=”tnWhiten;cout”Other Chars=”tnOthern;return【思考题】:(1)如果要分别统计数字0-9各数字出现的次数,怎样才能有效地实现?(2)如果要统计输入的一段文字中出现的行数、单词数和字符数,又如何有效实现?(3)本例采用的是什么算法?4、约瑟夫(Josephus)问题:n个人围坐成一圈,从1开始顺序编号;游戏开始,从第一个人开始由1到m循环报数,报到m的人退出圈外,问最后留下的那个人原来的序号。【提示】本题首先要定义一个数组,其元素个数为n。n定义为常变量,以便定义数组。数组元素的值标识该人是否出局,1在圈内,0出局。值为0的元素不参加报数,可用整数k做计数器,采用倒计数,记录留下的人数。【注意】:数组是线性排列的,而人是围成圈的。5、用迭代法编程求,求平方根的公式为,要求前后两次求出的x的差的绝对值小于107。【提示】:迭代法的特点是数列的前后项之间存在固定的关系。要求目标值,须从一个近似值出发,利用迭代公式反复计算反复比较,直到目标值符合要求。本题中,迭代公式为:,我们取a/2为平方根的近似值,利用迭代公式计算,直到。在这里, ,fabs为求绝对值的函数。三、实验原理、方法和手段总体思想:面向对象程序设计的基础是结构化程序设计,有必要复习流程控制语句的使用,及其构成程序的控制流程。四、实验组织运行要求本实验采用“以集中授课,学生自主训练为主的开放模式组织教学”。五、实验条件微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境;Microsoft Visual Studio 6.0集成开发环境的MSDN。六、实验步骤参见程序设计基础C试验指导与课程设计第2.3 实验步骤。七、思考题(1) 在选择语句中,何时使用ifelse语句,何时使用switch语句?(2) 在switch语句中,何时可以省略break语句?八、实验报告(1) 预习实验指导书程序设计基础C试验指导与课程设计的实验2;(2) 做好实验记录;(3) 按照实验报告格式(附件1)要求填写实验内容,并提实验报告。实验03:函数实验学时:4实验类型:验证、设计实验要求:必修一、实验目的函数是C+程序的基本组成模块。通过本实验的学习,使学生:1、熟练函数的定义与调用;函数参数的传递,形参、实参的关系,函数原型;2、掌握函数的嵌套调用、递归调用和变量存储类别和作用域;3、了解内联函数、重载函数、带缺省参数函数的定义及使用;二、实验内容1、将实验02中题5改为函数实现,写一个用迭代法求平方根的函数。【提示】:写一个通用的求平方根的函数,参数(行参)为待求根的数,返回值为该数的平方根。由于平方根数不可能为负,因此在主调函数中,设置一个判断输入数正负的操作,为正则用该数(实参)调用求平方根函数,为负输出错误信息。2、全局变量、局部变量和静态局部变量的应用。分析并写出下列程序的执行结果,然后输入计算机执行,比较分析结果与执行结果。include int a=300, b=400, c=500; void funa(int c) static int a=5, a+=c; coutacn; void funb ( int a) a=b; coutan; void func () int c=0; coutabcn; :c-=100; void main() funa(a); funb(b); funa(b); func();coutabcn; 3、设计一个简单的计算器程序,从键盘输入“3+5”这样的表达式,程序读入数据和运算符,调用Calculate函数,根据运算符进行+,-,*,/四则运算。【要求】:能反复执行这一过程,直到用户输入符号作为结束符。【提示】:函数原型已给出如下: double add(double, double); /+ double minus(double, double); /-double multi(double, double); /*double div(double, double); /double Calculate(double, double, char); /运算符作为字符数据读入4、设计一个求两个数最大公约数的通用函数,算法不限,要求能反复输入数据并输出其最大公约数。【提示】:可用枚举法,从两数中的小者开始试,逐步减小,直到找到最大公约数。【注意】:在函数内定义局部变量时,变量名不应与函数名同名,在A行处,不应定义变量名为com,在B处,不应为fac;还有一种常见错误如下: long fac (int i) if(i=0|i=1) fac(i)=1; else fac(i)=i*fac(i-1); return fac(i); 【思考】:编译这样的程序,会出现“Left_value requried”的错误,这是为什么?5、用欧几里德算法计算两个数的最大公约数。【要求】:分别用递推(while循环实现)和递推两种方法实现。6、定义递归函数实现下列Ackman函数,其中m、n为正整数。设计程序求Acm(2,1),Acm(3,2)。7、定义内联函数,判断一个字符是否为数字字符。8、设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。两个实数求余定义为实数四舍五入取整后相除的余数。三、实验原理、方法和手段总体思想:一个较大的程序一般分为若干个程序模块,每个模块用来实现一个特定的功能。所有的高级语言中都有子程序的概念。在C/C+语言中,子程序都是由函数来实现的。在本章实验中,首先复习函数的使用和理解函数的调用形式;理解函数实参和形参的对应关系;第三、掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。第二、重点理解掌握重载函数、内联函数和带缺省默认参数的函数的使用方式和系统调用机制的不同。四、实验组织运行要求本实验采用“以集中授课,学生自主训练为主的开放模式组织教学”。五、实验条件微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境;Microsoft Visual Studio 6.0集成开发环境的MSDN。六、实验步骤参见程序设计基础C试验指导与课程设计第4.3 实验步骤。七、思考题 1、求组合数【提示】:求组合数要用到求阶乘,将求阶乘定义为一个函数,在求组合数的函数中嵌套调用阶乘函数。由于,求阶乘是一个典型的递归算法,在此递归方法实现。includelong com(int, int), fac(int); /原型声明void main() int m,n; cout”Please input two numbers m, n(mmn;if(m=n) cout”C(m,n)=”com(m,n)endl;else cout”Input Errorn”;return;long com(int i, int j) long cmb; /att: A cmb=fac(j)/fac(i)*fac(j-i); /在com函数内嵌套调用fac函数 return cmb; long fac(int i) long fcl; if(i=0|i=1) fcl=1; else fac=i*fac(i-1); return fcl;* 这里因阶乘极易溢出,请考虑修改。可用:。2、编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其内切圆、内接等腰三角形和等腰梯形面积。【要求】:采用重载函数实现。【提示】:函数原型如下: double area(double radius=0); / 圆面积,参数为半径,缺省参数0,表示点面积double area(double a, double b);/ 计算矩形面积,参数为长和宽double area(double a, double b, double h);/ 计算梯形面积,参数为两底和高double area(double a, double b, double c, int);/ 三角形,参数为三边长,int型参数起表示作用,以区别于梯形,不参加计算。3、建立一个头文件area.h,在其中定义两个面积函数area(),分别用来计算半径为r的圆的面积和边长为a和b的矩形面积。另外建立一个实现文件area.cpp,在其中定义主函数。通过包含area.h,输入数据并输出圆和矩形的面积。八、实验报告(1) 预习实验指导书程序设计基础C试验指导与课程设计的实验4;(2) 做好实验记录;(3) 按照实验报告格式(附件1)要求填写实验内容,并提交实验报告。九、其它说明每次实验前,实验指导书都会预先发放,请同学们先预习实验,特别是实验涉及的原理。实验要求及时完成并上交实验报告,鼓励提前完成必做实验,并尽量多做实验题目。遵守学生实验室管理的相关规定及安全事项。实验04:类与对象实验学时:10实验类型:验证、设计实验要求:必修一、实验目的类是C+扩展数据类型,可以封装不同类型的数据成员和函数成员,类是面向对象程序设计的基础。本次实验内容包括面向对象的基本概念、构造函数与析构函数,从实际问题抽象出类等,通过实验要求:1、掌握面向对象的基本概念,类的定义方法;2、掌握类成员的访问权限及访问类成员的方法;3、掌握内联函数;4、掌握引用概念及应用,引用作为函数参数;5、掌握构造函数与析构函数的意义及使用方法。6、掌握友员函数、友员类的使用,以及运算符重载为成员函数和友元函数的方法。二、实验内容1、【范例】 设计一个程序,定义一个矩形类,包括数据成员和函数成员。【提示】要求有构造函数、析构函数,完成赋值、修改、显示等功能的接口,并编写main函数测试,要求用一个对象初始化另一个对象。【分析】 要确定一个矩形(四边都是水平或垂直方向,不能倾斜),只要确定其左上角和右下角的x 和y 坐标即可,因此应包括四个数据成员,eft,right,top,bottom,即左右上下四个边界值。由构造函数对数据成员赋值,赋值函数完成未初始化的矩形赋值,修改函数可以修改各数据成员,显示函数则画出该矩形。class Rectangle int left, top ;int right, bottom;public:Rectangle(int l=0, int t=0, int r=0, int b=0); Rectangle(); /析构函数,在此函数体为空void Assign(int l, int t, int r, int b);void SetLeft(int t) left = t; / 以下四个函数皆为内联成员函数void SetRight( int t ) right = t;void SetTop( int t ) top = t;void SetBottom( int t ) bottom = t;void Show();void Draw( CDC* pDC);/ 将上述内容保存为rect.h#include #include “rect.h”/ 构造函数,带缺省参数,缺省值为全0,在声明中指定Rectangle:Rectangle(int l , int t, int r, int b) left = l; top = t;right = r; bottom = b;void Rectangle:Assign(int l, int t, int r, int b)left = l; top = t;right = r; bottom = b;void Rectangle:Show()cout”left-top point is (”left”,”top”)”n;cout”right-bottom point is (”right”,”bottom”)”Rectangle(left, top, right, bottom );/ 将上述内容保存为rect.cpp#include #include “rect.h”void main()Rectangle rect;rect.Show();rect.Assign(100,200,300,400);rect.Show();Rectangle rect1(0,0,200,200);rect1.Show();Rectangle rect2(rect1);rect2.Show();/ 将上述内容保存为Exp.cpp【提示】Draw成员函数需要一个CDC指针参数,CDC是MFC中的设备上下文类,控制程序的图形输出,其成员函数Rectangle输出一个矩形,在这里不作要求。运行程序是可以去掉这一函数。【要求】 创建工程,录入上述源程序,以多文件组织保存工程,建立可执行文件并执行,观察结果;哪些函数是内联的?为什么?其他函数怎样说明为内联的? 修改上述程序,以键盘输入的方式输入矩形的坐标值,修改后再执行。2、构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月请用枚举类型,并完成测试。(包括用成员函数和用普通函数)3、定义一个圆类(Circle),属性为半径(radius)和圆周长、面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和复制构造函数。4、为复数类(Complex)增加重载的运算符-、-=、*=和/=。设+为实部和虚部各自增一,亦请重载前置与后置+运算符。分别使用成员函数和友元函数各做一遍。并测试。解:注意后+,返回的是原值,但实部和虚部已各自增一,所以要先保留原值,再+。这里是使用成员函数。5、内置数据类型可以进行类型强制转换,类也可以进行同样的转换,这是通过定义类型转换函数实现的。它只能是类的成员函数,不能是友元函数。格式为: 类名:operator 转换后的数据类型( ) 如:operator float()是转换为浮点数的成员函数。使用时的格式为:float(对象名); 或 (float) 对象名; 定义人民币类,数据成员包括:圆、角、分,均为整型。类型转换函数将人民币类强制转换为浮点数,以圆为单位。并编程进行检验。三、实验原理、方法和手段设计思想:类和对象是面向对象程序设计的第一重要概念。因此,首先要掌握类和对象的定义格式;理解构造函数和析构函数的作用和系统调用机制;掌握友元函数、普通成员函数和普通函数之间的区别。四、实验组织运行要求本实验采用“以集中授课,学生自主训练为主的开放模式组织教学”。五、实验条件微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境;Microsoft Visual Studio 6.0集成开发环境的MSDN。六、实验步骤参见程序设计基础C试验指导与课程设计第7.3 实验步骤。七、思考题1、基础题:(1)改善复数类,增加重载的运算符:-、-=、*=和/=,实现完整的复数的加减乘除运算,定义+为辐角不变而模加1,重载前后+(+对普通的复数表达方式a+ib 为:a+a/sqrt(a*a+b*b),b+b/sqrt(a*a+b*b))。并定义main 函数检测之。要求分别重载为成员函数和友元函数。(2)在主调函数中,能否用:“对象名.私有成员名”这样的方式来访问对象的私有成员?为什么?在类的成员函数中可以吗?(3)在类的定义中是否须有构造函数?构造函数可以重载吗?(4)构造函数与析构函数是否需要一一对应?(5)拷贝函数与应用场合是什么?(6)在静态成员函数中是否可以直接引用静态变量?可以直接引用非静态变量吗?(7)在静态成员函数中,引用非静态成员时需要通过对象吗?通过成员限定可以吗?(8)在构造函数中是否可以对类中静态的数据成员进行初始化?初始化的静态数据成员是否可以将该值保持到下一次被改变为止?2、 编写一个函数,其原型为:void Index(int a, int n, int & sub),其功能是,在大小为n的数组a中,查找某个数sub,若找到,将其下标存放在sub中,若没有找到,将-1存放在sub中,在主调函数中通过判断值来判断数组中是否有该数。【提示】:在这里,sub 是引用类型的参数,但起返回值的作用。3、一个声明为返回引用的函数,还可以用在赋值号的左边,即这种函数调用本身也是一个左值。#include int array = 2, 4, 6, 8, 10;int& index(int i);void main() index(3) = 16;for(int i=0;i5;i+) cout index(i) ;return;int& index(int i) return arrayi;【注意】由于函数index()是返回引用的类型,所以该函数调用可以作为一个左值,程序的表达式index(3)=16 将16 赋给左边的函数调用,由于该函数调用返回对 array3 的引用,所以可以将array3赋新值。该程序运行的结果将使得整型数组array 中的各元素值变为:2,4,6,16,10。【要求】修改程序实现数组中数据的反转,成为:10,8,6,4,2。八、实验报告(1) 预习实验指导书程序设计基础C试验指导与课程设计的实验7;(2) 做好实验记录;(3) 按照实验报告格式(附件1)要求填写实验内容,并提交实验报告。九、其它说明每次实验前,实验指导书都会预先发放,请同学们先预习实验,特别是实验涉及的原理。实验要求及时完成并上交实验报告,鼓励提前完成必做实验,并尽量多做实验题目。遵守学生实验室管理的相关规定及安全事项。实验05:数组与指针实验学时:3实验类型:验证、设计实验要求:必修一、实验目的指针是C+最灵活最有特色的部分,没有熟练掌握指针,则不能说学会了C+。数组在处理同类型的多个数据问题时非常有效,是C+的重要数据类型。数组与指针之间有着密切关系。通过实践要求掌握:1、 指针的定义和使用;2、 指针与数组的相互关系;3、 数组或指针作为函数参数的函数定义及调用方法;二、实验内容1、完善自定义字符串类mystring,函数包括:构造函数、拷贝构造函数、析构函数,并重载运算符 ,=(分别用mystring和C字符串拷贝),+(strcat),+=,=(strcmp)。【提示】:此例既是对第4章的复习也是一个提高。拷贝构造函数的应用请参阅4.4.2节末尾两项说明,本例形参使用引用,仅在返回时调用了拷贝构造函数。运算符的重载请参阅4.5节。【选做题】:*1、编写程序:要求用sizeof 运算符计算C+中char*, short*, int*, long*, float*,double*等指针类型所占字节数。*2、范例:判断用户输入的字符串是否为回文,所谓回文是指顺读和反读都一样的串,例如串 12321、madam。【程序】#include #include const SIZE = 100;void main()char carraySIZE;int i,len, is_palindrome = 1;cout Please input a striing .n;cin.get(carray, SIZE);len = strlen(carray);for (i=0;ilen/2;i+)if (carrayi != carraylen-1-i) is_palindrome = 0;break;if (is_palindrome) coutThe string is a palindromen;else coutThe string isnt a palindromen;return;【提示】重新定义回文为:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都一样的词或短语,下面是两个回文的例子:Madam, Im adam Golf, No Sir, prefer prison flog!【要求】编写一个程序,判断输入的字符串是否为回文。并使用指针形式访问数组元素。*3. 分别编写实现下列字符串处理的函数,先用指针,然后用数组作为参数重编:1) char* trim(char *s)删除字符串 s 的尾部空格2) char* leftstring(char *s1, char *s2, int n)得到指定字符串 s1 中前 n 个字符的子串 s23) int index(char *s1, char *s2)检查字符串s2 是否为字符串s1 的子串,根据查找结果返回s2 在s1 中的开始位置,不成功返回 -1*4、使用递归和非递归两种方法编写函数itoa(int n, char s,int b),将整数n 转换为以b 为基(例如以16 为基的十六进制)的数字字符串。*5、按一定的规则可以将一个字符串经加密转换为一个新的串。【提示】例如加密的简单方法是当为ay的小写字母时用后一个字母代替前一个字母,其中z变换为a,其他字符时不变。例如:原串为 This is a secret code! 加密后的串为 Tijt jt b tfdsfu dpef! 编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。自己另设计一个带密钥的加密算法,例如密钥是一个常数,字符串加密的方法是将每个字符的ASCII 码值加上该常数,然后对 128 求模。【要求】编写程序,以密钥将输入的字符串加密输出,再以相同的密钥,将加密字符串解密输出。三、实验原理、方法和手段总体思想:指针是c语言中的精华部分,深刻理解指针的知识,才能提高编程技巧,使得程序效率高。因此,将面向对象程序设计的类和对象概念加入到字符串操作和指针操作中。四、实验组织运行要求本实验采用“以集中授课,学生自主训练为主的开放模式组织教学”。五、实验条件微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境;Microsoft Visual Studio 6.0集成开发环境的MSDN。六、实验步骤参见程序设计基础C试验指导与课程设计的第3.3 实验步骤和第5.3 实验步骤。七、思考题(1)求一个 34 矩阵中的最大元素,将求矩阵中的最大元素的过程定义为一个函数。函数的第一个参数是矩阵本身,第二个参数是第一维的大小。这种方法的优点是使函数具有通用性,即无论一个矩阵的第一维是多大,只要该矩阵的第二维是 4 个元素,都可用该函数求最大元素;也可用该函数求一个矩阵开始几行中的最大元素。#include int max_value(int array4, int k);void main()int a34 = 1,3,6,7,2,4,6,8,15,17,34,12;cout max_value(a,3)n;return;int max_value(int array4, int n)int i,j, max = array00;for(i = 0; i n; i+)for(j = 0; j max)max = arrayij;return (max);【注意】C+/C 语言的这种处理数组参数地址的方法,缺点在于即使给出了最高维的大小,编译程序也不会检查数组传递中最高维的大小的潜在错误。【要求】读懂上述程序段,分别将函数参数改用二级指针和一级指针完成。(2)用字符数组存储字符串与用指针存储有什么不同?请举例说明。(3)如何正确使用C/C+中的字符串处理库函数。八、实验报告(1) 预习实验指导书程序设计基础C试验指导与课程设计的实验3和实验5;(2) 做好实验记录;(3) 按照实验报告格式(附件1)要求填写实验内容,并提交实验报告。九、其它说明每次实验前,实验指导书都会预先发放,请同学们先预习实验,特别是实验涉及的原理。实验要求及时完成并上交实验报告,鼓励提前完成必做实验,并尽量多做实验题目。遵守学生实验室管理的相关规定及安全事项。实验06:模板与类参数实验学时:6实验类型:验证、设计实验要求:必修一、实验目的算法,尤其是通用的算法是程序设计的重点,摸板是建立通用的与数据类型无关的算法的重要手段,在学习与数据结构相关的链表、排序与查找等知识和算法的时候,应逐步熟悉函数摸板和类摸板的编程方法,实现程序的通用性。二、实验内容1、 使用自定义字符串类,编写求数组元素中最大值的函数摸板。2、 采用函数摸板实现希尔排序。【提示】:此例既是对第5个实验的复习和提高。自定义字符串类应注意要有拷贝构造函数和重载“=”和比较运算符。【选做题】:1设计辛普生法求函数的定积分的类模板,可求任一函数的定积分。在梯形法中是用直线来代替曲边梯形的曲边,在辛普生法中是用抛物线来代替,得出的公式为(区间必须为偶数n 个相等区间)。以模板参数T 来引入被积函数类,由该参数调用欲求定积分的函数。范例:#include #include class F1 public:double fun(double x)return (1+x+2*x*x);class F2 public:double fun(double x)return (1+x+2*x*x+3*x*x*x);class F3 public:double fun(double x)return (1+x+2*x*x+3*x*x*x+4*x*x*x*x);templateclass Integerdouble a,b,step,result;int n;/分区数量T cf;/被积函数public:Integer(double aa=0, double bb=0, int nn=100)a=aa; b=bb; n=nn;integerate();void putlimits(double aa=0, double bb=0, int nn=100)/修改上下限和分区数a=aa; b=bb; n=nn;void integerate();void print()cout定积分值为:resultendl;templatevoid Integer:integerate()/辛普生法求函数的定积分int i;step=(b-a)/n;result=cf.fun(a)+cf.fun(b);for (i=1;in;i+=2) result+=4*cf.fun(a+i*step);for (i=2;in;i+=2) result+=2*cf.fun(a+i*step);result*=step/3;void main()Integer integer1(0.0,3.0,1000);integer1.print();Integer integer2(0.0,3.0,1000);integer2.print();Integer integer3(0.0,3.0,1000);integer3.print();要求将积分上下限a、b 和分区数量n,放入被积函数类的数据域,重编辛普生法求函数的定积分的类模板。这是函数对象通用的方法。三、实验原理、方法和手段 函数摸板与类摸板的定义格式:template class 类名 /类定义体; /再次指出分号不可少template 返回类型 类名:成员函数名1(形参表) ;/成员函数定义体template 返回类型 类名:成员函数名n(形参表) ;/成员函数n定义体在程序运行过程中,摸板参数会被各种内置的类型或用户定义类型所置换。四、实验组织运行要求本实验采用“以集中上机,学生自主训练,教师指导答疑“的方式进行。五、实验条件微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境;Microsoft Visual Studio 6.0集成开发环境的MSDN。六、实验步骤以第一题为例,可按如下步骤进行:1 定义字符串类,应注意要构造函数、拷贝构造函数和重载“=”和比较运算符等内容,还要有输出成员函数。2 在字符串类中定义并实现求最大值的成员函数摸板。3 在main函数中验证。七、思考题如何尽可能完善自定义字符串类。八、实验报告1 预习实验指导书程序设计基础C试验指导与课程设计的实验10和c+程序设计实践教程(吴乃陵,李海文 编著,高等教育出版社,2006)中的实验11。2 做好实验记录;3 按照实验报告格式(附件1)要求填写实验内容,并提交实验报告。九、其它说明每次实验前,实验指导书都会预先发放,请同学们先预习实验,特别是实验涉及的原理。实验要求及时完成并上交实验报告,鼓励提前完成必做实验,并尽量多做实验题目。遵守学生实验室管理的相关规定及安全事项。实验07:动态内存分配实验学时:6实验类型:验证、设计实验要求:必修一、实验目的1通过实验巩固掌握动态内存分配、模扳函数和模扳类、友员函数和友员类的概念2理解堆内存分配、堆与拷贝构造函数、深拷贝与浅拷贝;3掌握链表在内存中的分配,链表的基本操作与使用;二、实验内容1给单链表摸板增加两个成员函数:删除链表中所有数据域为指定值的结点和取出链表中第K个元素。2试为单链表类模扳设计一个将链表逆转的成员函数。要求不删除原结点,也不另建一个链表来取代,而是通过改变指针域的链接方向来逆转链表。3范例:下面是afxteml.h 中定义的CArray 类模板。/ CArraytemplateclass CArray : public CObjectpublic:/ ConstructionCArray();/ Attributesint GetSize() const; /取数组中实际元素数int GetUpperBound() const;void SetSize(int nNewSize, int nGrowBy = -1);/ Operations/ Clean upvoid FreeExtra();void RemoveAll();/ Accessing elementsTYPE GetAt(int nIndex) const;/取指定位置元素void SetAt(int nIndex, ARG_TYPE newElement);TYPE& ElementAt(int nIndex);/ Direct Access to the element data (may return NULL)const TYPE* GetData() const;TYPE* GetData();/ Potentially growing the arrayvoid SetAtGrow(int nIndex, ARG_TYPE newElement);int Add(ARG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古巴彦淖尔市第五中学2026届九年级数学第一学期期末检测试题含解析
- 2025员工终止合同解除劳动合同协议范文
- 江苏省大丰区万盈镇沈灶初级中学2026届七年级数学第一学期期末质量检测试题含解析
- 江苏省无锡市桃溪中学2026届数学八年级第一学期期末考试模拟试题含解析
- 2026届江苏省苏州实验初级中学七年级数学第一学期期末统考试题含解析
- 江苏省南京市六校2026届八年级数学第一学期期末调研模拟试题含解析
- 企业内训资源池发展趋势预测报告
- 江苏省常熟市第一中学2026届数学八上期末考试模拟试题含解析
- 中国银行梅州市大埔县2025秋招笔试英语阅读选词题专练30题及答案
- 中国银行运城市河津市2025秋招英文面试20问及高分答案
- 中国食物成分表2018年(标准版)第6版
- 疑问句(课件)六年下册英语人教PEP版
- 介绍家乡恩施
- 视力残疾康复服务规范
- 【宜家家居物流运作问题与优化建议探析11000字(论文)】
- HG T 3690-2022 工业用钢骨架聚乙烯塑料复合管
- 财务报表分析方法与技巧
- 医院医保科绩效考核标准
- 《直播营销与运营》PPT商品选择与规划
- 贵阳区域分析
- 机电设备调试协议书
评论
0/150
提交评论