西安石油大学大二上C++面向对象程序设计课件第9章程序.docx

上传人:b****8 文档编号:13142618 上传时间:2023-06-11 格式:DOCX 页数:15 大小:17.68KB
下载 相关 举报
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第1页
第1页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第2页
第2页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第3页
第3页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第4页
第4页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第5页
第5页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第6页
第6页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第7页
第7页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第8页
第8页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第9页
第9页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第10页
第10页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第11页
第11页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第12页
第12页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第13页
第13页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第14页
第14页 / 共15页
西安石油大学大二上C++面向对象程序设计课件第9章程序.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

西安石油大学大二上C++面向对象程序设计课件第9章程序.docx

《西安石油大学大二上C++面向对象程序设计课件第9章程序.docx》由会员分享,可在线阅读,更多相关《西安石油大学大二上C++面向对象程序设计课件第9章程序.docx(15页珍藏版)》请在冰点文库上搜索。

西安石油大学大二上C++面向对象程序设计课件第9章程序.docx

西安石油大学大二上C++面向对象程序设计课件第9章程序

【例91.1】设计一个从键盘输入中提取若干个字符或字符串的例子。

程序设计如下:

//Exam9-1.cpp

#include

voidmain(void)

{

intlength=6;

chara,b[6],c[6];

cin.get(a);//输入1个字符

cin>>a;//跳过输入流中1个字符

cin.getline(b,length);//输入长度为length的字符串到b

cin.get();//跳过输入流中1个字符

cin.getline(c,length);//输入长度为length的字符串到c

cout<

}

程序的一次运行结果如下:

1q22222q33333//这是用户输入的内容

12222233333//这是输出的内容

上述同样的输入内容还可以按下面格式输入:

1

22222

33333

【例91.2】设计一个包含几种典型情况的屏幕输出的例子。

程序设计如下:

//Exam9-2.cpp

#include

voidmain(void)

{

charch1[]="i=",ch2[]="x=";

inti=100;

floatx=11.11;

cout<

cout<

cout.put('c');

cout<

charch3[]="abcdefg";

cout.write(ch3,5)<

}程序的运行结果如下:

i=100

x=11.11

abcde

【例91.3】分别用十进制格式、十六进制格式和科学计数法格式输出三个数。

程序设计如下:

//Exam9-3.cpp

#include

voidmain(void)

{

intcount=432;

intstate=1234;

floatx=555.55;

cout.setf(ios:

:

dec);//设置为十进制

cout<<"count="<

cout.setf(ios:

:

hex);//设置为十六进制

cout<<"state="<

cout.setf(ios:

:

scientific);//设置为科学计数法

cout<<"x="<

}

程序的输出结果如下:

count=432

state=4d2

x=5.555500e+002

【例91.4】使用操作符方法重新设计例9.3程序。

程序设计如下:

//Exam9-4.cpp

#include

#include

voidmain(void)

{

intcount=432;

intstate=1234;

floatx=555.55;

cout<<"count="<

cout<<"state="<

cout.setf(ios:

:

scientific);//设置为科学计数法

cout<<"x="<

}

程序中,hex和dec分别是设置十六进制和设置十进制的操作符。

hex操作符的函数体定义如下:

ios&hex(ios&o)

{

o.setf(ios:

:

hex);

returno;

}

【例91.5】设计一个有参数操作符使用方法的例子。

设计的程序例子如下:

//Exam9-5.cpp

#include

#include

voidmain(void)

{

constdoublePI=3.141592653589793;

cout<<"PI="<

intk;

cin>>oct>>k;//八进制格式输入

cout<<"k="<

floatd=324.567;

cout<<"d="

<

<

}

运行该程序的输出结果为:

PI=3.141592654

17//此行为输入的八进制数值

k=f

d=****324.57

【例91.6】设计一个程序,分别用get()、getline()成员函数和输入运算符“>>”把当前工作目录下的Data1.dat文件中的字符数据显示在屏幕上。

(1)用get()成员函数。

程序设计如下:

//Exam9-6-1.cpp

#include//fstream.h包含iostream.h

voidmain(void)

{

ifstreamifs("Data1.dat");

charc;

intn=0;

while(ifs.get(c))

{

cout.put(c);

n++;

}

cout<

"<

ifs.close();

}

设文件Data1.dat中的数据为:

abcdefghijklmn

abcdefg

abc

则运行上述程序时屏幕显示为:

abcdefghijklmn

abcdefg

abc

字符个数为:

26

(2)用getline()成员函数。

程序设计如下:

//Exam9-6-2.cpp

#include

voidmain(void)

{

ifstreamifs("Data1.dat");

charbuffer[80];

intn=0;

while(!

ifs.eof())

{

ifs.getline(buffer,sizeof(buffer));

cout<

cout<

n++;

}

cout<<"字符行数为:

"<

ifs.close();

}

(3)用输入运算符“>>”。

程序设计如下:

//Exam9-6-3.cpp

#include

voidmain(void)

{

ifstreamifs("Data1.dat");

charc;

intn=0;

while(!

ifs.eof())

{

ifs>>c;

cout<

n++;

}

cout<

"<

ifs.close();

}

因输入运算符“>>”将略去回车换行符,所以程序运行时屏幕上的输出结果为:

abcdefghijklmnabcdefgabc

字符个数为:

25

【例91.7】设计一个程序,分别用put()成员函数和输出运算符“<<”把内存变量中的字符数据输出到当前目录下的文件Data2.dat中。

(1)用put()成员函数输出。

程序设计如下:

//Exam9-7-1.cpp

#include

#include

voidmain(void)

{

ofstreamofs("Data2.dat");

charstr[]="abcdefghijklmn\nabcdefg\nabc";

//字符\n为回车换行的转义符

intlen=strlen(str);

for(inti=0;i

ofs.put(str[i]);

ofs.close();

}

该程序运行后,将在当前工作目录下创建文件Data2.dat,该文件中的数据为:

abcdefghijklmn

abcdefg

abc

(2)用输出运算符“<<”。

程序设计如下:

//Exam9-7-2.cpp

#include

voidmain(void)

{

ofstreamofs("Data2.dat");

charstr[3][20]={"abcdefghijklmn\n","abcdefg\n","abc"};

for(inti=0;i<3;i++)

ofs<

ofs.close();

}

该程序运行后,将在当前工作目录下创建文件Data2.dat,该文件中的数据为:

abcdefghijklmn

abcdefg

abc

【例91.8】二进制文件读/写示例。

要求:

(1)设计一个包括姓名、学号和成绩的学生类。

(2)程序中先把1个学生数据写入文件aaa.dat中,再从文件中读出该学生数据并显示在屏幕上。

程序设计如下:

//Exam9-8.cpp

#include

#include

classStudent//学生类

{

public:

charname[20];//姓名

longnumber;//学号

intscore;//成绩

Student(char*na="0",longnu=0,intsc=0)//构造函数

{

strcpy(name,na);

number=nu;

score=sc;

}

};

voidmain(void)

{

Studentstu1("张三",111,100),stu2;//定义对象

charfileName[]="aaa.dat";

ofstreamfileOut(fileName,ios:

:

binary);//打开二进制输出文件

fileOut.write((char*)&stu1,sizeof(classStudent));//写文件

fileOut.close();//关闭文件

ifstreamfileIn(fileName,ios:

:

binary);//打开二进制输入文件

fileIn.read((char*)&stu2,sizeof(classStudent));//读文件

fileIn.close();//关闭文件

cout<<"姓名:

"<

cout<<"学号:

"<

cout<<"成绩:

"<

}

程序运行后文件aaa.dat中永久保存了一个学生对象的数据,并且屏幕输出如下:

姓名:

张三

学号:

111

成绩:

100

【例91.9】

随机访问文件示例。

要求:

(1)设计一个包括姓名、学号和成绩的学生结构体。

(2)程序中先把3个学生数据写入文件bbb.dat中,再从文件中读出第2个学生的数据显示在屏幕上。

程序设计如下:

//Exam9-9.cpp

#include

structStudent//学生结构体

{

charname[20];//姓名

longnumber;//学号

intscore;//成绩

};

voidmain(void)

{

Studentstu[3]={{"张三",111,100},{"李四",222,90},

{"王五",333,80}},stu2;

charfileName[]="bbb.dat";

intn=3,i;

//打开输入输出文件

fstreamdatafile(fileName,ios:

:

in|ios:

:

out|ios:

:

binary);

//在文件中写入3条纪录

for(i=0;i

datafile.write((char*)&stu[i],sizeof(structStudent));

datafile.seekp(1*sizeof(structStudent),ios:

:

beg);

//指针定位到第2条纪录

datafile.read((char*)&stu2,sizeof(structStudent));//读文件

datafile.close();//关闭文件

cout<<"姓名:

"<

cout<<"学号:

"<

cout<<"成绩:

"<

}

程序运行后文件bbb.dat中永久保存了三个学生的数据,并且屏幕输出如下:

姓名:

李四

学号:

222

成绩:

90

【例91.10】

把复数类设计为可流复数类。

要求:

(1)复数的实部和虚部均设计为模板T。

(2)复数运算仅有加,把复数加运算重载为运算符。

(3)重载输入运算符和输出运算符。

(4)对所设计的可流复数类进行测试。

程序设计如下:

//Exam9-10.cpp

#include

template

classComplex

{

friendostream&operator<<(ostream&os,Complex&com);

friendistream&operator>>(istream&is,Complex&com);

private:

Treal;

Timage;

public:

Complex(void):

real(0),image(0)

{};

Complex(Trp,Tip):

real(rp),image(ip)

{};

~Complex()

{};

Complexoperator+(constComplex&x)const

{

returnComplex(real+x.real,image+x.image);

}

};

template

ostream&operator<<(ostream&os,Complex&com)

{

os<<"("<

returnos;

}

template

istream&operator>>(istream&is,Complex&com)

{

cout<<"real=";

is>>com.real;

cout<<"image=";

is>>com.image;

returnis;

}

voidmain(void)

{

Complexa(3,5),b(2,3),c,d;

c=a+b;

cout<<"c="<

cin>>d;

cout<<"d="<

}

程序的一次运行结果如下:

c=(5,8)

real=4

image=8

d=(4,8)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2