您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页《面向对象程序设计Ⅱ》期末复习资料6

《面向对象程序设计Ⅱ》期末复习资料6

来源:化拓教育网
《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流 一、选择题

1.下列流类中可以用于处理文件的是( )。(D) A. ios A. cerr

B. iostream B. cin

C. strstream C. clog

D.fstream D. cout

D. 指定若干个字节

2.在下列选项中( )是istream类的对象。(B) 3.read函数的功能是从输入流中读取( )。(D) A. 一个字符

B. 当前字符

C. 一行字符

4.下列选项中,用于清除基数格式位设置以十六进制输出的语句是( )。(B) A. cout << setf( ios::dec, ios::basefield ) ; B. cout << setf( ios::hex, ios::basefield ) ; C. cout << setf( ios::oct, ios::basefield ) ; D. cin >> setf( ios::hex, ios::basefield ) ;

5.下列格式控制符,既可以用于输入,又可以用于输出的是( )。(A) A. setbase

B. setfill

C. setprecision

D. setw D. stringstream D. iostream.h

6.下列串流类,在strstream.h中定义的是( )。(B) A. istringstream A. fstream.h

B. istrstream B. ofstream.h

C. ostringstream C. ifstream.h

7.包含类fstream定义的头文件是( )。Wrong! (A)

8.要求打开文件 D:\\file.dat,并能够写入数据,正确的语句是( )。(D) A. ifstream infile( \"D:\\\\file.dat\B. ifstream infile( \"D:\\\\file.dat\ C. ofstream outfile( \"D:\\\\file.dat\D. fstream iofile( \"D:\\\\file.dat\

9.设已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( )。(C)

A. outfile.write( ( double * ) & data , sizeof( double ) ) ; B. outfile.write( ( double * ) & data , data ) ; C. outfile.write( ( char * ) & data , sizeof( double ) ) ; D. outfile.write( ( char * ) & data , data ) ;

二、阅读下列程序,写出执行结果

1.#include < iostream.h > void main() {

double x = 123.456; cout.width( 10 );

cout.setf( ios :: dec, ios :: basefield ); cout << x << endl;

1

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 }

参 123.456 123.456

123.456 +123.456 -123.456 +1.234560e+002 2.#include void main() { }

#123.457

123.46 +123.46 +1.23457e+002

3.#include #include void main() {

double x = 123.4567;

cout << setiosflags( ios::fixed | ios::showpos ) << x <cout.setf( ios::right , ios::left ); cout << x << endl; cout.setf( ios::showpos ); cout << x << endl; cout << -x << endl; cout.setf( ios :: scientific ); cout << x << endl;

2

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 } 参 +123.4567

-123.457 1.23457e+002

cout<< setprecision( 3 ) << -x << endl; cout << resetiosflags( ios::fixed | ios::showpos )

<< setiosflags( ios::scientific ); cout << setprecision( 5 ) << x << endl;

三、综合编程题

1.以表格形式输出当x = 1°,2°,…,10°时的sin(x)、cos(x)和tan(x)的值,要求输出时数据的宽度为10、左对齐和保留小数点后5位。 参

#include #include #include void main() { }

2. 建立一个文本文件,从键盘输入一篇短文存放在文件中。短文由若干行构成,每行不超过80个字符。 参

#include #include #include void main() {

char filename[20]; fstream outfile;

cout << \"Please input the name of file :\\n\";

3

int x; double a;

cout << \"x sin(x) cos(x) tg(x)\" << endl; //输出表头 for( x=1; x<=10; x++ ) { }

a = x * 3.14159265 / 180; //角度转换为弧度 cout << setw(3) << setiosflags( ios::left ); cout << setiosflags( ios::fixed ); cout << setprecision(5); cout << x;

cout << setw(10) << sin(a); cout << setw(10) << cos(a);

cout<《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 }

3.把由第2题建立的文本文件读出,显示在屏幕上并统计该文件的行数。 参

#include #include #include void main() { }

char filename[20]; fstream infile;

cout << \"Please input the name of file :\\n\"; cin >> filename ;

infile.open( filename, ios::in ); if ( !infile ) { }

char textline[80]; int i = 0;

while ( !infile.eof() ) { }

infile.close();

cout << \"i=\" << i << endl;

infile.getline( textline,sizeof( textline )); cout << textline << endl; ++i;

cerr << \"File could not be open.\" << endl; abort(); cin >> filename ;

outfile.open( filename, ios::out ); if ( !outfile ) { }

outfile << \"This is a file of students\\n\"; outfile << \"Input the number, name, and score.\\n\"; outfile << \"Enter Ctrl-Z to end input? \"; outfile.close();

cerr << \"File could not be open.\" << endl; abort();

@@@4.建立某单位职工通讯录二进制文件,文件中的每个记录包括职工编号、姓名、电话号码、邮

政编码和住址。 参

4

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 #include #include #include struct txrec { }; void main() { }

5.从键盘上输入职工的编号,在由第4题所建立的通讯录文件中查找该职工资料。查找成功时,显示职工的姓名、电话号码、邮政编码和住址。

int n,i; struct txrec gzrec; char filename[20]; fstream outfile;

cout << \"请输入通讯录文件名:\" ; cin >> filename ;

outfile.open( filename, ios::out|ios::binary ); if ( !outfile ) { }

cout << \"请输入职工人数:\" ; cin >> n;

for( i=1; i<=n; i++ ) { }

outfile.close() ;

cout << \"请输入第\"<< i <<\"个职工的编号:\" ; cin >> gzrec.no ;

cout << \"请输入第\"<< i <<\"个职工的姓名:\" ; cin >> gzrec.name ;

cout << \"请输入第\"<< i <<\"个职工的电话号码:\" ; cin >> gzrec.tel ;

cout << \"请输入第\"<< i <<\"个职工的邮政编码:\" ; cin >> gzrec.postc ;

cout << \"请输入第\"<< i <<\"个职工的通信地址:\" ; cin >> gzrec.addr ;

outfile.write( ( char* )&gzrec,sizeof( txrec )) ; cerr << \"文件不能打开!\" << endl ; abort(); char no[6]; char name[20]; char tel[9]; char postc[7]; char addr[30];

5

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 参

#include #include #include #include struct txrec { }; void main() {

struct txrec gzrec; int i;

char filename[20], num[5]; fstream infile;

cout << \"请输入通讯录文件名:\"; cin >> filename ;

infile.open( filename, ios::in|ios::binary ); if ( !infile ) { }

infile.seekg( 0,ios::end ); long posend = infile.tellp(); infile.seekg( 0,ios::beg ); cout << \"请输入职工编号:\" ; cin >> num; do {

infile.read(( char * )&gzrec,sizeof( txrec ));

} while ( strcmp( gzrec.no,num ) !=0 && infile.tellp() != posend ); if ( strcmp( gzrec.no,num ) == 0 ) {

cout << \"该职工的记录找到了!\" << endl; cout << \"编号:\" << gzrec.no << endl; cout << \"姓名:\"<< gzrec.name << endl; cout << \"电话号码:\"<< gzrec.tel << endl; cout << \"邮政编码:\" << gzrec.postc << endl; cout << \"通信地址:\" << gzrec.addr << endl; cerr << \"文件不能打开!\" << endl; abort(); char no[6]; char name[20]; char tel[9]; char postc[7]; char addr[30];

6

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 }

} else {

cout << \"该职工的记录找不到!\" << endl; } infile.close();

@@@6.设有两个按升序排列的二进制数据文件f和g,将它们合并生成一个新的升序二进制数据文件

h。 参:

#include #include #include void main() {

int data1,data2;

fstream infile1,infile2,outfile;

infile1.open( \"d:\\\\vc\\\\f.dat\ if ( !infile1 ) { }

infile1.seekg(0,ios::end); long posend1 = infile1.tellp();

infile2.open( \"d:\\\\vc\\\\g.dat\ if ( !infile2 ) { }

infile2.seekg( 0,ios::end ); long posend2 = infile2.tellp();

outfile.open( \"d:\\\\vc\\\\h.dat\infile1.seekg( 0,ios::beg ); infile2.seekg( 0,ios::beg );

while ( infile1.tellp() != posend1 && infile2.tellp() != posend2 ) {

infile1.read(( char * )&data1,sizeof( int )); infile2.read(( char * )&data2,sizeof( int )); if( data1outfile.write(( char * )&data1,sizeof( int )); infile2.seekg( -sizeof( int ),ios::cur ); cerr << \"文件不能打开!\" << endl ; abort();

cerr << \"文件不能打开!\" << endl ; abort();

7

《面向对象程序设计Ⅱ》期末复习资料之六:输入输出流专项练习 }

7. 编写一个函数,使用数据文件测试保存并读取类对象数据。

}

while ( infile1.tellp() != posend1 ) { }

while ( infile2.tellp() != posend2 ) { }

cout << \"文件合并已完成!\" << endl; infile1.close(); infile2.close(); outfile.close();

infile2.read(( char * )&data2,sizeof( int )); outfile.write(( char * )&data2,sizeof( int )); infile1.read(( char * )&data1,sizeof( int )); outfile.write(( char * )&data1,sizeof( int )); } else { }

outfile.write(( char * )&data2,sizeof( int )); infile1.seekg( -sizeof(int),ios::cur );

8

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务