实验8 群体类、流类库与输入/输出(4学时)
一、 实验目的
- 了解链表类的定义与实现,学习其使用方法;
- 了解栈类的定义与实现,学习其使用方法;
- 了解队列类的定义与实现,学习其使用方法;
- 了解C++标准模板库STL的使用方法。
- 熟悉流类库中常用的类及其成员函数的用法。
- 学习标准输入输出及格式控制;
- 学习对文件的应用方法(二进制文件、文本文件)。
二、 实验任务
- 编写程序link.h实现教材中例9.6的链表类。在测试程序lab9_1.cpp中定义两个整型链表A和B,分别插入5个元素,然后把B中的元素加入A的尾部。
(题解:实验8.1 链表类的定义与实现) - 编写程序queue.h,用链表实现队列(或栈)类。在测试程序lab9_2.cpp中定义一个整型队列(或栈)对象,插入5个整数,压入队列(或栈),再依次取出并显示出来。
(题解:实验8.2 队列类的定义与实现) - 使用C++标准模板库(STL)中的双向队列类(deque)重新实现上一小题。
(题解:实验8.3 C++标准模板库(STL)中的双向队列类(deque)) - (选做)定义course(课程)类,有属性:课程名char name[21]、成绩short score;在实验七中的student类中增加属性:所修课程courses,为课程类对象的链表。在测试程序中测试这个类。学生类与课程类关系如图9-1所示。
图9-1 类图 - 观察以下程序的输出,注意对输出格式的控制方法;
//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);)
}
- 编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。
- (选做)使用实验十中的学生类数组,输入数据,显示出来,使用I/O流把此数组的内容写入磁盘文件,再显示出文件内容。
三、 实验步骤
- 参照教材中链表类LinkedList的定义(教材中的例程9-6.h),给出其实现,注意合理使用Node类(教材中的例程9-3.h)的成员函数。在测试程序中定义整型链表A和B,分别插入5个元素,使用循环语句显示链表中的元素,然后把B中的元素加入A的尾部,再显示出来。
- 队列类的特点就是其元素的操作顺序为先入先出(FIFO),用上题中的链表类实现队列类,用链表类的成员函数实现队列类的成员函数,在测试程序中定义一个整型队列对象,观察队列类中元素先入先出的特点。
- 在程序中包含语句#include ,使用deque类的方法push_back()、empty()、pop_front()完成上一小题的要求。程序名:lab9_3.cpp。
- 观察实验任务5题目中程序的输出,学习对输出格式的控制方法;尝试更改输出语句中的参数,以加深对输出格式的理解;
- 编写程序lab11_2.cpp使用void main(int argc, char* argv[])函数中的参数传递操作的文件名,定义ofstream 的对象对文件进行操作,使用getline成员函数读入数据,使用cout输出字符到文件。
实验8 群体类、流类库与输入/输出(4学时)相关推荐
- C++——流类库和输入/输出
前言 数据是怎么写道磁盘的? 代码里面我们一个读写调用似乎就能将数据从磁盘读写.仿佛代码是直接和磁盘打交道.以我们最常见的笔记本.或台式机的磁盘SATA盘为例,其受南桥上ATA控制器支配,这里面传输的 ...
- 习题八 I/O流类库
一.填空题 (1)在C++的输入输出系统中,最核心的对象是 流 .执行输入和输出操作的类体系叫做 流类 . (2)当实际进I/O操作时, ...
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
- Java的输入/输出
在Java中,有输入和输出,也就是IO,然后给大家介绍一下: IO(输入/输出)是比较抽象的,看不到明显的运行效果,但输入和输出是所有程序都必需的部分.使用输入机制,允许程序读取外部(包括来自磁盘.光 ...
- 输入/输出(全称:Input Output)
IO(输入/输出)是比较抽象的,看不到明显的运行效果,但输入和输出是所有程序都必需的部分. 使用输入机制,允许程序读取外部数据(包括来自磁盘.光盘等存储设备的数据.来自网络的数据). 用户输入数据:使 ...
- 实验 7:流类库与输入输出
一.实验目的 理解流的概念 熟悉流类库中常用的类及成员函数用法 熟悉 I/O 格式控制方法,掌握常用格式控制 了解文件 I/O,掌握文件 I/O 基本用法 二.实验准备 结合第 11 章教材.课件,复 ...
- c++中的IO流(流的概念和流类库的结构,标准的输入输出流)
流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件 c++输入输出包含以下三个方面的内容 对系统指定的标准设备的输入输出.即从键盘输入数据, ...
- Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举
Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...
- java实验系统常用类,Java的常用系统类
Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...
最新文章
- Python3.8 了解的差不多了吧,Python3.9 新特性了解一下!
- 面试必备:CAS无锁机制
- element表格实现树形全选_很实用!word中全选的快捷键介绍及使用方法
- thymeleaf 获取yml中的值_Thymeleaf前后端传值 页面取值与js取值
- Apache vs Nginx vs Tomcat vs JBoss vs Jetty
- 数组中只出现一次的数
- paip.sql2008 客户端软件绿色版V319
- Intellij IDEA快捷键大全(超详细)
- 客制化键盘各部件介绍(客制化入门必看)
- 如何在WIN10/SERVER2016上安装MSSQL2000数据库
- 【Python】爬虫爬取各大网站新闻(一)
- 虚拟磁盘管理 无法启动服务器,运行虚拟磁盘管理器提示"RPC服务器不可用"分析与解决方案...
- 6-2 车的不同行为 (10 分)
- pandas中的.astype()使用规范问题——以.astype(int)的一种str类型数据转int类型数据报错为例
- 用pytorch官网命令 安装pytorch1.10.1+CUDA11.1报错
- 【组合逻辑电路】如何从真值表中求解逻辑函数?
- STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片
- jdk1.8、jre1.8运行环境下载安装与环境配置
- 如何创建一个个人博客
- There are multiple modules with names that only differ in casing.This can lead to unexpected behavi
热门文章
- Rect 的相关操作
- Web 设计与开发终极资源大全
- 有100个GMAIL的邀请,需要的来信就可以啦。
- [Linux命令]dd
- HDU 1301 - Jungle Roads( Prim求最小生成树 )
- 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件
- iOS小白之路...iOS中基础控件的使用
- 《设计模式详解》行为型模式 - 解释器模式
- 【Java从0到架构师】Nginx 拓展 - HTTPS支持、缓存、Http请求防盗链、限流、高可用(Keepalived)
- 【Java从0到架构师】Maven