计算机网络实验指导书,信号与系统实验指导书,plc实验指导书,c++实验指导书
发布时间:2012-12-24 来源: 材料力学实验指导书
搜索 C 实验指导书 共搜索到约186个结果 内容介绍《 C 语言程序设计 实验指导书 》内容简介:学习 C 语言程序设计课程...源程序、独立上机调试、独立运行程序和分析结果.《 C...
实验 1 1.1 实验目的和要求 (1) (2) (3) (4) (5) (6) (7) (8) 类和对象 理解类和对象的概念,掌握声明类和定义对象的方法。掌握构造函数和析构函数的实现方法。
初步掌握使用类和对象编制 C++程序。
掌握对象数组、对象指针和 string 类的使用方法。
掌握使用对象、对象指针和对象引用作为函数参数的方法。
掌握类对象作为成员的使用方法。
掌握静态数据成员和静态成员函数的使用方法。
理解友元的概念和掌握友元的使用方法。 1.2 实验内容和步骤 1. 输入下列程序 //test4-1.cpp #include<iostream>
using namespace std;
class Coordinate { public: Coordinate(int x1,int y1) { x=x1;
y=y1;
} Coordinate(Coordinate &p);
~Coordinate() { cout<<”Destructor is calleded\n”;} int getx() {return x;} int gety() {return y;} private: int x,y;
};
Coordinate::Coordinate(Coordinate &p) { x=p.x;
y=p.y;
cout<<”copy-initialization Constructou is called\n”;
} int main() { Coordinate p1(3,4);
Coordinate p2(p1); Coordinate p3=p2;
cout<<”p3=(“<<p3.getx()<<”,”<<p3.gety()<<”)\n”;
return(0);
} (1) 写出程序的运行结果。
(2) 将 Coordinate 类中带有两个参数的构造函数进行修改,在函数体内增添下述语句:
cout<<”Constructor is called.\n”;
写出程序的运行结果,并解释输出结果。
(3)按下列要求进行调试:
在主函数体内,添加下列语句:
Coordinate p4;
Coordinata p5(2);
调试程序时会出现什么错误?为什么?如何对已有的构造函数进行适当修改? (4)经过以上第(2)步和第(3)步的修改后,结合运行结果分析:创建不同的对象时 会调用不同的构造函数。
2.设计一个 4*4 魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值 的和。例如一下魔方:
31 3 5 25 9 21 19 15 17 13 11 23 7 27 29 1 各行、各列以及对角线值的和都是 64. 【提示】 求 4*4 魔方的一般步骤如下:
(1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方的初始魔方的起始 值(first)和相邻元素之间的差值(step)分别为:
first=1 step=2 (2)设置初始魔方元素的值。例如上述魔方的初始魔方为:
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 (3)生成最终魔方。方法如下:
错误!未找到引用源。求最大元素值与最小元素值的和 sum,该实例的 sum 是:
1+31=32 错误!未找到引用源。用 32 减去初始魔方所有对角线上元素的值,然后将结果放在原来 的位置,这样就可求得最终魔方。本例最终魔方如下:
31 9 17 7 3 21 13 27 5 19 11 29 25 15 23 1 本题的魔方类 magic 的参考框架如下:
class magic { public: void getdata();
void setfirstmagic();
void generatemagic();
void printmagic();
private: int m[4][4];
int step;
int first;
int sum;
};
3.设计一个用来表示直角坐标系的 Location 类,在主程序中创建类 Location 的两个对象 A 和 B,要求 A 的坐标点在第 3 象限,B 的坐标在第 2 象限,分别采用成员函数和友元函数 计算给定两个坐标点之间的距离,要求按如下格式输出结果:
A(x1,y1),B(x2,y2) Distance1=d1 Distance1=d2 其中:x1、x2、y1、y2 为指定的坐标值,d1 和 d2 为两个坐标点之间的距离。
【提示】 类 Location 的参考框架如下:
class Location { public: Location(double,double);
double Getx() double Gety() double distance(Location &);
friend double distance (Location &,Location &);
private: double x,y;
};
4.声明一个 Student 类,在该类中包括一个数据成员 score(分数) 、两个静态数据成员 total_score(总分)和 count(学生人数) ;还包括一个成员函数 account()用于设置分数、累 计学生成绩之和、累计学生人数,一个静态成员函数 sum()用于返回学生的成绩之和,另一 个静态成员函数 average()用于求全班成绩的平均值。在 main 函数中,输入 某班同学的 成绩,并调用上述函数求出全班学生的成绩之和和平均分。
5.使用 C++的 string 类,将 5 个字符串按逆转后的顺序显示出来。例如,逆转前的 5 个字 符串是:
Germany Japan America Britain France 按逆转后的顺序输出字符串是:
France Britain America Japan Germany 实验 2 2.1 实验目的和要求 (1) (2) (3) (4) 派生类与继承 掌握派生类的声明方法和派生类构造函数的定义方法。
掌握不同继承方式下,基类成员在派生类中的访问属性。
掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。
学习虚基类在解决二义性问题中的作用。 2.2 实验内容与步骤· 1.输入下列程序。
//test4_1.cpp #include<iostream>
using namespace std;
class Base{ public: void setx(int i) {x=i;} Int getx() {return x;} public: int x;
};
class Derived:public Base{ public: void sety(int i) {y=i;} int gety() {return y;} void show() {cout<<”Base::x=”<<x<<endl;
} public: inty;
};
int main() {Derived bb;
bb,setx(16);
bb.sety(25);
bb.show();
cout<<”Base::x=”<<bb.x<<endl; cout<<”Derived::y=”<<bb.y<<endl;
cout<<”Base::x=”<<bb.getx()<<endl;
cout<<”Derived::y=”<<bb.gety()<<endl;
return 0;
} (1) 写出程序的运行结果。
(2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。
错误!未找到引用源。将基类 Base 中数据成员 x 的访问权限改为 private 时,会出现哪 些错误?为什么? 错误!未找到引用源。将基类 Base 中数据成员 x 的访问权限改为 protected 时,会出现 哪些错误?为什么? 错误!未找到引用源。在源程序的基础上,将派生类 Derived 的继承方式改为 private 时, 会出现哪些错误?为什么? 错误!未找到引用源。在源程序的基础上,将派生类 Derived 的继承方式改为 protected 时,会出现哪些错误?为什么? 2.编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、 系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、 年龄的输入和显示设计成一个类 Person,并作为学生类 Student 和教师类 Teacher 的基类。
供参考的类结构如下:
class Person{ ... };
class Student:public Person{ ... };
class Teacher:public Person{ ... };
3.按要求阅读、编辑、编译、调试和运行以下程序。
(1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果。
//test4_3_1.cpp #include<iostream>
#include<string>
using namespace std;
class MyArray{ public: MyArray(int leng);
~MyArray{};
void Input();
void Display(string);
protected: int*alist;
int length;
};
MyArray::MyArray(int leng) {if(leng<=0) {cout<<”error length”;
exit(1);
} alist=new int [leng];
length=leng;
if(alist==NULL) {cout<<”assign failure”;
exit(1);
} cout<<”MyArray 类对象已创建。”<<endl;
} MyArray::~MyArray() {delete[] alist;
cout<<”MyArray 类对象被撤销。”<<endl;
} void MyArray::Display(string str) {int i;
int *p=alist;
cout<<str<<length<<”个整数:
“; for(i=0;i<length;i++,p++) cout<<*p<<””;
cout<<endl;
} void MyArray::Input{} {cout<<”请键盘输入”<<length<<”个整数:”;
int i;
int *p =alist;
for(i=0;i<length;i++,p++) cin>>*p;
} int main() {MyArray a(5);
a.Input();
a.Display(“显示已输入的”);
return 0;
} (2) 声明一个类 SortArray 继承类 MyArray,在该类中定义一个函数,具有将输入的整数 从小到大进行排序的功能。
【提示】 在第(1)步的基础上可增加下面的参考框架:
class SortArray : public MyArray { public: void Sort();
SortArray(int leng):MyArray(leng) {cout<<”SortArray 类对象已创建。”<<endl;
} virtual ~SortArray();
};
SortArray::~SortArray() {cout<<”SortArray 类对象被撤销。”<<endl;
} void SortArray::Sort() { //请自行编写 Sort 函数的代码,将输入的整数从小到大排序。
} //并将主函数修改为:
int main() {SortArray a(5);
s.Input();
s.Display(“显示排序以前的”);
s.Sort();
s.Display(“显示排序以后的”);
return 0;
} 声明一个类 ReArray 继承类 MyArray,在该类中定义一个函数,具有将输入的整数进行倒 置的功能。
【提示】 在第(1)步的基础上可增加下面的参考框架:
Class ReArray:public MyArray{ Public: Void reverse();
ReArray(int leng);
Virtual ~ReArray();
};
请读者自行编写构造函数、析构函数和倒置函数 ReArray,以及修改主函数。
(3) 声明一个类 AverArray 继承类 MyArray,在该类中定义一个函数,具有求输入的整数 平均值的功能。
【提示】 在第(1)步的基础上增加下面的参考框架:
class AverArray:public MyArray{ Public: AverArray(int leng);
~AverArray();
Double Aver();
};
请读者自行编写构造函数、析构函数和求平均值函数 Aver(求解整数的平均值) ,以及 修改主函数。
(2) 声明一个 NewArray 类 ,同时继承了类 SortArray,ReArray 和 AverArray, 使得类 NewArray 的对象同时具有排序、倒置和求平均值的功能。在继承的过程中声明 MyArray 为虚基类,体会虚基类在解决二义性问题中的作用。 实验 3 3.1 实验目的和要求 (1) (2) (3) (4) 了解多态性的概念。
掌握运算符重载的基本方法。
掌握虚函数的定义和使用方法。
掌握纯虚函数和抽象类的概念和用法。 多态性 3.2 实验内容与步骤 1.分析并调试下列程序,写出程序的输出结果,并解释输出结果。
//test5_1.cpp #include<iostream>
using namespace std;
class B{ public: virtual void f1 (double x) {cout<<”B::f1(double)”<<x<<endl;
} void f2(double x) {cout<<”B::f2(double)”<<2*x<<endl;
} void f3(double x) {cout<<”B::f3(double)”<<3*x<<endl;
} } class D:public B{ public: virtual void f1(double x) {cout<<”D::f1(double)”<<x<<endl;
} void f2(double x) {cout<<”D::f2(double)”<<2*x<<endl;
} void f3(double x) {cout<<”D::f3(double)”<<3*x<<endl;
} };
int main() {D d; B*pb=&d;
D*pd=&d;
pb->f1(1.23);
pb->f1(1.23);
pb->f2(1.23);
pb->f3(1.23);
pb->f3(3.14);
return 0;
} 2.编写一个程序,其中设计一个时间类 Time,用来保存时、分、秒等私有数据成员,通 过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于 0,分钟范围 限制在 0~59,秒钟范围限制在 0~59 秒。
【提示】 时间类 Time{ public: Time(int h=0,int m=0,int s=0);
Time operator+(Time&);
void disptime(string);
private: int hourse;
int minutes;
int seconds;
};
3.给出下面的抽象基类 container;
class container { protected: double radius;
public: container(double radius1);
virtual double surface_area()=0;
virtual double volume()=0;
};
要求建立 3 个继承 container 的派生类 cube、sphere 与 cylinder,让每一个派生类都包 含虚函数 surface_area()和 volume(), 分别用来计算正方体、 球体和圆柱体的表面积及体积。
要求写出主程序,应用 C++的多态性,分别计算边长为 6.0 的正方体、半径为 5.0 的球体, 以及半径为 5.0 和高为 6.0 的圆柱体的表面积和体积。
4.编写一个程序,用于进行集合的并、差和交运算。例如输入整数集合{9 5 4 3 6 7} 和{2 4 6 9 },计算出它们进行集合的并、差和交运算后的结果。
【提示】 i. 可用以下表达式实现整数集合的基本运算:
s1+s2 两个整数集合的并运算 s1-s2 两个整数集合的差运算 s1*s2 两个整数集合的交运算 ii. 参考以下 Set 类的框架,用于完成集合基本运算所需的各项功能。 class set{ public: set::set();
void set::input(int d);
int set::length();
int set::getd(int i);
void set::disp();
set set::operator+(set s1);
set set::operator-(set s1);
set set::operator*(set s1);
set set::operator=(set s1);
protected: int len;
int s[MAX];
}; 实验 4 4.1 实验目的和要求 模板与异常处理 (1)正确理解模板的概念。
(2)掌握函数模板和类模板的声明和使用方法。
(3)学习简单的异常处理方法。 4.2 实验内容和步骤 1.分析并调试下列程序,写出运行结果并分析原因。
(1) //test6_1_1.cpp #include <iostream>
using namespace std;
template<typename T>
T max (T x,T y) { return x>y? x:y;
} int max(int a,int b) {return a>b? a:b;
} double max (double a,double b) {return a>b? a:b;
} int main() { cout<<”max(?3?,?7?) is “<<max(?3?,?7?)<<endl;
return 0;
} (2) //test6_1_2.cpp #include <iostream>
using namespace std;
int max(int a,int b) {return a>b? a:b;
} double max (double a,double b) {return a>b? a:b;
} int main() { cout<<”max(?3?,?7?) is “<<max(?3?,?7?)<<endl; return 0;
} 2. 编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素 的函数设计成函数模板。
3. 编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。
【提示】 设计一个类模板 template <class Type>
class Array{ ... };
具有对数组元素进行排序、 倒置、 查找和求和功能, 然后产生类型实参分别为 int 型和 double 型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。
4. 编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。 实验 5 5.1 实验目的和要求 C++的流类库与输入输出 (1)掌握 C++格式化的输入输出方法。
(2)掌握重载运算符“<<”和“>>”的方法。
(3)掌握磁盘文件的输入输出方法。 5.2 实验内容和步骤 1. 下面给出的 test7_1_1.cpp 程序用于打印九九乘法表, 但程序中存在错误。
请上机调试, 使得此程序运行后,能够输出如下所示的九九乘法表。
* 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 //test7_1_1.cpp #include <iostream>
#include <iomanip>
using namespace std;
int main() { int i,j;
cout<<”*”;
for(i=1;i<=9;i++) cout<<i<<” ”;
cout<<endl;
for(i=1;i<=9;i++) { cout<<i;
for(j=1;j<=i;j++) Cout<<i*j;
} return 0;
} 2.下面的程序用于统计文件 xyz.txt 中的字符个数,请填空完成程序。
//test7_2_1.cpp #include<iostream>
#include<fstream>
using namespace std;
int main() { char ch;
int i=0;
ifstream file;
file.open(“xyz.txt”,ios::in);
if( 错误!未找到引用源。
) { cout<<”xyz.txt cannot open”<<endl;
abort();
} While (!file.eof()) { 错误!未找到引用源。
i++;
} cout<<”文件字符个数:”<<i<<endl;
错误!未找到引用源。
return 0;
} 3.重载运算符“<<”和“>>” ,使其能够输入一件商品的信息和输出这件商品的信息。
商品的信息由编号、商品名和价格。假如商品类 Merchandise 的框架如下:
class merchandise{ public: Merchandiss();
~Merchandiss();
friend istream&
operator>>(istream&
in,Merchandiss&
s);
friend ostream&operator<<(ostream&
out,Merchandiss&
s);
private: int no;
char *name;
double price;
};
要求实现该类,并编写以下的 main 函数对该类进行操作。
int main() { Merchandise mer;
cin>>mer;
cout<<mer;
return 0;
} 4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换 成大写字母,并打印出来。
西南科技大学计算机学院 C 程序设计实验指导书 《C 程序设计语言》 实验指导书 程序设计课程组编 西南科技大学计算机科学与技术学院 2006 年 8 月 1 西南科技大学计算机学...
为目标,在有助于学生学习基本原理并掌握实际的开发能力的基础上,编写了本实验教材. 电子工程系原来使用的计算机网络实验指导书是针对专业任选课《计算机网络 C》而开 ...
C 实验指导书1 1 文档简介 文档日志 暂无日志信息 文档留言 暂无留言信息 文档信息 文档格式:PDF 文档页数:87 下载积分:30
《计算机网络实验指导书,信号与系统实验指导书,plc实验指导书,c++实验指导书》出自:QQ空间素材网
链接地址:http://www.qzoneai.com/sucai/7AeL5gXYFb8Uobgg.html
相关文章阅读
- 学校防恐反恐演练图片,学校防恐反恐演练,学校防恐反恐演练预案,学校防恐反恐应急演练总结2014
- 争当百姓喜爱的好官,争当群众喜爱的好官,争当百姓喜欢的好官,做百姓喜爱的好官
- 文明用语手抄报,文明用语大全,文明用语宣传标语,文明用语
- 油库拆除方案,油库试运行方案,油库反恐预案演练方案,油库“,六个一”活动方案
- 人身损害赔偿案列,人身损害赔偿案代理词,人身损害赔偿纠纷案例,罗珍与李霞人身损害赔偿纠纷一案
- 周口卫生局网站,周口市卫生局电话,周口市卫生局信息网,周口市卫生局申请行政执行一案
- 关于规范生产系统岗位管理工作的决定,安全生产工作表彰决定,保安岗位工作规范,道路运输管理工作规范
- 安全生产调度旬报表,生产周报表格式,车间生产周报表模板,生产调度周报表
- a4文档打印成a3双面,a4纸设置成a3双面打印,a3双面打印设置,测评表(A3双面70份)
- 车间月统计考勤汇总表,月度考勤统计汇总表,教师考勤统计汇总表,6-考勤统计汇总表
- 霍州煤电集团有限公司,霍州煤电集团贪污,霍州煤电集团2014招聘,霍州煤电集团公司2012年消防责任书2
- 急性上消化道出血模拟演练方案,急性上消化道出血,急性上消化道出血课件,急性上消化道出血急救
- 5·20演唱会策划书,20公里徒步策划书,高中20年聚会策划书,20周年校庆活动策划书
- 社团文化节策划书范本,青协活动策划书,大学青协活动策划书,校青协社团文化节活动策划书