实验四 输入输出流程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

课程名称C++面向对象程序设计班级实验日期2014.5.16-2012

.5.23

姓名学号实验成绩实验名称实验四输入输出流程序设计

实验目的及要求1.理解输入输出流的基本概念,明确流是一个类

2.了解输入输出流类库基本结构和主要类,掌握主要层次,其中重

点理解fstream,iostream和iomanip

3.理解流缓冲区类的派生关系以及设备缓冲、文件缓冲和流缓冲

4.熟悉格式化的输入和输出,记住主要的常用的操作符,以及各种

应用(对齐)

掌握文件的输入和输出,区别C语言中的文件写入、打开等操作,会对一个文件进行I/O操作

实验环境硬件平台:普通的PC机

软件平台:Windows 操作系统编程环境:VisualC++ 6.0

实验内容1.文件数据的读取。编制一程序来显示并保存[2,1000]内的所有素数。显示、保存素数的格式为:每行10个素数,每一个素数占7个字符,右对齐,最后一行不足10个素数时按一行输出

2.编写一个单向链表的类模板,分别实现增加、删除、查找和打印操作

算法描述及实验步骤1、这个题主要考察了文件中数据的读取,还包括数据格式化输入输出。首先定义一个ofstream类的对象output,在main函数中打开文件后,再分别编写判断素数、每行输出10个数以及使辖域为7的代码,最后关闭文件。

2

这个题是C++与数据结构的结合,实现单向链表内各种功能。首先定义一个类ListNode,然后利用前插入法初始化链表,编写类模板的成员函数,再分别进行增加、删除和查找的操作

调试过程及实验结果

总结1.一旦文件被打开,文件中的文本数据信息的读/写操作与控制台文件信息的输入/输出操作就完全一致

2.定义ifstream、ofstream、fstream流类对象时,应用对象名替代控制台文本信息输入/输出使用的输入流类对象(如cin)和输出流类对象(如cout)

#include #include #include using namespace std; int main(){ int count,a; a=0;

ofstream output;

output.open("D:\\aaa.txt"); for(int i = 2;i <= 1000;i++) {

count = 0; for(int j = 2;j < i;j++){ if((i%j) == 0) { count++;break; } } if(count > 0)continue; else{ a++; cout<

output.close(); return 0; } 2.

#include #include

template class ListNode { public: ListNode() { }

ListNode(T x[],int n);

void addnode(T e,int n); int deletenode(T e); int searchnode(T e); void disp(); private: T data; ListNode *next; };

template

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) { cout<<"插入位置不存在"<data=e; p=this; count++; while(p!=NULL && countnext; count++;

}

if(p==NULL)

{

cout<<"插入位置不存在"<

return ;

}

s->next=p->next;

p->next=s;

}

template

int ListNode::deletenode(T e)

{

ListNode *p=this,*q;

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::searchnode(T e)

//查找元素,返回位置

{

ListNode *p=this;

int count=0;

while(p!=NULL && p->data!=e)

{

p=p->next;

count++;

}

if(p!=NULL)

return count; else

return 0;

}

template

void ListNode::disp() //显示链表

{

ListNode *p=this->next;

while(p->next!=NULL)

{

cout<data<<"->";

p=p->next;

}

cout<data<

}

int main()

{

int a[10]={2,12,69,0,54,97,11,67,88,30};

cout<<"初始化链表类模板并显示"<

ListNode head(a,10);

head.disp();

cout<<"下面执行增加操作,增加元素'45' ,位置为'3'"<

head.addnode(45,3);

head.disp();

cout<<"下面执行删除操作,删除元素'11'" <

head.deletenode(11);

head.disp();

int location=head.searchnode(88);

if(location>0)

{

cout<<"要查找的元素88是链表

的第"<

}

else

cout<<"没有查找的元素"<

return 0;

}

相关文档
最新文档