Microsoft Word - 输入输出流类库编程练习题 - 首都

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

学生学号
学生基本信息
200410001 李建国,男

⑶ 分课程成绩数据索引文件 XXX.inx 用于保存一门课程的所有学生成绩的索引信 息,每个学生的成绩索引信息由学号和成绩等级组成。每门课程有一个成绩数据
索引文件,文件名 XXX 由课程名确定。例如: 文件名: “高等数学.inx”
学生学号
成绩等级
… 2. 保存学生成绩数据的文件的种类和结构、内容如下
⑴ 课程信息索引文件 courses.inx 用于保存所有课程的索引信息,每门课程的索
引信息由课程索引序号和课程名组成。例如:
课程序号
课程名
1
高等数学
2
大学物理
3
大学英语
4
C 语言程序设计
5
数据结构
… 注意,课程门数不得少于 5 门。
⑵ 学生信息文件 student.inx 用于保存所有学生的索引信息,每个学生的索引信息 由学号和学生基本信息(姓名、性别)组成。例如:
难度等级:****
-3-
首都师范大学信息工程学院
面向对象习题
输入输出流类库
8.4 编写一个命名为 reverse 的程序,该程序运行时能通过命令行“reverse 文件名”将文 件名指定的英文纯文本文件以读/写模式打开,并将文件中每一行中的所有的字符反置 后写回原文件。例如:一个命名为“hello.cpp”文本文件的内容为: #include<iostream.h> Int main() { cout << “Hello world!\n”; return 0; } 则在执行了 reverse hello.cpp 命令后 文件 hello.cpp 中的内容变为: >h.maertsoi< edulcni# )(niam tni { ;"n\!dlrow ,olleH" << tuoc ;0 nruter } 当然,如果对同一文件执行两次 reverse 命令,文件将恢复原状。
200410001
C
-2-
首都师范大学信息工程学院
面向对象习题
输入输出流类库

3. 显示操作包括: ⑴ 按学号顺序输出所有学生的成绩(格式参照输入格式); ⑵ 检索输出指定学号(输入指定学号)学生的成绩; ⑶ 检索输出指定姓名(输入指定姓名)学生的成绩。
提示: 1. 建议定义映射的类模板 Map 用于保存和操作不同索引(课程索引、学生信息索引和
分课程成绩索引)。 2. 建议定义链表的类模板 List 用于构造和操作不同的索引表(课程索引表、学生信息
索引表和分课程成绩索引表) 3. 建议定义学生类 Student 用于构造和操作学生基本信息。 4. 程序的各项操作可以通过菜单结构进行选择,但输入确定基础课程的门数和课程名
称的操作应该作为程序初始化操作的一部分,而不应成为菜单的选择项。
提示: 1. 建议使用矩阵结构保存密钥,以便加密和解密操作时对字母对的位置匹配。
难度等级:***
-6-
可以按如下格式显示: 文件名: Information.txt 字符数: 4854 单词数: 853 文本行数: 56 3. 每个文件的信息显示后,提示用户是否继续统计其他文本文件,如果继续,则重复 1 和 2 中的操作。
提示: 1. 判断文本行的依据可以是每行的结尾应为‘\n’。
难度等级:*
-源自文库-
首都师范大学信息工程学院
面向对象习题
输入输出流类库
8.3 编写一个程序用于某大学的某信息专业学生的基础课成绩的录入、显示和相应数据文件 的读写。
要求:
1. 成绩的按如下顺序录入:
⑴ 在学生成绩录入之前,先通过输入确定基础课程的门数和课程名称。例如:
基础课程 1:高等数学
基础课程 2:大学物理
基础课程 3:大学英语
难度等级:**
-4-
首都师范大学信息工程学院
面向对象习题
输入输出流类库
8.5 一种防止通过英文字母频率分析解密的方法是使用加密字母对(pair)对英文文本进行加 密和解密。Playfair 密码就是一种采用这种方法的简单密码。 1. 建立这种密码的密钥的方法如下: ⑴ 首先选择一个单词或词组作为密钥单词。由于密钥单词是建立密钥的唯一依据, 因此加密和解密的双方只要知道密钥单词和密码建立方法(Playfair 密码),就 可以方便地建立唯一的密钥。 ⑵ 删除该密钥单词中的重复字母,然后,将这些字母(按组成单词的顺序)与字母 表中(除去密钥单词字母外)的其他字母(按字母排列顺序)一起组成一个 5×5 的正方形密钥矩阵。由于正方形矩阵中只有 25 个位置,所以将 I 和 J 视为同一 字母(即矩阵只包含 I 或 J)。例如,我们选择的密钥单词为 Spring,则正方形 密钥矩阵中的字母排列为:
首都师范大学信息工程学院
面向对象习题
输入输出流类库
注意:每道题的难度等级不同,*越多,难度等级越高。可以根据自己的能力,选做恰当难 度的题。
8.1 改写第五章编程练习 5.4 题的程序,使该程序在程序结束之前,先判断字典内容是否发 生了变化(单词的添加、修改、删除)。如果字典内容已经被修改,则提示是否保存修 改后的新字典;若选择保存,则将字典的全部内容写入一个纯文本文件,该文件可以命 名为 dictionary.txt。每次程序重新运行时,先尝试打开 dictionary.txt。如果该文件存 在,则打开文件,并从该文本文件中输入产生一个字典。
难度等级:**
8.2 编写一个用于统计英文纯文本文件的各项信息:文件内容的总字符数(包括标点符号), 单词个数,文本行数。
要求: 1. 提示用户输入一个扩展名为.txt 的纯文本文件名,如果指定文件存在,则打开该文
件,否则显示错误提示信息。 2. 统计文件内容的上述信息,并显示所统计的信息。信息的显示格式自行确定,例如
SPRI N GABCD EF HKL MOQT U V WX Y Z 2. 使用 Playfair 密码对单词进行的方法是对组成单词的字母从左至右顺序逐对进行。 根据被加密字母对在密钥矩阵的位置差异,加密字母对的产生方法分为三种情况: ⑴ 被加密的两个字母在密钥正方形中位置既不同列且不同行,例如被加密字母对为 AM,在正方形中找到以这两个字母为顶点的矩形为: SPRI N GABCD EF HKL MOQT U V WX Y Z 则这对字母的加密字母对应是该矩形的另一对顶点字母,即 GO。 ⑵ 被加密的两个字母在密钥正方形中位置是同列或同行,则只需要简单地对调这两 个字母,例如被加密字母对为 HK,则加密字母对为 KH;又如被加密字母对为 AF,则加密字母对为 FA。 SPRI N GABCD EF HKL MOQT U V WX Y Z ⑶ 被加密的两个字母相同,可以视为第⑵情况的特例,则被加密字母对不进行任何 变化。 注意,在加密变换过程中字母的大、小写保持不变。 例如单词 Information 根据上述加密变换规则经过 In ->Ni, if -> pk, ko -> ft, tr -> qi, im -> st, ta -> oc, ct -> tc, ci -> ic, co -> at, tn -> ui 被变换成 Npfqsotiaui 3. 解密是对加密单词的字母从右至左顺序逐对进行。方法与加密方法相同。 例如加密单词 Npfqsotiaui 经过 iu -> nt, ta -> oc, ci -> ic, ct -> tc, co -> at, ts -> mi, iq -> rt, tf -> ok, kp -> fi, iN -> nI 被还原为 Information。
基础课程 4:C 语言程序设计
基础课程 5:数据结构
… ⑵ 每个学生的成绩录入的内容包括学生的姓名、学号、性别和各门课程的成绩。成
绩按照 A, B, C, D 四个等级划分。录入格式可以参照如下: 姓名:李建国
学号:200410001 性别:男
高等数学:C
大学物理:B
大学英语:C
C 语言程序设计:B 数据结构:A
-5-
首都师范大学信息工程学院
面向对象习题
输入输出流类库
要求: 1. 编写一个命名为 encrypt 的程序,该程序运行时能通过命令行“encrypt 文件名”
将文件名指定的英文文本文件以读/写模式打开,并通过输入的密钥单词建立正方形 密钥矩阵,再使用该密钥矩阵该将文件中的文本加密后,生成一个加密文本文件。 2. 编写一个命名为 unencrypt 的程序,该程序运行时能通过命令行“unencrypt 文件 名”将文件名指定的英文文本文件以读/写模式打开,并通过输入的密钥单词建立正 方形密钥矩阵,再使用该密钥矩阵该将文件中的文本解密后,生成一个还原文本文件。
相关文档
最新文档