实验四 IO流及模板

2018-12-20 22:21

C++面向对象程序设计课程实验报告

课程名称 C++面向对象程序设计 姓名 实验名称 实 验 目 的 及 要 求 班级 学号 实验日期 实验成绩 2014.5.16 实验四 I/O流及模板 1. 正确理解C++输入/输出的含义,熟悉流及流类库的作用。 2. 掌握流类库中常用的类及其成员函数的使用方法,掌握C++流输入和流输出 的使用方法。 3. 掌握C++格式输入/输出的方法,了解常用控制符的使用。 4. 学习文本文件和二进制文件的输入/输出方法。 5. 掌握类模板与函数模板的定义,能够使用类模板和函数模板进行编程。 6. 理解类模板与模板类以及函数模板和模板函数的区别。 7. 了解STL库。 实 验 环 境 实 验 内 容 算 法 描 述 及 实 验 步 骤

硬件平台:普通PC机 软件平台:Windows操作系统 编程环境:Visual C++ 6.0或Dev-cpp 1. 文件数据的读取。编制一程序来显示并保存[2,1000]内的所有素数。显示 保存素数的格式为:每行10个素数,每一个素数占7个字符,右对齐,最 后一行不足10个素数时按一行输出。 2. 编写一个单向链表的类模板,分别实现增加、删除、查找和打印操作。 各题目算法描述及实验步骤: 题目1:主要考察文件中数据的读取,还包括格式化输入/输出的简单应用(右对齐)。 算法描述及实验步骤:首先定义一个ofstream类的对象output,然后打开文件,再分别编写判断素数、每行输出10个数以及保证辖域为7的代码,最后关闭文件,这些都可以在main函数中编写。 题目2:主要考察C++与数据结构相结合,单向链表内各种功能的实现。 算法描述及实验步骤:首先定义一个类,然后利用前插入法初始化链表,编写类模板的成员函数,再分别进行增加、删除、查找和打印的操作。 将两段代码分别在Visual C++ 6.0中进行程序调试,更改代码错误后编译通过,并输出调试后的最终结果。 输出结果如下: 题目1: 1

调 试 过 程 及 实 验 结 果 题目2: 总 结

实验四主要考察了输入/输出流的概念及类模板的应用。通过实验四的再学习现作如下总结:一旦文件被打开,文件中的文本数据信息的读/写操作与控制台文件信息的输入/输出操作就完全一致。定义ifstream、ofstream、fstream流类对象时,应用对象名替代控制台文本信息输入/输出使用的输入流类对象(如cin)和输出流类对象(如cout)。在编程时应注意不要有拼写错误。 实验四各题目程序代码如下: 题目1: #include #include 2

附 录 #include using namespace std; int main(){ } int count,temp; temp=0; ofstream output; output.open(\for(int i=2;i<1000;i++){ count=0; for(int j=2;j0)continue; else{ temp++; cout< #include template class ListNode { public: ListNode() { } ListNode(T x[],int n); void addnode(T e,int n); int deletenode(T e); int findnode(T e); void disp(); T data; ListNode *next; private: }; template

3

ListNode::ListNode(T x[],int n) ///前插法初始化链表 { ListNode *s; this->data=-1; this->next=NULL; for(int i=0;idata=x[i]; s->next=this->next; this->next=s; } template void ListNode::addnode(T e,int n) //插入位置n,插入数据为e { if(n<0) { } template int ListNode::deletenode(T e) {

cout<<\插入位置不存在\return ; } ListNode *s,*p; int count=0; s=(ListNode *)malloc(sizeof(ListNode)); s->data=e; p=this; count++; while(p!=NULL && countnext; count++; if(p==NULL) { } cout<<\插入位置不存在\return ; s->next=p->next; p->next=s; ListNode *p=this,*q; 4

} q=p->next; while(q!=NULL && q->data!=e) { p=q; q=q->next; } if(q!=NULL) { } p->next=q->next; free(q); return 1; else { } cout<<\不存在要删除的元素\return 0; template int ListNode::findnode(T e) //查找元素,返回位置 { ListNode *p=this; int count=0; while(p!=NULL && p->data!=e) { } if(p!=NULL) return count; else return 0; p=p->next; count++; } template void ListNode::disp() //显示链表 { ListNode *p=this->next; }

5

while(p->next!=NULL) { cout<data<<\ p=p->next; } cout<data<

int main() { int a[10]={2,6,9,0,4,5,1,7,8,3}; } cout<<\初始化链表类模板并显示\ListNode head(a,10); head.disp(); cout<<\下面执行增加操作,增加元素'45',位置为'3'\head.addnode(45,3); head.disp(); cout<<\下面执行删除操作,删除元素'5'\head.deletenode(5); head.disp(); int location=head.findnode(4); if(location>0) { cout<<\要查找的元素是链表的第\个元素\} else cout<<\没有查找的元素\return 0; 6


实验四 IO流及模板.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:水泵房工程招标标书-—招投标书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: