五菱之光发动机怎么样:一道C++二级考试机试题

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 18:40:26
题目是:从文本文件in.dat中读取全部整数,将整数序列存放到intArray类的对象myArray中.然后由writeToFile选择序列中的部分数据输出到文件out.dat中.类intArray重载了[]运算符.文件in.dat中的整数个数不超过300个.
要求:
补充编制的内容写在//*************333********与//************666******两行之间.实现构造函数,从in.dat中读取全部整数存入以成员指针array为起始地址的内存空间,并将全部整数在屏幕输出,格式不限.不得修改程序的其它部分.
注意:程序最后已经将结果输出到文件out.dat中.输出函数writeToFile已经给出并调用.

题目给出的程序:
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;

class intArray
{
private:
int *array; //整数序列首地址
public:
int length; //序列中的整数个数
//构造函数,从文件中读取数据用于初始化新对象。参数是文件名。
intArray(char *filename);
int & operator[](int i); //重载运算符,实现对象赋值。
~intArray();
};

//*************333***********

//*************666***********

int& intArray::operator[](int i)
{
return array[i];
}

intArray::~intArray()
{
delete [] array;
}

void writeToFile(char *filename, intArray& myArray)
{
int step=0;
ofstream outFile(filename);
for(int i=0; i<myArray.length; i=i+step)
{
outFile<<myArray[i]<<'\n';
step++;
}
outFile.close();
}

void main()
{
intArray myArray("..\\in.dat");
writeToFile("..\\out.dat",myArray);
}

注:我在//*******333****与//*****666*****之间填写的内容是
intArray::intArray(char *filename)
{
int len=300;
length=0;
array=new int[len];
ifstream myfile(filename);
while(myfile>>array[length++]);
length--;
for(int i=0;i<length;i++)
cout<<array[i]<<" ";
cout<<endl;
}
能调试成功,而且一点错误也不提示.但是后来我突然想起,这里我漏掉了myfile.close()这一语句.请高手们说一下,我这个题还能不能得分?请大家都发表一下意见吧,按照你们以往考计算机等级考试的经验.谢谢!!!

一般来说,close函数的作用有两个 第一是释放文件句柄,第二是文件的真正写操作,如果没有他的话文件将不会进行写操作(虽然程序运行的时候硬盘稀里哗啦的转但是程序退出后会进行写还原),也就是说out.dat在你程序结束的时候可能是空的或者没有写完全或者恢复原始状态(根据不同的函数库有不同的操作)。所以~~~

没工夫细看,不过C语言上机操作,只要out.dat输出文件内容对,就会是满分,不对那就没有办法了,你自己在自己机器试试编译一下