《C++程序设计案例教程全书教学实验合集(高职).pdf》由会员分享,可在线阅读,更多相关《C++程序设计案例教程全书教学实验合集(高职).pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+程序设计案例教程全书教学实验合集实验1 C+概论实验目的I.熟悉V C+的集成开发环境,学习运行一个C+程序的步骤。2.了解几种运算符的使用规则。3.掌握变量命名规则,学会变量的定义和使用。二.实验内容1.上机实验题一(1)使用Visu al C+6.0对一个C+程序进行编辑、编译、连接和运行。#incl u de v oid m ain()cou t w T a m a st u dent v v endl;(2)上机要求编辑、编译、连接和运行一个程序输出“HeU o,C+!”。(编辑调试过程见前面所述)(3)写出实验报告。2.上机实验题二编写程序完成变量x和变量y值的交换,调试程序并观
2、察运行结果。分析要交换变量x和变量y的值,需使用临时变量z才能在进行。一个完整的参考程序如下:#incl u dev oid m ain()int x,y,z;/Acou t x,y=;c i n x y;cou t 输入的 x=MxM y=y endl;z=x;x=y;y=z;c o u t ”输出的 X=MX M y=My endl;)上机要求在键盘上分别按如下格式输入两组数据:5,3(回车)5 3 (回车)观察程序运行结果。将程序中的x,y,z命名为au t o,break,case分析程序出错原因。只将程序A行x改为大写X,运行程序观察程序运行结果。修改程序用条件运算符输出两个数中的较
3、大数。写出实验报告.3.上机实验题三(x +l)(y 1)编程序输入x、y和z的值,计算的值。x+Z分析表达式的值不一定为整数,故程序中变量的类型应采用实型。X+Z一个完整的参考程序如下:#incl u devoid main()float x,y,z,e,f,w;coutx,y,z=endl;c in x y z;e=(x+l)*(y-l);f=x+y;w=e/f;coutw=nw endl;/B/C/D上机要求输入x=5.4,y=3.1,z=2.7,观察程序运行结果。将程序中A 行改为“intx,y,z,e,f,w;,输入x=5.4,y=3.1,z=2.7,观察程序运行结果。将程序中A 行
4、改为“floatx,y,z,w;”,B、C、D 行改为“w=(x+l)*(yl)/x+y;”,观察程序运行结果。写出实验报告。4.上机实验题四编写程序。从键盘输入一个三位正整数,输出其逆转数。例如:输 入 861,输出为168o分析输入的三位数为整数,变量类型按整型进行处理。可采用求余数的方法计算各位上的数,然后逆序输出。一个完整的参考程序如下:#incl udevoid main()int n,i,j,k;coutv”输入一个三位正整数n:H;cinn;i=n%10;n=(n-i)/10;j=n%10;n=(n-j)/10;k=n;/i存放个位数去掉个位数/j存放十位数去掉十位数/k存放百位
5、数n=i*100+j*10+k;cout 逆转数为:n en d l;)上机要求修改程序使其先取百位数,再取十位数,最后取个位数。写出实验报告。5.上机实验题五给出下列程序的运行结果分析本例测试了不同数据类型之间的数据转换。#includevoid main()(int a=32,b;double c=2.7,d;char e-D,f;b=a+c;/Ad=a+c;f=a+e;coutb=bendl;coutd=dendl;coutnf=f en d l;/Bcoutb+d+fendl;/C)上机要求修改程序A 行,对 b 的输出值四舍五入。修改程序B 行,按整型值输出f。分析C 行数据的值的类
6、型.注意:本例 A 行提示如下警告:“conversion from double to int,possible loss of data.“属于正常。三.实验要求1.1.结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2.2.整理上机步骤,总结经验和体会。完成实验报告和上交源程序。实验2简单数据类型及运算实验目的1.1.熟悉和理解C+语言中的类型简单数据(整型、实型、字符型)、运算、表达式2.2.了解基本数据类型的字节宽度和范围表示3.3.能利用学习的数据类型,编制简单的C+程序4.4.理解并掌握程序的分支、循环结构5.5.初步学习调试方法二.实验内容1.基本数据类型的长度编
7、写一个程序,输出基本数据类型char,short,int,long,float,double的数据类型的长度。2.输入并运行下列程序(1)#includevoid main()int x=6,y;coutH x=u x e n d l;y=+x;coutnx=n x ux=6;y=x+;coutHx=H x x=6;y=x;coutnx=,x x=6;y=-x;coutux=n x ”y=u y en d l;y=H y en d l;y=n y e n d l;y=n y en d l;(2)#includevoid main()int a=20,b=6;a+=a;coutaendl;a=2
8、0;a-=a;coutaendl;a=20;a*=a;coutaendl;a=20;a/=b;coutaendl;a=20;a%=b;coutaendl;a=20;a=a-b;coutaendl;a=10;b=4;a+=a*=a-=a/b;coutaendl;)(3)#includevoid main()int a=3,b=4,c=5,x,y;x=(a+bc&b=c);coutxendl;x=(a|b+c&b-c);coutxendl;x=!(ab&!c|l);coutxendl;x=(!(a+b)+c-l&b+c/2);coutxendl;!(x=a)&(y=b)&0;coutHx=y=u
9、y en d l;)(4)#includevo id m ain()in t a=3,b=4,c=5,m ax;m ax=(a b)?a:b;co ut m ax en dl;m ax=b c?a:a c?a:b;co utnm ax=m ax en dl;3.编写一个将华氏温度转换为摄氏温度的程序,转换公式为C=(5/9)(F-3 2),要求输出华氏温度和摄氏温度的对应值。三.实验要求1 .记录系统上运行的C+编译器中每个基本数据类型的长度。2 .分析和写出实验2的运行结果。3 .实验3 要给出测试数据和实验结果。4 .写出上机实验体会和实验报告。实验3控制结构实验目的1.1.理解并掌握程序
10、的顺序结构程序设计2.2.理解并掌握程序的分支结构(if语句、switch语句)程序设计3.3.理解并掌握程序的循环结构(fo r 语句、whil e语句、do-whil e语句)程序设计4.4.掌握循环语句的嵌套形式5.5.学习过程化程序设计方法6.6.进一步学习掌握查找与修改编译错误的方法实验内容1 .编写程序任意输入一个三位,将其反向输出。如输入1 2 3,输出3 2 1。2 .有一个函数如下:x(x 5)y=x+6 (5 =x=1 5)输入x 的值,计算出相应的y 值。3 .编写一个程序,输入年、月,打印出该年份该月的天数。4 .编程按分段统计学生成绩,输入为负数时结束。要求按9 0
11、1 0 0、8 0 8 9、7 0 7 9、6 06 9、6 0 以下五档分别统计各分数段人数(用if语句和switch语句编写程序)。5 .用 do whil e,whil e,fo r 三种循环语句求出1+3+5+.+1 0 1 的和,输出结果。6 .编程输出如下图形:*7 .输入一行字符,分别统计其中的英文大写字母,小写字母、数字字符和其他字符。三.实验要求1.1.结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2.2.整理上机步骤,总结经验和体会。3.3.完成实验报告和上交源程序。实验4数组实验目的:1 .掌握一维数组和二维数组定义的规则;2 .掌握数组的初始化方法及数组
12、元素的引用;3 .熟练掌握一维数组和二维数组的使用;4 .掌握字符数组与字符串的关系以及字符串变量的表示;5 .熟练字符串处理函数的应用。二.实验内容1.1.编写一个程序,将 2 0 以内的偶数赋给数组a,然后输出此数组各元素。2.2.先定义一个含有3 0 个整型元素的数组,依次赋予从2开始的偶数,然后按顺序每五个数的平均值放在另一个数组中,并要求按每行6个数输出结果。3.3.定义一个二维数组存储五位学生五科考试的成绩,编写程序分别取出二维数组里的元素值,经过累加之后列出总成绩,计算并输出每个同学的平均成绩,格式如下:第 1 个学生的总分为:*第 2个学生的总分为:*第 3个学生的总分为:*第
13、 4个学生的总分为:*第 5个学生的总分为:*平均分为:*平均分为:*平均分为:*平均分为:*平均分为:*4.4.输入两个字符串,比较这两个字符串是否相同,并输出比较的结果。5.5.编写一个程序,由用户输入一个含有5 个单词的英文句子,按照用户的要求输出句中的第I 个单词。三.实验要求1 .结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2 .整理上机步骤,总结经验和体会。3 .完成实验报告和上交程序。实验5函数与编译处理实验目的1 .掌握函数声明、定义和使用的方法;2 .掌握形式参数与实在参数之间的对应关系。3 .掌握函数调用时,形参、实参之间的“值传递”和“地址传递”的区别。
14、4 .掌握函数递归调用的方法;5 .掌握全局变量、局部变量、静态变量的使用方法;6 .掌握文件包含的使用方法;二.实验内容1.1.定义两个函数s w a p l 和 s w a p 2,目的是实现两个整数的次序交换,其中s w a p l 的参数是传递值参数,s w a p 2 的参数是传址参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=l,y=2调用s w a p l 后的结果:x=l y=2调用s w a p 2 后的结果:x=2 y=l2.2.编写一个函数,用来计算从键盘上输入的整数的阶乘。3.3.编写函数判断一个数是否是素数,在主程序中实现输入、输出。4.4.编写一个
15、程序,设计一个函数可以计算并返回输入的4个数的平均值。5.5.给定某个年、月、日的值,例如,2 0 0 5 年 7月 1 1 日,计算出这一天属于该年的第几天,要求写出计算闺年的函数和计算日期的函数。三.实验要求1.结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3 .完成实验报告和上交程序。实验6指针实验目的1 .熟练掌握指针、地址、指针类型、v o i d指针、空指针等概念;2 .熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式;3 .会使用数组的指针和指向的指针变量;4 .会使用字符串的指针和指向字符串的指针变量5
16、 .学会使用指向函数的指针变量;6 .了解指针与链表关系。二.实验内容1 .用调用函数,实现从两个数为输出较大者(要求用指针变量传递参数值)。2 .编写一个函数f,将传入此函数的直角坐标值转换为极坐标值,并返回主调函数中。求极坐标的公式是:c=v/q=a r c t a n(y/x)若要将两值返回主调函数,有多种方式可以完成,请试之:(1)两值均以指针形参带回(2)由指针形参带回一个值,函数值返回另一个值(3)两值均以引用形参返回(提示:程序中可以使用C库函数s p r t、pow及a t a n,它们的头文件为s t d li b.h)3 .使用指针变量对一字符串按照字母,空格、数字和其他字
17、符进行分类统计。(提示读一行字符包括空格用函数c i n.g e t li n e(c h,8 1)o4 .用指针变量设计一通用函数,该函数查找实型数组中最大和最小元素并输出相应元素和下标。三.实验要求1 .结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3 .完成实验报告和上交程序。实验7 结构体实验目的1 .掌握结构的概念和结构类型的定义;2.掌握结构变量的定义和初始化;3 .掌握结构体类型的概念和应用;4 .掌握结构成员的访问、结构赋值的含义以及结构与指针、函数的关系。-.实验内容1.有5个学生,每个学生的数据包括学号、姓名、三门课成绩,从
18、键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分和学生的数据(包括学号、姓名、三门课成绩、平均分)。2.将上题按照平均分由大到小排序并按大到小排序后输出每位学生的学号、姓名、三门课成绩和平均分。3 .建立一个链表,每个结点包括:学号、姓名和年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删除,否则将此结点插入在表最后。三.实验要求1.结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验报告和上交程序。实验8类和对象一.实验目的1.1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2
19、.2.掌握类对象的定义;3.3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4.4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数;5.5.掌握友元函数的含义,友元函数和成员函数的区别。二.实验内容1 .定义一个圆类,计算圆的面积和周长。要求:分别用成员函数和友元函数来求圆的面积和周长。2.定义一个学生类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:(1)(1)使用成员函数实现对输出的输入、输出(2)(2)使用构造函数和析构函
20、数实现对数据的输入、输出。3 .定义日期类型D a t e。要求有以下面成员:(1)(1)可以设置日期;(2)(2)日期加一天操作;(3)(3)昆明市 输入函数,输入格式为“X X X X年X X月X X日”。三.实验要求1.1.写出程序,并调试程序,要给出测试数据和实验结果。2.2.整理上机步骤,总结经验和体会。3.3.完成实验报告和上交程序.实验9继承与派生类一.实验目的1.1.理解继承的含义,掌握派生类的定义方法和实现;2.2.理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;3.3.理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以
21、便派生类成员可以访问基类的部分非公开的成员;4.4.理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。二.实验内容1.编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。2.编写一个程序计算出球、圆柱和圆锥的表面积和体积。要求:(1)(1)定义一个基类圆,至少含有一个数据成员半径;(2)(2)定义基类的派生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函
22、数。(3)(3)定义主函数,求球、圆柱、圆锥的和体积。三.实验要求1.1.写出程序,并调试程序,要给出测试数据和实验结果。2.2.整理上机步骤,总结经验和体会。3.3.完成实验报告和上交程序实验1 0多态性实验目的1.掌握用成员函数重载运算符的方法2.掌握用友元函数重载运算符的方法3.理解并掌握利用虚函数实现动态多态性和编写通用程序的方法二.实验内容与步骤1.上机实验题一定义一个复数类,通过重载运算符:*,/,直接实现二个复数之间的乘除运算。编写一个完整的程序,测试重教运算符的正确性。要求乘法“*”用友元函数实现重载,除 法 用 成员函数实现重载。分析两复数相乘的计算公式为:(a+b i)*(
23、c+d i)=(ac-bd)+(ad+bc)i两复数相除的计算公式为:(a+b i)/(c+d i)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d)i复数类及运算符重载函数可定义为:class Complex float Real,Image;public:Complex(float r=0,float i=0)Real=r;Image=i;void Show()cout Real=,R eal t,Im age=Im age,n;friend Complex operator(Complex&,Complex&);Complex operator/(Complex&)
24、;/重载运算符+);Complex operator*(Complex&c 1,Complex&c2)Complex t;t.Real=cl.Real*c2.Real-cl.Image*c2.Image;t.Image=cl.Image*c2.Real+cl.Real*c2.Image;return t;)Complex Complex:operator/(Complex&c)Complex t;t.Real=(Real*c.Real+Image*c.Image)/(c.Real*c.Real+c.Image*c.Image);t.Image=(Image*c.Real-Real*c.Imag
25、e)/(c.Real*c.Real+c.Image*c.Image);return t;上机要求增加重载复数的加法和减法运算符的功能,实现两个复数的加法,一个复数与一个实数的加法;两个复数的减法,一个复数与一个实数的减法。用成员函数实现加法运算符的重载,用友元函数实现减法运算符的重载。自己设计主函数,完成程序的调试工作。写出实验报告02.上机实验题二利用虚函数实现的多态性来求四种几何图形的面积之和。这四种几何图形是:三角形、矩形、正方形和圆。几何图形的类型可以通过构造函数或通过成员函数来设置。分析计算这四种儿何图的面积公式分别是:三角形的边长为W,高为H 时,则三角形的面积为W*H/2;矩形的
26、边长为W,宽为H时,则其面积为W*H;正方形的边长为S,则正方形的面积为S*S;圆的半径为R,其面积为 3.1415926*R为设置几何图形的数据并求出几何图形的面积,需要定义一个包含两个虚函数的类:class Shapepublic:virtual float Area(void)=0;求面积virtual void Setdata(float.float=0)=0;设置图形数据);因面积的计算依赖于几何图形,故在类中只能定义一个纯虚函数A rea.同理,设置几何图形数据的函数Setdata也只能定义为虚函数。把这个基类派生出其它几何图形类。如派生出的三角形类为:class Triangle
27、:public Shape float W,H;/三角形边长为W,高为Hpublic:Triangle(float w=0,float h=0)W=w;H=h;float Area(void)return W*H/2;void Setdata(float w,float h=0)W=w;H=h;);在派生类中定义了基类中两个虚函数的实现。为了实现求面积和设置数据的多态性,必须定义一个类,该类中定义一个指向基类Shape的指针数组,其元素分别指向由基类Shape派生出的不同的几何图形类,并完成求出所有几何图形面积之和,以及设置参数的函数。一个完整的参考程序如下:#include#include
28、class Shapepublic:virtual float Area(void)=0;虚函数virtual void Setdata(float,float=0)=0;虚函数);class Triangle:public Shape float W,H;三角形边长为W,高为Hpublic:Triangle(float w=0,float h=0)W=w;H=h;float Area(void)return W*H/2;定义虚函数void Setdata(float w,float h=0)W=w;H=h;定义虚函数);class Rectangle:public Shape float W
29、,H;矩形边长为W,高为Hpublic:Rectangle(float w=0,float h=0)W=w;H=h;定义虚函数W=w;H=h;/定义虚函数/正方形边长S定义虚函数 /定义虚函数圆的半径为R3.1415926*R*R;定义虚函数R=w;定义虚函数指向基类的指针数组给几何图形设置参数float Area(void)return W*H;void Setdata(float w,float h=0);class Square:public Shape float S;public:Square(float a=0)S=a;float Area(void)return S*S/2;vo
30、id Setdata(float w,float h=0)S=w;);class Circle:public Shape float R;public:Circle(float r=0)R=r;float Area(void)returnvoid Setdata(float w,float h=0);class Compute Shape*s;public:Compute()s=new Shape*4;=new Triangle。,4);=new Rectangle(6,8);=new Square(6.5);=new Circle(5.5);1Ju1J11-0123aILrLrLrlXsss
31、skSumArea(void);Compute。;void Setdata(int n,float a,float b=0)sn-Setdata(a,b););Compute:Compute。for(int i=0;i4;i+)delete sij;delete s;Ifloat Compute:SumArea(void)float sum=0;for(int i=0;iArea();/A/B 释放动态分配的存储空间通过基类指针实现多态性return sum;)void main(void)Compute a;coutH四利I几何图形的面积=”a.Sum Area()n;a.Setdata(2
32、,l 0);设置正方形的边长cout 四种几何图形的面积=va.SumArea()n;a.Setdata(O,10,12);设置三角形的边长和高cout”四种几何图形的面 R=Ha.Sum Area(),n;a.Setdata(l,2,5);设置正方形的长和宽cout四种几何图形的面积=vva.SumArea()vvn;a.Setdata(3,15.5);coutH四利 几何图形的面积=”a.Sum Area()n;)程序中A 行的Setdata函数属于函数重载,它不是虚函数。该函数中的B 行通过基类指针实现多态性。三.实验要求1.1.写出程序,并调试程序,要给出测试数据和实验结果。2.2.整
33、理上机步骤,总结经验和体会。3.3.完成实验报告和上交程序实验 1 1 C+I/O一.实验目的1.掌握文件流的打开、关闭及使用的使用方法;2.1.解文本文件流与二进制文件流在操作上的区别。二.实验内容1.上机实验题一设计一个管理图书目的简单程序,提供的基本功能包括:可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件“book.dat”中同书名的所有书显示出来。为简单起见,描述一本书的信息包括:书号,书名,出版社和作者。分析可以把描述一本书的信息定义为一个Book类,它包含必要的成员函数。把加入的新书总是加入到文件尾部,所以,以增补方式打开
34、输出文件。从文件中查找书时,总是从文件开始位置查找,以读方式打开文件。用一个循环语句实现可连续地将新书加入文件或从文件中查找指定的书名。由于是以一个Book类的实例进行文件输入输出的,所以,这文件的类型应该是二进制文件。简化的参考程序如下:#include#include#include class Book long int num;书号char bookname40;书名char publicname40;出版社char name20J;作者public:Book()num=0;bookname0=0;publicname0=0;name0=0;char*Getbookname(void)
35、return bookname;long Getnum(void)return num;void Setdata(long,char*,char*,char*);void Show(void);Book(long,char*,char*,char*););void Book:Setdata(long nu,char*bn,char*p,char*n)num=nu;strcpy(bookname,bn);strcpy(publicname,p);strcpy(name,n);1void Book:Show(void)cout”书号:v v n u m v v t V v 书名:vbookname
36、W8E 咄版社:“publicnamenv作者:nameAn:)Book:Book(long nu,char*bp,char*p,char*n)Setdata(nu,bp,p,n);void main(void)Book bl,b2;long nu;char bn40;char pn40;char na20;ifstream filel;ofstream file3;char flag=y*;while(flag=*y|flag=,Y,)couttt 1:按书名查找一本书!n”;coutntt 2:加入一本新书!n”;couttt 3:退出!n输入选择:”;书名出版社/作者由flag控制循环i
37、ntf;cinf;switch(f)case 1:cout”输入要查找的书名:”;cinbn;file 1 .open(book.dat,ios:in|ios:binary);按读方式打开文件while(!filel.eof()int n;file 1 .read(char*)&b l,sizeof(Book);n=filel.gcount();if(n=sizeof(Book)if(strcmp(b 1 .Getbookname(),bn)=0)显示书的信息bl.Show();)filel.close();break;case 2:coutvv”输入书号:”;cinnu;cout”输入书名:
38、cinbn;cout”输入出版社:cinpn;coutvv”输入作者:”;cinna;b 1 .Setdata(nu,bn,pn,na);file3.openCbook.dat,ios:app|ios:binary);增补方式打开文件file3.write(char*)&b 1 ,sizeof(b 1);file3.close();break;default:flag=*n;上机要求修改程序增加按出版社、作者。从文件中查找书名,输出同一出版社出版的所有书名,按列表的格式输出文件中的所有书名等。写出实验报告。2 上机实验题二一自定义一个描述人的基本信息的类,至少包括的数据成员:姓名,单位,出生日期。分析用友元函数重载重载提取和插入运算符,实现对象的输入和输出。上机要求编制一个完整的程序。写出实验报告。3.上机实验题三(项目选做)用C+提供的集成环境或使用其它的纯文本编辑工具,把若干个实数输入到文本文件“DATA.TXT”中,设计一个程序对该文件中的数据进行处理:统计该文件中的实数个数、求出这些数的平均值和均方差,按每行五个数据输出文件中的所有数据。三.实验要求1.结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验报告和上交程序。