c++输入输出流实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验结果: 定义几个函数分别实现:创建文件、复制文件、读取 文件中的内容到显示器 在主函数中调用创建函数,创建一个文件a,调用复制 文件的函数将a中的内容复制到文件b,c中在调用读取 文件的函数将a、b、c中的内容输出到显示器中。 4. 将存放在源文件(e:\ex\array1.txt)中学生成绩读入二 维整型数组a[3][5]中,数组a的第0列存放学号,第4列 存放平均成绩。计算出每个学生的平均成绩,用擂台 法对数组a按平均成绩升序排序后,存放在目的文件 (e:\ex\array2.txt)中。学生的学号与成绩如实验数据所 示。编写程序实现上述要求。 实验数据: 源文件:e:\ex\array1.txt,内容如下: 1001 90 85 80 0 1002 80 70 60 0 1003 85 80 75 0 目的文件:e:\ex\array2.txt 实验代码:
class merchandise{ public: merchandise(){no=0;name[0]='\0';price=1;} ~merchandise(){} friend istream& operator>>(istream& in,merchandise& s); friend ostream&operator<<(ostream& out,merchandise& s); private: int no; char name[100]; double price; }; istream& operator>>(istream& in,merchandise& s) cout<<"请输入商品信息(编号、名称、价 格):"; in>>s.no; in.getline(s.name,100,'\n'); in>>s.price; return in; ostream& s) operator<<(ostream& out,merchandise&
二、实验内容 1.定义描述职工工资的类Laborage,数据成员为职 工号(No)、姓名(Name[8])、应发工资(Ssalary)、社保 金(Security)、实发工资(Fsalary)。 定义公有成员函数 Input(),在Input()函数内输入职工号、姓名、应发工 资、社保金,实发工资由公式:Fsalary=SsalarySecurity计算。定义输出职工工资的成员函数Show()。 在显示函数Show()中,职工号、姓名的输出域宽为8、 左对齐,其余数据的输出域宽为10、右对齐、保留小 数点后两位,输出格式均用预定义格式控制函数设 置。在主函数中用Laborage类定义职工对象数组a[3]。
cout<<"a文?件t中D的Ì?内¨²容¨Y为a:êo"; display("a.txt"); cout<<"b文?件t中D的Ì?内¨²容¨Y为a:êo"; display("b.txt"); cout<<"c文?件t中D的Ì?内¨²容¨Y为a:êo"; display("c.txt"); return 0;
#include<iostream> #include<fstream> using namespace std;
void createfile() ofstream outfile("array1.txt"); int a[3][4]; int i,j; for(i=0;i<3;i++) { cout<<"请?输º?入¨?第̨²"<<i+1<<"个?学¡ì生 ¦¨²的Ì?信?息¡é:êo"; for(j=0;j<4;j++) { cin>>a[i][j]; } } for(i=0;i<3;i++) { for(j=0;j<4;j++) { outfile<<a[i][j]; outfile<<' '; } outfile<<'\n'; } //创ä¡ä建¡§文?件tarray1 void sort()//排?序¨°并¡é创ä¡ä建¡§文?件tarray2 ifstream infile("array1.txt"); int a[3][5]; int i,j,t; double s=0; for(i=0;i<3;i++) { for(j=0;j<4;j++) { infile>>a[i][j]; s=s+a[i][j]; }
wk.baidu.com
exit(1); } ifstream infile("a.txt"); if(!infile) { cerr<<"open a.txt error!"<<endl; exit(1); } char ch; while(infile.get(ch)) { outfile<<ch; } outfile.close(); infile.close(); void display(char *filename) ifstream infile(filename); if(!infile) { cerr<<"open the file error!"<<endl; exit(1); } char ch; while(infile.get(ch)) { cout.put(ch); } cout<<endl; infile.close(); int main() createfile(); copyfile_b(); copyfile_c();
} void Laborage::display() { cout<< resetiosflags(ios::right)<<setw(8) <<setiosflags(ios::left)<<num; cout<< setw(8)<< setiosflags(ios::left) <<name; cout<< setw(10)<< setiosflags(ios::right)<< setiosflags(ios::fixed) << setprecision(2) <<Ssalary; cout<< setw(10)<< setiosflags(ios::right)<< setiosflags(ios::fixed) << setprecision(2) <<Security; cout<< setw(10)<< setiosflags(ios::right)<< setiosflags(ios::fixed) << setprecision(2) <<Fsalary; cout<<endl; } int main(void) { Laborage lab[3]; int i; for(i=0;i<3;i++) { cout<<"请输入第"<<i+1<<"个职员的信息 为:"; lab[i].input(); } for(i=0;i<3;i++) { lab[i].display(); } return 0; } 实验结果: 代码分析:
#include<iostream> #include<fstream> #include<string> using namespace std; void createfile() ofstream outfile("a.txt"); if(!outfile) {
cerr<<"open a.txt error!"<<endl; exit(1); } char str[100]; cin.getline(str,100,'\n'); outfile<<str; outfile.close(); void copyfile_b() ofstream outfile("b.txt"); if(!outfile) { cerr<<"open b.txt error!"<<endl; exit(1); } ifstream infile("a.txt"); if(!infile) { cerr<<"open a.txt error!"<<endl; exit(1); } char ch; while(infile.get(ch)) { outfile<<ch; } outfile.close(); infile.close(); void copyfile_c() ofstream outfile("c.txt"); if(!outfile) { cerr<<"open c.txt error!"<<endl;
实验四
输入输出流
姓名: 指导教师:
实验课程名:面向对象程序设计(C++) 专业班级: 学号: 实验时间: 实验地点:
一、实验目的和要求 (1) 理解类和对象的概念,掌握声明类和定义对象的 方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参 数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。
1)在输入时调用getline()以换行符作为输入姓名 时的结束标志,已达到输入空格的目的 2)输出时采用resetiosflags(ios::right)实现结束向左 对齐,用setw(8)实现输出域宽为8,使用一系列的格式 控制字符来实现输出格式的控制。 2. 重载运算符“<<”和“>>”,使其能够输入一件商品的 信息和输出这件商品的信息。商品的信息由编号、商 品名和价格。假如商品类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; } 实验代码: #include<iostream> using namespace std;
cout<<"商品信息显示如下:"<<endl; out<<s.no<<' '<<s.name<<' '<<s.price<<endl; return out; int main()
merchandise mer; cin>>mer; cout<<mer; return 0; 实验结果: 实验分析: 先定义一个商品的类,构造函数定义为无参函数在函 数体中将name置为空,其他为0.在重载>>时使用 getline函数,输入name以’\n’作为结束标记 重载<<时直接输出。在主函数中调用这些函数实现输 入输出的功能。 3.将一个源文件复制为两个不同名目的文件,源文件 与目的文件均用构造函数打开,使用成员函数get与put 复制第一个目的文件,使用getline与插入运算符复制 第二个目的文件。(提示:用get函数将输入文件流对 象的指针指向文件尾后,无法将该指针移到文件首位 置。所以只能定义两个输入文件流对象打开同一源文 件,用于两种方式的文件复制。) 实验数据: 源文件:e:\ex\a.txt,文件内容为souce file 目的文件1:e:\ex\b.txt 目的文件2:e:\ex\c.txt 实验代码:
用Input()输入职工工资,用Show()显示每个职工的工 资。(提示:用getline输入姓名后,必须用回车结束姓 名输入) 实验数据: 1001 Zhou Zhi 3000 200 1002 Chen Hua 4000 400 1003 Wang Fan 5000 500 实验代码: #include <iostream> #include <iomanip> #include <fstream> using namespace std; class Laborage { public: Laborage(){} void input(); void display(); private: int num; char name[10]; float Ssalary; float Security; float Fsalary; }; void Laborage::input() { cin>> num; cin.get(name,10,'\n'); cin>> Ssalary; cin>> Security; Fsalary = Ssalary - Security;