【c++】2020大一下期中考试

考后总结:

  • 凡是open文件必检查是否打开,必close文件
  • 关于sort函数中的布尔型函数cmp:sort是严格弱序排列,即cmp在=时应该返回false,不然会断言错
  • 统计时用map,捯饬一个存pair结构的数据的vector再sort(map不可以sort),挺麻烦的。如果自己写个排序函数,也嫌麻烦,不妨一开始就用数组搞桶排序。
  • 一个独立的功能尽量用函数实现,并且尽可能减少代码冗余

考试原卷文档:

面向对象与C++程序设计
第1次考试试卷
2020年4月23日

题目说明:

请各位考生从老师处获取数据文件info.txt,然后将该数据文件手动保存在D盘根目录下。该文件中以文本形式存储若干个英文单词,单词与单词之间用空格分开。单词中可能包括大小写字母和其余符号(所有的字符一定是合法的ASCII字符,不存在中文字符)。

请按要求依次完成如下操作:

1、 编写一个函数readInfo。读取info.txt文件中的所有单词,并将它们存放在string类型的words向量中。
2、 编写一个函数delInfo,将words向量中长度大于8或小于3的单词删除。
3、 编写一个重载函数delInfo,用于从words向量中删除包含指定字符的元素。
4、 编写一个函数showInfo显示第2步中得到的words向量的前10个单词,如果不足10个单词则全部显示,显示时每个单词占10列,右对齐。如果调用showInfo时不传递第2个参数则每输出5个单词换一行,否则由传入的第2个参数控制换行的数量。
5、 编写一个函数filterInfo,从words中筛选出包含大小写字母以外字符的单词并构成向量,最后返回该向量。
6、 编写一个函数sortInfo,对第4步得到的向量进行排序,排序规则如下:  首先按照单词长度从小到大排序;
 长度相等时,按照ASCII值从小到大排序。  长度相等按照ASCII值从小到大排序时,如果是英文字母符号不区分字母大小写。
例如"hut."和"Roy."长度都是4,需要按照字典序排序,虽然’R’的ASCII小于’h’,但不区分大小写时’R’应该排在’h’的后面,因此"hut."排在"Roy."的前面。
7、 编写一个函数writeInfo,将排序后的结果写入到D盘的文本文件result.txt中,单词与单词之间用空格分开,每10个单词换一行。
8、 编写一个函数getTopmostChar,找出第5步得到向量中出现次数最多的字符,如果存在多个最多,请返回ASCII码值最小的字符。

main函数如下:

int main()
{
   
	vector<string> words;
	vector<string> specialWords;
	if (readInfo("d:\\info.txt", words) == -1)
	{
   
		cout << "打开d:\\info.txt文件失败" << endl;
	}
	else
	{
   
		cout << "读取到" << words.size() << "个单词" << endl;
	}
	cout << "删除了长度大于8和小于3的单词" << delInfo(words) << "个" << endl;
	cout << "删除了包含字符','的单词" << delInfo(words,',') << "个" << endl;
	cout << "删除后的前10个单词是:\n";
	showInfo(words, 6);
	specialWords = filterInfo(words);
	cout << "\n筛选出"<< specialWords.size()<<"个单词,前10个单词是:"<<endl;
	showInfo(specialWords);
	
	sortInfo(specialWords);
	cout << "\n排序后的前10个单词是:\n";
	showInfo(specialWords);
	writeInfo("d:\\result.txt", specialWords);
	char ch = getTopmostChar(specialWords);
	cout << "\nspecialWords中出现次数最多的字符是" << ch << endl;
	return 0;
}

标准答案:
在这里插入图片描述

在这里插入图片描述

代码:

#include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<sstream>
#include<iomanip>
#include <algorithm>
#include<ctype.h>
#include<map>
using namespace std;

//编写一个函数readInfo。读取info.txt文件中的所有单词,并将它们存放在string类型的words向量中。
int readInfo(string address, vector<
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值