C++ 实验一总结报告Word文档格式.docx
《C++ 实验一总结报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++ 实验一总结报告Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
2.学习类的静态成员的使用;
3.学习多文件结构在C++程序中的使用;
二、实验任务
1.运行下面的程序,观察变量x、y的值。
#include<
iostream>
usingnamespacestd;
voidfn1();
intx=1,y=2;
intmain()
{
cout<
<
"
Begin..."
<
endl;
x="
x<
y="
y<
Evaluatexandyinmain()..."
intx=10,y=20;
Stepintofn1()..."
fn1();
Backinmain"
return0;
}
voidfn1()
inty=200;
2.实现客户机(CLIENT)类。
声明字符型静态数据成员ServerName,保存其服务器名称;
整型静态数据成员ClientNum,记录已定义的客户数量;
定义静态函数ChangeServerName()改变服务器名称。
在头文件client.h中声明类和实现类,在文件client.cpp中测试这个类,观察相应的成员变量取值的变化情况。
程序:
//实现客户机(CLIENT)类。
#include<
usingnamespacestd;
classClient
{
private:
staticcharSeverName[10];
staticintClientnum;
public:
Client()
{
cout<
"
Client构造函数被调用"
endl;
Clientnum++;
}
~Client()
Client析构函数被调用"
Clientnum--;
staticvoidChangeServername()
请输入服务器的名字:
cin>
>
SeverName;
voidshow();
};
intClient:
:
Clientnum=0;
charClient:
SeverName[10]="
abcd"
;
//Client.cpp
voidClient:
show()
cout<
该用户机的服务器端名字是:
SeverName<
用户数量有:
Clientnum<
}
//Client.exe
voidmain()
Client:
ChangeServername();
Clienta;
a.show();
Clientb;
b.show();
Clientc;
c.show();
实验五数组、指针与字符串
1.学习使用数组数据对象;
2.学习字符串数据的组织和处理;
3.学习标准C++库的使用;
4.掌握指针的使用方法;
5.练习通过debug观察指针的内容及其所指的对象的内容;
6.练习通过动态内存分配实现动态数组,并体会指针在其中的作用;
7.分别使用字符数组和标准C++库练习处理字符串的方法。
1.编写并测试3×
3矩阵转置函数,使用数组保存3×
3矩阵。
stdio.h>
iostream.h>
inta[3][3],i,j;
请输入一个3*3的矩阵:
for(i=0;
i<
3;
i++)
for(j=0;
j<
j++)
cin>
a[i][j];
该矩阵的转置为:
for(j=0;
for(i=0;
cout<
a[i][j]<
2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
程序:
#include<
math.h>
voidmain()
inti,j,t;
请输入一个矩阵元素个数n*n="
t;
int*p=newint[t];
endl<
请输入一个n*n的矩阵元素:
p[i];
sqrt(t);
{
for(i=0;
)
{
cout<
p[j+i]<
\t"
i=i+sqrt(t);
}
}
3.编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
inti,j;
chara[20],b[10];
请输入一个不大于10个字符的字符串:
cin>
a;
请再输入一个不大于10个字符的字符串:
b;
10;
if(a[i]=='
\0'
j=i;
break;
a[i+j]=b[i];
if(b[i]=='
break;
两字符串的连接得:
a<
4.使用string类声明字符串对象,重新实现上一小题。
string.h>
chara[20],b[10];
strcat(a,b)<
5.声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
classemployee
protected:
charname[10];
//姓名
charstreet[20];
//街道地址
charcity[10];
//市
charprov[10];
//省
charpost[7];
//邮政编码
intno;
//记录序号
employee(char[],char[],char[],char[],char[],int);
voidchange_name();
voiddisplay();
employee:
employee(charn[],chars[],charc[],charp1[],charp2[],intnum)
strcpy(name,n);
strcpy(street,s);
strcpy(city,c);
strcpy(prov,p1);
strcpy(post,p2);
no=num;
voidemployee:
change_name()
charn[20];
记录"
no<
名字改为:
cin>
n;
display()
输出记录"
姓名:
name<
街道地址:
street<
市:
city<
省:
prov<
邮政编码"
post<
employeeobj1("
王华"
"
中华路15号"
武汉市"
湖北省"
430070"
1);
employeeobj2("
杨丽"
天津路30号"
南京市"
江苏市"
210020"
2);
obj1.display();
obj1.change_name();
obj2.display();
obj2.change_name();
6.声明包含5个元素的对象数组,每个元素都是Employee类型的对象。
//声明包含5个元素的对象数组,每个元素都是Employee类型的对象。
classEmployee
intMath;
//数学
intChinese;
//语文
intEnglish;
//英语
intSport;
//体育
intNum;
//序号
voidN(intn)
{Num=n;
voidM(intm)
{Math=m;
voidC(intc)
{Chinese=c;
voidE(inte)
{English=e;
voidS(ints)
{Sport=s;
voiddisplay()
{cout<
输出序号"
Num<
\t数学:
Math<
\t语文:
Chinese<
\t英语:
English<
\t体育:
Sport<
Employeedate[10];
inti,j,n,m,c,e,s;
需要输入的成绩组数j="
j;
请依次输入序号、数学、语文、英语和体育成绩:
n>
m>
c>
e>
s;
date[i].N(n);
date[i].M(m);
date[i].C(c);
date[i].E(e);
date[i].S(s);
date[i].display();
实验六类与对象
1.掌握类的声明和使用。
2.掌握类的声明和对象的声明。
3.复习具有不同访问属性的成员的访问方式。
4.观察构造函数和析构函数的执行过程。
5.学习类的组合使用方法。
1.声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,其中,rank为字符型,其值可以为P1、P2等;
frequency为单位是MHz的整型数;
voltage为浮点型的电压值。
公有成员函数包括:
GetRank()、GetFrequency()、GetVoltage()用来获取等级、频率、电压的值;
SetRank、SetFrequency、SetVoltage用来设置等级、频率、电压的值;
run、stop中run里面要求输出“CPU开始运行!
”;
stop里面要求输出“CPU停止运行!
”。
构造函数里面需要输出“构造一个CPU”,析构函数里面需要输出“析构一个CPU”。
观察构造函数和析构函数的调用顺序。
//声明一个CPU类
#include<
enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7};
classCPU
CPU_Rankrank;
intfreauency;
floatvoltage;
CPU(CPU_Rankr,intf,floatv)
{rank=r;
freauency=f;
voltage=v;
构造一个CPU!
~CPU()
析构一个CPU!
voidrun()
CPU开始运行!
}
voidstop()
CPU停止运行!
voidshow()
rank="
rank<
\tfreauency="
freauency<
\tvoltage="
voltage<
intmain()
{enumCPU_Rankrank;
rank=p5;
CPUcpu1(rank,1024,3.6);
cpu1.run();
cpu1.show();
cpu1.stop();