一、 实验目的

  1. 了解链表类的定义与实现,学习其使用方法;
  2. 了解栈类的定义与实现,学习其使用方法;
  3. 了解队列类的定义与实现,学习其使用方法;
  4. 了解C++标准模板库STL的使用方法。
  5. 熟悉流类库中常用的类及其成员函数的用法。
  6. 学习标准输入输出及格式控制;
  7. 学习对文件的应用方法(二进制文件、文本文件)。

二、 实验任务

  1. 编写程序link.h实现教材中例9.6的链表类。在测试程序lab9_1.cpp中定义两个整型链表A和B,分别插入5个元素,然后把B中的元素加入A的尾部。
    (题解:实验8.1 链表类的定义与实现)
  2. 编写程序queue.h,用链表实现队列(或栈)类。在测试程序lab9_2.cpp中定义一个整型队列(或栈)对象,插入5个整数,压入队列(或栈),再依次取出并显示出来。
    (题解:实验8.2 队列类的定义与实现)
  3. 使用C++标准模板库(STL)中的双向队列类(deque)重新实现上一小题。
    (题解:实验8.3 C++标准模板库(STL)中的双向队列类(deque))
  4. (选做)定义course(课程)类,有属性:课程名char name[21]、成绩short score;在实验七中的student类中增加属性:所修课程courses,为课程类对象的链表。在测试程序中测试这个类。学生类与课程类关系如图9-1所示。

    图9-1 类图
  5. 观察以下程序的输出,注意对输出格式的控制方法;
//lab11_1.cpp
#include <fstream>
using namespace std;
#define D(a) T << #a << endl; a
ofstream T("output.out");void main() {D(int i = 53;)D(float f = 4700113.141593;)char* s = "Is there any more?";D(T.setf(ios::unitbuf);)D(T.setf(ios::showbase);)D(T.setf(ios::uppercase);)D(T.setf(ios::showpos);)D(T << i << endl;)D(T.setf(ios::hex, ios::basefield);)D(T << i << endl;)D(T.unsetf(ios::uppercase);)D(T.setf(ios::oct, ios::basefield);)D(T << i << endl;)D(T.unsetf(ios::showbase);)D(T.setf(ios::dec, ios::basefield);)D(T.setf(ios::left, ios::adjustfield);)D(T.fill('0');)D(T << "fill char: " << T.fill() << endl;)D(T.width(8);)T << i << endl;D(T.setf(ios::right, ios::adjustfield);)D(T.width(8);)T << i << endl;D(T.setf(ios::internal, ios::adjustfield);)D(T.width(8);)T << i << endl;D(T << i << endl;) // Without width(10)D(T.unsetf(ios::showpos);)D(T.setf(ios::showpoint);)D(T << "prec = " << T.precision() << endl;)D(T.setf(ios::scientific, ios::floatfield);)D(T << endl << f << endl;)D(T.setf(ios::fixed, ios::floatfield);)D(T << f << endl;)D(T.setf(0, ios::floatfield);) // AutomaticD(T << f << endl;)D(T.precision(16);)D(T << "prec = " << T.precision() << endl;)D(T << endl << f << endl;)D(T.setf(ios::scientific, ios::floatfield);)D(T << endl << f << endl;)D(T.setf(ios::fixed, ios::floatfield);)D(T << f << endl;)D(T.setf(0, ios::floatfield);) // AutomaticD(T << f << endl;)D(T.width(8);)T << s << endl;D(T.width(36);)T << s << endl;D(T.setf(ios::left, ios::adjustfield);)D(T.width(36);)T << s << endl;D(T.unsetf(ios::showpoint);)D(T.unsetf(ios::unitbuf);)
}
  1. 编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。
  2. (选做)使用实验十中的学生类数组,输入数据,显示出来,使用I/O流把此数组的内容写入磁盘文件,再显示出文件内容。

三、 实验步骤

  1. 参照教材中链表类LinkedList的定义(教材中的例程9-6.h),给出其实现,注意合理使用Node类(教材中的例程9-3.h)的成员函数。在测试程序中定义整型链表A和B,分别插入5个元素,使用循环语句显示链表中的元素,然后把B中的元素加入A的尾部,再显示出来。
  2. 队列类的特点就是其元素的操作顺序为先入先出(FIFO),用上题中的链表类实现队列类,用链表类的成员函数实现队列类的成员函数,在测试程序中定义一个整型队列对象,观察队列类中元素先入先出的特点。
  3. 在程序中包含语句#include ,使用deque类的方法push_back()、empty()、pop_front()完成上一小题的要求。程序名:lab9_3.cpp。
  4. 观察实验任务5题目中程序的输出,学习对输出格式的控制方法;尝试更改输出语句中的参数,以加深对输出格式的理解;
  5. 编写程序lab11_2.cpp使用void main(int argc, char* argv[])函数中的参数传递操作的文件名,定义ofstream 的对象对文件进行操作,使用getline成员函数读入数据,使用cout输出字符到文件。

实验8 群体类、流类库与输入/输出(4学时)相关推荐

  1. C++——流类库和输入/输出

    前言 数据是怎么写道磁盘的? 代码里面我们一个读写调用似乎就能将数据从磁盘读写.仿佛代码是直接和磁盘打交道.以我们最常见的笔记本.或台式机的磁盘SATA盘为例,其受南桥上ATA控制器支配,这里面传输的 ...

  2. 习题八 I/O流类库

    一.填空题 (1)在C++的输入输出系统中,最核心的对象是        流         .执行输入和输出操作的类体系叫做         流类          . (2)当实际进I/O操作时, ...

  3. 第15章-输入/输出 --- 理解Java的IO流

    (一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...

  4. Java的输入/输出

    在Java中,有输入和输出,也就是IO,然后给大家介绍一下: IO(输入/输出)是比较抽象的,看不到明显的运行效果,但输入和输出是所有程序都必需的部分.使用输入机制,允许程序读取外部(包括来自磁盘.光 ...

  5. 输入/输出(全称:Input Output)

    IO(输入/输出)是比较抽象的,看不到明显的运行效果,但输入和输出是所有程序都必需的部分. 使用输入机制,允许程序读取外部数据(包括来自磁盘.光盘等存储设备的数据.来自网络的数据). 用户输入数据:使 ...

  6. 实验 7:流类库与输入输出

    一.实验目的 理解流的概念 熟悉流类库中常用的类及成员函数用法 熟悉 I/O 格式控制方法,掌握常用格式控制 了解文件 I/O,掌握文件 I/O 基本用法 二.实验准备 结合第 11 章教材.课件,复 ...

  7. c++中的IO流(流的概念和流类库的结构,标准的输入输出流)

    流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件 c++输入输出包含以下三个方面的内容 对系统指定的标准设备的输入输出.即从键盘输入数据, ...

  8. Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

    Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...

  9. java实验系统常用类,Java的常用系统类

    Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...

最新文章

  1. Python3.8 了解的差不多了吧,Python3.9 新特性了解一下!
  2. 面试必备:CAS无锁机制
  3. element表格实现树形全选_很实用!word中全选的快捷键介绍及使用方法
  4. thymeleaf 获取yml中的值_Thymeleaf前后端传值 页面取值与js取值
  5. Apache vs Nginx vs Tomcat vs JBoss vs Jetty
  6. 数组中只出现一次的数
  7. paip.sql2008 客户端软件绿色版V319
  8. Intellij IDEA快捷键大全(超详细)
  9. 客制化键盘各部件介绍(客制化入门必看)
  10. 如何在WIN10/SERVER2016上安装MSSQL2000数据库
  11. 【Python】爬虫爬取各大网站新闻(一)
  12. 虚拟磁盘管理 无法启动服务器,运行虚拟磁盘管理器提示"RPC服务器不可用"分析与解决方案...
  13. 6-2 车的不同行为 (10 分)
  14. pandas中的.astype()使用规范问题——以.astype(int)的一种str类型数据转int类型数据报错为例
  15. 用pytorch官网命令 安装pytorch1.10.1+CUDA11.1报错
  16. 【组合逻辑电路】如何从真值表中求解逻辑函数?
  17. STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片
  18. jdk1.8、jre1.8运行环境下载安装与环境配置
  19. 如何创建一个个人博客
  20. There are multiple modules with names that only differ in casing.This can lead to unexpected behavi

热门文章

  1. Rect 的相关操作
  2. Web 设计与开发终极资源大全
  3. 有100个GMAIL的邀请,需要的来信就可以啦。
  4. [Linux命令]dd
  5. HDU 1301 - Jungle Roads( Prim求最小生成树 )
  6. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件
  7. iOS小白之路...iOS中基础控件的使用
  8. 《设计模式详解》行为型模式 - 解释器模式
  9. 【Java从0到架构师】Nginx 拓展 - HTTPS支持、缓存、Http请求防盗链、限流、高可用(Keepalived)
  10. 【Java从0到架构师】Maven