华工C++课件及学习资料.docx
- 文档编号:8935531
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:27.94KB
华工C++课件及学习资料.docx
《华工C++课件及学习资料.docx》由会员分享,可在线阅读,更多相关《华工C++课件及学习资料.docx(14页珍藏版)》请在冰豆网上搜索。
华工C++课件及学习资料
第11章输入/输出流
11.1
选择题
1•在下列流类中,可以用于处理文件的是(D)
(A)ios
(B)iostream
(C)strstream
(Dfstream
2•在下列选项中,
(B)是istream
类的对象。
(A)cerr
(B)cin
(Cclog
(D)cout
3•用于处理字符串流的是(A)o
(A)strstream
(B)ios
(C)fstream
(D)iostream
4•能够从输入流中提取指定长度的字节序列的函数是(C)
(A)get(B)getline(C)read(D)cin
5•能够把指定长度的字节序列插入到输出流中的函数是(B)
(A)put(B)write(C)cout(D)print
6.getline函数的功能是从输入流中读取(C)
7•在下列选项中,用于清除基数格式位设置以十六进制数输出的语句是(B)
(A)cout«setf(ios:
:
dec,ios:
:
basefield);
(B)cout< : hex,ios: : basefield); (C)cout< : oct,ios: : basefield); (D)cin>>setf(ios: : hex,ios: : basefield); 8下列格式控制符,既可以用于输入,又可以用于输出的是(A) (B) (A)setbase setfill(C)setprecision(D)setw 9•要求打开文件D: \file.dat,并能够写入数据,正确的语句是(D) (A)ifstreaminfile("D: \\file.dat",ios: : in); (B)ifstreaminfile("D: \\file.dat",ios: : out); (C)ofstreamoutfile("D: \\file.dat",ios: : in); (D)fstreaminfile("D: \\file.dat",ios: : in|ios: : out); 10•能实现删除文件功能的语句是(A)o (A)ofstreamfs("date.dat",ios: : trunc); (B)ifstreamfs("date.dat",ios: : trunc); (C)ofstreamfs("date.dat",ios: : out); (D)ifstreamfs("date.dat",ios: : in); 11•设已定义浮点型变量 data,以二进制代码方式把data的值写入输出文件流对象outfile 中,正 确的语句是(C)o (A)outfile.write((double (B)outfile.write((double (C)outfile.write((char (D)outfile.write((char 12.二进制数据文件流fdat )&data,sizeof(double)); )&data,data); )&data,sizeof(double)); )&data,data); 读指针移到文件头的语句是(A) (A)fdat.seekg(0,ios: : beg); (B)fdat.tellg(0,ios: : beg); 11.2阅读下列程序,写出运行结果 1. #include intmain() { doublex=123.456;cout.width(10); cout.setf(ios: : dec,ios: : basefield);cout< cout.setf(ios: : left);cout< cout.setf(ios: : right,ios: : left);cout< cout.setf(ios: : showpos);cout< cout.setf(ios: : scientific);cout< } 【解答】 123.456 123.456 123.456 +123.456 -123.456 +1.234560e+002 2. #include usingnamespacestd; intmain() { doublex=123.45678;cout.width(10);cout<<("#"); cout< cout.precision(5);cout< : showpos);cout< : scientific);cout< 【解答】 #123.457 123.46 +123.46+1.23457e+002 3. #include #include intmain() { doublex=123.456789; cout< : fixed|ios: : showpos)< : right); cout< cout< : fixed|ios: : showpos)< : scientific);cout< } 【解答】+123.456789 -123.457 1.23457e+0024.写出文件D: \f1.txt中的内容和屏幕显示的结果。 #include intmain() { inti; ofstreamftxt1; ftxt1.open("D: \\f1.txt",ios: : out); for(i=1;i<10;i++)ftxt1< ftxt1.close();ifstreamftxt2; ftxt2.open("D: \\f1.txt",ios: : in); while(! ftxt2.eof()) {ftxt2>>i>>i; cout< } } 【解答】 D: \f1.txt: 123456789屏幕显示: 4 6 8 9 5•以下程序使用了习题11.2第4小题中生成的文件D: \f1.txt。 写出程序运行后屏幕显示的结果。 #include #include usingnamespacestd; intmain() { inti; ifstreamf1("d: \\f1.txt",ios: : in); fstreamf2; f2.open("d: \\f2.dat",ios: : out|ios: : binary); while(! f1.eof()) { f1»i; i=i5; f2.write((char)&i,sizeof(int)); } f1.close(); f2.close(); f2.open("d: \\f2.dat",ios: : in|ios: : binary); do { f2.read((char)&i,sizeof(int)); coutvvivv""; }while(i<30); coutvvendl; f2.close(); } 【解答】 51015202530 11.3思考题 1•在VisualC++中,流类库的作用是什么? 有人说,cin是键盘,cout是显示器,这种说法正确吗? 为什么? 【解答】 在VisualC++中,流类库是一个程序包,作用是实现对象之间的数据交互。 “cin是键盘,cout是显示 器”的说法不正确。 cin和cout分别是istream和ostream的预定义对象,默认连接标准设备键盘、显示器,解释从键盘接受的信息,传送到内存;把内存的信息解释传送到显示器。 所以称为标准流对象。 程序可以对cin、cout重定向,连接到用户指定的设备,例如指定的磁盘文件。 2.什么叫文件? C++读/写文件需要通过什么对象? 有些什么基本操作步骤? 解答】 任何一个应用程序运行,都要利用内存储器存放数据。 这些数据在程序运行结束之后就会消失。 为了永久的保存大量数据,计算机用外存储器(如磁盘和磁带)保存数据。 各种计算机应用系统通常把一些相关信息组织起来保存在外存储器中,并用一个名字(称为文件名)加以标识,称为文件。 C++读/写文件需要用到文件流对象。 文件操作的三个主要步骤是: 打开文件、读/写文件、关闭文件流。 打开文件包括建立文件流对象,与外部文件关联,指定文件的打开方式。 读/写文件是按文件信息规格、数据形式与内存交互数据的过程。 关闭文件包括把缓冲区数据完整地写入文件,添加文件结束表示符,切断流对象和外部文件的连接。 3.一个已经建立的文本文件可以用二进制代码方式打开操作吗? 一个二进制数据文件可以用文本方式打开吗? 为什么? 写一个程序试一试。 【解答】一个已经建立的文本文件可以用二进制方式打开操作。 但必须以字符类型数据读取数据然后转换成需要的类型数据才有意义。 通常一个二进制文件用文本方式打开是没有意义的,除非这个二进制文件全部是用字符类型数据建立的。 因为文本文件是以可读形式ASC码存放数据的,二进制文件直接用计算机表示数 据的二进制形式存放数据,它们之间解释方式不同。 程序略。 11.4编程题 1.以表格形式输出当x=1°,2°,…,10°时sinx、cosx和tanx的值。 要求: 输出时,数据的宽度为10,左对齐,保留小数点后5位。 【解答】 #include #include #include usingnamespacestd; intmain() { intx;doublea; cout<<"xsin(x)cos(x)tg(x)"< for(x=1;x<=10;x++) { a=x*3.14159265/180;//角度转换为弧度 cout< : left); cout< : fixed); cout< cout< cout< cout< } } 2.建立一个文本文件,从键盘输入一篇短文存放在文件中。 短文由若干行构成,每行不超过80个字符。 解答】 #include #include usingnamespacestd; intmain() { charfilename[20];fstreamoutfile; cout<<"Pleaseinputthenameoffile: \n"; cin>>filename; outfile.open(filename,ios: : out); if(! outfile) { cerr<<"Filecouldnotbeopen."< } outfile<<"Thisisafileofstudents\n"; outfile<<"Inputthenumber,name,andscore.\n"; outfile<<"EnterCtrl-Ztoendinput? ";outfile.close(); } 3.读出由习题11.4第2小题建立的文本文件,显示在屏幕上并统计该文件的行数。 解答】 #include #include usingnamespacestd; intmain() { charfilename[20];fstreaminfile; cout<<"Pleaseinputthenameoffile: \n"; cin>>filename; infile.open(filename,ios: : in); if(! infile) { cerr<<"Filecouldnotbeopen."< } chartextline[80]; inti=0; while(! infile.eof()) { infile.getline(textline,sizeof(textline)); cout< } infile.close(); cout<<"i="< } 4•读出一个作业cpp文件,删除全部注释内容,即以“/……/”相括的文本和以“//”开始到 行末的文本,生成一个新的cpp文件。 【解答】 略。 5•建立某单位职工通讯录的二进制数据文件,文件中的每个记录包括: 职工编号、姓名、电话号码、邮政编码和住址。 【解答】 #include #include usingnamespacestd; structtxrec { charno[6]; charname[20]; chartel[9]; charpostc[7]; charaddr[30]; }; intmain() { intn,i; txrecgzrec; charfilename[20]; fstreamoutfile; cout<<"请输入通讯录文件名: "; cin>>filename; outfile.open(filename,ios: : out|ios: : binary); if(! outfile) { cerr<<"文件不能打开! "< abort(); } cout<<"请输入职工人数: "; cin>>n; for(i=1;i<=n;i++) { cout<<"请输入第"< "; cin>>gzrec.no; cout<<"请输入第"< "; cin>>gzrec.name; cin>>gzrec.tel; cout<<"请输入第"<>gzrec.postc; cout<<"请输入第"< cin>>gzrec.addr;outfile.write((char*)&gzrec,sizeof(txrec)); }outfile.close(); }6.从键盘输入职工的编号,在由习题11.4第5小题所建立的通讯录文件中查找该职工资料。 查找成功后,显示职工的姓名、电话号码、邮政编码和住址。 【解答】 #include structtxrec { charno[6]; charname[20]; chartel[9]; charpostc[7]; charaddr[30]; }; intmain() { structtxrecgzrec;inti; charfilename[20],num[6]; fstreaminfile; cout<<"请输入通讯录文件名: "; cin>>filename; infile.open(filename,ios: : in|ios: : binary); if(! infile) { cerr<<"文件不能打开! "< } infile.seekg(0,ios: : end); longposend=infile.tellp(); infile.seekg(0,ios: : beg); cout<<"请输入职工编号: ";cin>>num; doinfile.read((char*)&gzrec,sizeof(txrec)); }while(strcmp(gzrec.no,num)! =0&&long(infile.tellp())! =posend); if(strcmp(gzrec.no,num)==0) { cout<<"该职工的记录找到了! "< cout<<"编号: "< cout<<"姓名: "< cout<<"电话号码: "< cout<<"邮政编码: "< cout<<"通信地址: "< } else {cout<<"该职工的记录找不到! "< }infile.close(); } 7•设有两个按升序排列的二进制数据文件f和g,将它们合并生成一个新的升序二进制数据文件h 解答】 #include #include usingnamespacestd; intmain() { intdata1,data2; fstreaminfile1,infile2,outfile; infile1.open("d: \\vc\\f.dat",ios: : in|ios: : binary); if(! infile1) { cerr<<"文件不能打开! "< abort(); } infile1.seekg(0,ios: : end); longposend1=infile1.tellp(); infile2.open("d: \\vc\\g.dat",ios: : in|ios: : binary); if(! infile2) { cerr<<"文件不能打开! "< } infile2.seekg(0,ios: : end); longposend2=infile2.tellp(); outfile.open("d: \\vc\\h.dat",ios: : out|ios: : binary); infile1.seekg(0,ios: : beg); infile2.seekg(0,ios: : beg); while(long(infile1.tellp())! =posend1&&long(infile2.tellp())! =posend2) { infile1.read((char*)&data1,sizeof(int)); infile2.read((char*)&data2,sizeof(int)); if(data1 { outfile.write((char*)&data1,sizeof(int));infile2.seekg(-int(sizeof(int)),ios: : cur); } else { outfile.write((char*)&data2,sizeof(int));infile1.seekg(-int(sizeof(int)),ios: : cur); } } while(long(infile1.tellp())! =posend1) { infile1.read((char*)&data1,sizeof(int)); outfile.write((char*)&data1,sizeof(int)); } while(long(infile2.tellp())! =posend2) { infile2.read((char*)&data2,sizeof(int));outfile.write((char*)&data2,sizeof(int)); } cout<<"文件合并已完成! "< infile1.close(); infile2.close(); outfile.close(); } 8.编写一个函数,使用数据文件测试在第10章习题10.4第3小题完成的T_Counter类体系。 准备 一个文件inputdat用于输入数据,把程序运行结果显示在屏幕上并写入文件outputdat中。 【解答】 略。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华工 C+ 课件 学习 资料