1.概念填空题
1.1头文件iostream中定义了 4个标准流对象 cin , ios 字符串转数组cout , cerr , clog 。其中标准输入流对象为 cin ,与 键盘 连用,用于输入; cout 为标准输出流对象,与显示器 连用,用于输出。
1.2用标准输入流对象cin与提取操作符>>连用进行输入时,将 空格 与 回车 当作分隔符,使用 get() 成员函数进行输入时可以指定输入分隔符。
1.3每一个输入输出流对象都维护一个 流格式状态字 ,用它表示流对象当前的格式状态并控制流的格式。C++提供了使用 格式控制 函数与 操作子 函数来控制流的格式的方法。
1.4 C++根据文件内容的 数据格式 可分为两类: 文本文件 和 二进制文件 。前者存取的最小信息单位为 字节 ,后者 记录 。
1.5文件输入是指从文件向 内存 读入数据;文件输出则指从 内存 向文件输出数据。文件的输入输出首先要 打开文件 ;然后 进行读写 ;最后 关闭文件 。
1.6文本文件是存储ASCII码字符的文件,文本文件的输入可用 cin 从输入文件流中提取字符实
现。文本文件的输出可用 cout 将字符插入到输出文件流来实现。程序在处理文本文件时 需要 (需要/不需要)对数据进行转换。
1.7二进制文件是指直接将计算机内的数据不经转换直接保存在文件中。二进制文件的输入输出分别采用read()、write() 成员函数。 这两个成员函数的参数都是 2个,分别表示 读写缓冲区 和 字节数 。
1.8设定、返回文件读指针位置的函数分别为 seekg , tellg ;设定、返回文件写指针位置的函数分别为 seekp , tellp 。
2 简答题
2.1 为什么cin输入时,空格和回车无法读入?这时可改用哪些流成员函数?
2.2 文件的使用有它的固定格式,试做简单介绍。
2.3 在ios类中定义的文件打开方式中,公有枚举类型open_mode的各成员代表什么文件打开方式?
2.4 简述文本文件和二进制文件在存储格式、读写方式等方面的不同,各自的优点和缺点。
2.5 文本文件可以按行也可以按字符进行复制,在使用中为保证能完整复制要注意哪些问题?
2.6 文件的随机访问为什么总是用二进制文件,而不用文本文件?
2.7 怎样使用istream和ostream的成员函数来实现随机访问文件?
3.选择题
3.1要进行文件的输出,除了包含头文件iostream外,还要包含头文件(C )。
A.ifstream B.fstream C.ostream D.cstdio
3.2执行以下程序:
char *str;
cin>>str;
cout<<str;
若输入abcd 1234↙则输出(D)。
A.abcd B.abcd 1234 C.1234 D.输出乱码或出错
3.3执行下列程序:
char a[200];
line(a,200,’ ‘);
cout<<a;
若输入abcd 1234↙则输出(A)。
A.abcd B.abcd 1234 C.1234 D.输出乱码或出错
3.4定义char *p=”abcd”,能输出p的值(“abcd”的地址)的为(A /D ?)。
A.cout<<&p; B.cout<<p;
C.cout<<(char*)p; D.cout<<const_cast<void *>(p);
3.5以下程序执行结果(A)。
cout.fill(‘#’);
cout.width(10);
cout<<setiosflags(ios::left)<<123.456;
A.123.456### B.123.4560000 C.####123.456 D.123.456
3.6当使用ifstream定义一个文件流,并将一个打开文件的文件与之连接,文件默认的打开方式为(A)。
A.ios::in B.ios::out C.ios::trunc D.ios::binary
3.7从一个文件中读一个字节存于char c;正确的语句为(B)。
A.ad(reinterpret_cast<const char *>(&c), sizeof(c));
B.ad(reinterpret_cast<char *>(&c), sizeof(c));
C.ad((const char *)(&c), sizeof(c));
D.ad((char *)c, sizeof(c);
3.8将一个字符char c=’A’写到文件中错误的语句为(D)。
A.file.write(reinterpret_cast<const char *>(&c), sizeof(c));
B.file.write(reinterpret_cast<char *>(&c), sizeof(c));
C.file.write((char *)(&c), sizeof(c));
D.file.write((const char *)c, sizeof(c));
3.9读文件最后一个字节(字符)的语句为(B)。
A.myfile.seekg(1,ios::end); B.myfile.seekg(-1,ios::end);
(); ();
C.myfile.seekp(ios::end,0); D.myfileseekp(ios::end,1);
(); ();
3.10 read函数的功能是从输入流中读取(D )。
A.一个字符 B.当前字符 C.一行字符 D.指定若干字节
3.11 要求打开文件D:\file.dat,并能够写入数据,正确的语句是( D )。
A.ifstream infile("D:\\file.dat", ios::in);
B. ifstream infile("D:\\file.dat", ios::out);
C. ofstream outfile("D\\file.dat", ios::in);
D.fstream infile("D\\file.dat", ios::in | ios::out);
3.12 设己定义浮点型变量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);
4.编程题
4.1 编程实现以下数据输入/输出:
(1)以左对齐方式输出整数,域宽为12。
(2)以八进制、十进制、十六进制输入/输出整数。
(3)实现浮点数的指数格式和定点格式的输入/输出,并指定精度。
(4)把字符串读入字符型数组变量中,从键盘输入,要求输入串的空格也全部读入,以回车符结束。
(5)将以上要求用流成员函数和流操作子各做一遍。
Ios类成员函数实现
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
long a=234;
double b=2345.67890;
char c[100];
cout.fill('*');
cout.flags(ios_base::left);
cout.width(12);
cout<<a<<endl;
cout.fill('*');
cout.flags(ios::right);
cout.width(12);
cout<<a<<endl;
cout.flags(ios.hex);
cout<<234<<'\t';
cout.flags(ios.dec);
cout<<234<<'\t';
cout.);
cout<<234<<endl;
cout.flags(ios::scientific);
cout<<b<<'\t';
cout.flags(ios::fixed);
cout<<b<<endl;
(c,99);
cout<<c<<endl;
return 0;
}
流操作子实现
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
long a=234;
double b=2345.67890;
char c[100];
cout<<setfill('*');
cout<<left<<setw(12)<<a<<endl;
cout<<right<<setw(12)<<a<<endl;
cout<<hex<<a<<'\t'<<dec<<a<<'\t'<<oct<<a<<endl;
cout<<scientific<<b<<'\t'<<fixed<<b<<endl;
return 0;
}
4.2编写一程序,将两个文件合并成一个文件。
#include<iostream>
#include<fstream>
using namespace std;
int main(){
int i=1;
char c[1000];
ifstream ifile1("D:\\10_4_3.cpp");
ifstream ifile2("D:\\10_4_4.cpp");
ofstream ofile("D:\\r10_4.cpp");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论