1. ( )是istream类的对象。 A.cerr B.cin C.cout D.clog 答题: A. B. C. D. (已提交) -->参考答案:B 问题解析: |
2. 下列不能作为输出流对象的是( )。 A.文件 B.内存 C.键盘 D.显示器 答题: A. B. C. D. (已提交) -->参考答案:C 问题解析: |
3. 下列流类中,可以用于处理文件的是( )。 A.ios B.iostream C.strstream D.fstream 答题: A. B. C. D. (已提交) -->参考答案:D 问题解析: |
4. 下列关于异常的描述错误的是( )。 A.编译错误属于异常,可以抛出 B.运行错误属于异常 C.硬件故障可以当作异常抛出 D.只要程序员认为是异常的都可以当异常抛出 答题: A. B. C. D. (已提交) -->参考答案:A 问题解析: |
5. 用于抛出异常的关键字是( )。 A.try B.catch C.throw D.finally 答题: A. B. C. D. (已提交) -->参考答案:C 问题解析: |
6. 下列关于异常处理的说法,正确的是( )。 A.异常是一种对象 B.一旦程序运行,异常就会被创建 C.为保证程序运行速度,要尽量避免进行异常控制 D.以上说法均不对 答题: A. B. C. D. (已提交) -->参考答案:A 问题解析: |
思考题
1.在Visual C++中,流类库的作用是什么?有人说,cin是键盘,cout是显示器,这种说法正确吗?为什么?
【解答】
在Visual C++中,流类库是一个程序包,作用是实现对象之间的数据交互。“cin是键盘,cout是显示器”的说法不正确。cin和cout分别是istream和ostream的预定义对象,默认连接标准设备键盘、显示器,解释从键盘接受的信息,传送到内存;把内存的信息解释传送到显示器。所以称为标准流对象。程序可以对cin、cout重定向,连接到用户指定的设备,例如指定的磁盘文件。
2.什么叫文件?C++读/写文件需要通过什么对象?有些什么基本操作步骤?
【解答】
任何一个应用程序运行,都要利用内存储器存放数据。这些数据在程序运行结束之后就会消失。为了永久的保存大量数据,计算机用外存储器(如磁盘和磁带)保存数据。各种计算机应用系统通常把一些相关信息组织起来保存在外存储器中,并用一个名字(称为文件名)加以标识,称为文件。
3.一个已经建立的文本文件可以用二进制代码方式打开操作吗?一个二进制数据文件可以用文本方式打开吗?为什么?写一个程序试一试。
【解答】
一个已经建立的文本文件可以用二进制方式打开操作。但必须以字符类型数据读取数据然后转换成需要的类型数据才有意义。通常一个二进制文件用文本方式打开是没有意义的,除非这个二进制文件全部是用字符类型数据建立的。因为文本文件是以可读形式ASC码存放数据的,二进制文件直接用计算机表示数据的二进制形式存放数据,它们之间解释方式不同。
程序略。
编程题
1.编写一程序,将d:盘根目录下两个文件1.cpp和2.cpp合并成一个文件new.cpp。
参考答案:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int i=1;
char c[1000];
ifstream ifile1("D:\\1.cpp");
ifstream ifile2("D:\\2.cpp");
ofstream ofile("D:\\new.cpp");
while(!ifile1.eof())
{
ifile1.getline(c,999);
ofile<<c<<endl;
}
while(!ifile2.eof())
{
ifile2.getline(c,999);
ofile<<c<<endl;
}
ifile1.close();
ifile2.close();
ofile.close();
return 0;
}
2.编写一程序,存为D:\f1.cpp,统计本文中单词的个数与行数。
参考答案:
#include<iostream>
#include<fstream>
using namespace std;
bool isalph(char);
int main()
{
ifstream ifile("D:\\f1.cpp");
char text[1000];
bool inword=false;
int rows=0,words=0;
int i;
while(!ifile.eof())
{
ifile.getline(text,999);
rows++;
i=0;
while(text[i]!=0)
{
if(!isalph(text[i]))
inword=false;
else if(isalph(text[i]) && inword==false)
{
words++;
inword=true;
}
i++;
}
}
cout<<"rows= "<<rows<<endl;
cout<<"words= "<<words<<endl;
ifile.close ();
return 0;
}
bool isalph(char c)
{
return ((c>='A' && c<='Z') || (c>='a' && c<='z'));
}
3.编写一程序,将上题中的C++源程序每行前加上行号与一个空格。
参考答案:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int i=1;
char c[1000];
ifstream ifile("D:\\f1.cpp");
ofstream ofile("D:\\new_f1.cpp");
while(!ifile.eof())
{
ofile<<i++<<": ";
ifile.getline(c,999);
ofile<<c<<endl;
}
ifile.close();
ofile.close();
return 0;
}
4.以表格形式输出当x = 1°,2°,…,10°时的sin(x)、cos(x)和tan(x)的值,要求输出时数据的宽度为10、左对齐和保留小数点后5位。
参考答案:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
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<<setw(10)<<sin(a)/cos(a)<<endl;
}
}
|