【苏大C++第二次考试】

news/2025/2/3 8:54:01/

考试说明

  1. 考试时间:合计130分钟。选择题部分40分钟交卷,允许提前交卷。
  2. 考试过程中,不能连接未经指定网站或服务器。
  3. 闭卷考试部分,不能查阅任何类型的参考资料。
  4. 开卷考试部分,可以查阅纸质文档,不能查阅任何类型的电子文档。
  5. 考试过程中,不得使用任何形式的电子存储设备,不可使用手机。
  6. 违反上述2-5条者,视为考试作弊。

选择题答题方式(30分,闭卷,严禁使用vs编程环境进行尝试

  1. 打开浏览器,在地址栏中输入http://192.168.125.3,点击相应链接进入登录页面。
  2. 按要求输入两遍自己的学号。
  3. 点击“登录”按钮即可进入答题页面。如考试尚未开始,系统会进入等待页面并倒计时。考试开始时间到,系统会自动进入答题页面。
  4. 在页面左侧选择题号,页面右侧即会显示相应的题目。考生只需点击选择相应的选项。
  5. 答题过程中如关闭浏览器或出现系统故障导致计算机重新启动,系统不会丢失之前已经完成的题目的答案。考生可以打开浏览器重新登录并继续考试。
  6. 答题完成后,点击“交卷”按钮即可完成交卷。交卷后不能再次登录系统继续考试。
  7. 考试结束时间到,系统会自动收卷。

编程题提交方式(70分,开卷)

  1. 提交前务必关闭vs2005vs2008或vs2010编程环境。
  2. 所有源程序内容必须仅包含在一个源程序文件(CPP文件)中。
  3. 在浏览器的地址栏中输入http://192.168.125.3,点击相应链接进入提交页面。
  4. 按要求输入两遍自己的学号。
  5. 点击“选择文件”按钮,选择自己的源程序文件。点击“提交”按钮提交。
  6. 如提交成功,系统会显示相关信息。如果提交不成功,请重复步骤16-18。
  7. 提交成功后,可点击“查看内容”按钮检查提交的内容。


按以下要求编写程序

  1. 串口是计算机中常见的用于和外部设备进行连接和通信的一种端口。请各位考生从课程信息发布网站下载数据文件input.txt,然后将数据文件手动保存在D盘根目录下。该文件以行为单位保存了若干计算机的配置数据。每行数据中各个字段的信息如下:
    1. 第1列表示计算机的CPU主频,double类型;
    2. 第2列表示计算机的内存容量,int类型;
    3. 第3列表示计算机的串口编号,int类型;
    4. 第4列表示计算机的串口通讯速率,int类型;
  2. 定义串口(CComPort)类

串口类CComPort定义如下。请分别实现该类所有的成员函数和友元函数。

class CComPort

{

private:

int m_ID; //串口编号,必须为正整数

int m_Baud;//串口通讯速率,必须为正整数

public:

CComPort(int ID,  int Baud); //有参构造函数。如ID不为正整数则m_ID初始化为1;如Baud不为正整数则m_Baud初始化为1200

int GetBaud(void)const; //获取串口通讯速率

friend CComPort& operator++(CComPort& Data); //前++,表示串口通讯速率增加100

/*

流输出符重载

串口编号占5列,右对齐左补空

串口通讯速率占8列,右对齐左补空

*/

friend ostream& operator<<(ostream& Out, const CComPort& Data);

};

  1. 定义计算机(CComputer)类

计算机类CComputer类定义如下。请分别实现该类所有的成员函数和友元函数。

class CComputer

{

private:

double m_CPU; //CPU主频,必须为正数

int m_Memory; //内存容量,必须为正数

CComPort m_Port; //计算机的串口

public:

CComputer(double CPU, int Memory, int ID, int Baud); //有参构造函数。如输入的CPU不为正数则m_CPU初始化为3.0; 如输入的Memory不为正数则m_Memory初始化为4

CComPort GetComPort(void)const; //获取计算机串口数据的常成员函数

CComputer& operator++(); //前++。串口部分增量规则与CComPort类的前++相同,CPU主频m_CPU增大1.0,内存容量m_Memory增大2

CComputer operator++(int); //后++。自增规则与前++相同

/*

流输出符重载

串口部分输出格式与CComPort类相同

CPU主频占8列,小数部分保留2位,右对齐左补空

内存容量占5列,右对齐左补空

*/

friend ostream& operator<<(ostream& Out, const CComputer& Data);

};

上述CComputer类构造函数中如不指定各参数的值,则默认取值为:CPU=3.5,Memory=4,ID=1,Baud=115200

  1. 在上述两个类定义的基础上,依次定义如下函数:
    1. 编写函数ReadFile,从前面所述文本文件中完成数据的读入,结果存放在向量A中。
    2. 编写函数DeleteData,用于把向量A中串口通讯速率小于等于X的计算机数据删除,如不指定X的值,则X默认等于9600。
    3. 编写函数WriteFile。用于将把向量A中所有计算机数据保存到d:\res.txt文本文件中。
  2. main函数的具体内容如下:

int main()

{

vector<CComputer> A;

A = ReadFile("d:\\input.txt"); //读取文件,构成向量A

DeleteData(A); //删除向量A中串口通讯速率小于等于9600的计算机数据

WriteFile("d:\\res.txt", A); //将向量A中的计算机数据写入指定文件

CComputer c1;

cout << c1 << endl;

cout << c1++ << endl;

cout << ++c1 << endl;

return 0;

}

注意:不得修改上述两个类的定义以及主程序!每修改一处,则总分扣2分


编程题评分标准(说明:编程题成绩满分为70

大项

子项

评分项

应得分

实得分

结果(60分)

CComPort类构造函数

4

CComPort类GetBaud函数

2

CComPort类前++重载

5

CComPort类流输出运算符重载

5

CComputer类构造函数

7

CComputer类前++重载

6

CComputer类后++重载

6

CComputer类流输出运算符重载函数正确

6

ReadFile函数

6

DeleteData函数

8

WriteFile函数

5

程序运行异常中断、死循环或无任何结果

-10

类和main函数修改扣分

(每修改一处扣2分,总计不超过10分)

-10

缩进对齐(4分)

正确运用缩进对齐规则

4

有缩进对齐但不完全符合要求

2

没有使用缩进对齐规则

0

函数说明(4分)

有较完整的函数说明

4

有函数说明,但不够完整

2

没有函数说明

0

注释(2分)

有注释

2

没有注释

0

总分(70分)


#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>using namespace std;class CComPort
{
private:int m_ID;		//���ڱ�ţ�����Ϊ������int m_Baud;//����ͨѶ���ʣ�����Ϊ������public:CComPort(int ID,  int Baud);	//�вι��캯������ID��Ϊ��������m_ID��ʼ��Ϊ1����Baud��Ϊ��������m_Baud��ʼ��Ϊ1200int GetBaud(void)const;			//��ȡ����ͨѶ����friend CComPort& operator++(CComPort& Data);	//ǰ++����ʾ����ͨѶ��������100/*��������������ڱ��ռ5�У��Ҷ����󲹿�����ͨѶ����ռ8�У��Ҷ����󲹿�*/friend ostream& operator<<(ostream& Out, const CComPort& Data);
};CComPort::CComPort(int ID,  int Baud){if(ID<=0){ID=1;}if(Baud<=0){Baud=1200;}this->m_ID=ID;this->m_Baud=Baud;
}int CComPort::GetBaud(void)const{return this->m_Baud;
}CComPort& operator++(CComPort& Data){Data.m_Baud+=100;return Data;
}ostream& operator<<(ostream& Out, const CComPort& Data){/*��������������ڱ��ռ5�У��Ҷ����󲹿�����ͨѶ����ռ8�У��Ҷ����󲹿�*/Out<<setw(5)<<right<<setfill(' ')<<Data.m_ID;Out<<setw(8)<<right<<setfill(' ')<<Data.m_Baud;return Out;
}class CComputer
{
private:double m_CPU;		//CPU��Ƶ������Ϊ����int m_Memory;			//�ڴ�����������Ϊ����CComPort m_Port;	//������Ĵ���public:CComputer(double CPU, int Memory, int ID, int Baud);	//�вι��캯�����������CPU��Ϊ������m_CPU��ʼ��Ϊ3.0; �������Memory��Ϊ������m_Memory��ʼ��Ϊ4CComPort GetComPort(void)const;	//��ȡ������������ݵij���Ա����CComputer& operator++();			//ǰ++�����ڲ�������������CComPort���ǰ++��ͬ��CPU��Ƶm_CPU����1.0���ڴ�����m_Memory����2CComputer operator++(int);		//��++������������ǰ++��ͬ/*��������������ڲ��������ʽ��CComPort����ͬCPU��Ƶռ8�У�С�����ֱ���2λ���Ҷ����󲹿��ڴ�����ռ5�У��Ҷ����󲹿�*/friend ostream& operator<<(ostream& Out, const CComputer& Data);
};CComputer::CComputer(double CPU=3.5, int Memory=4, int ID=1, int Baud=115200):m_Port(ID,Baud){//�вι��캯�����������CPU��Ϊ������m_CPU��ʼ��Ϊ3.0; �������Memory��Ϊ������m_Memory��ʼ��Ϊ4//����CComputer�๹�캯�����粻ָ����������ֵ����Ĭ��ȡֵΪ��CPU=3.5��Memory=4��ID=1��Baud=115200��if(CPU<=0){CPU=3.0;}if(Memory<=0){Memory=4;}this->m_CPU=CPU;this->m_Memory=Memory;}CComPort  CComputer::GetComPort(void)const{return m_Port;}CComputer&  CComputer::operator++(){//ǰ++�����ڲ�������������CComPort���ǰ++��ͬ��CPU��Ƶm_CPU����1.0���ڴ�����m_Memory����2++(this->m_Port);this->m_CPU+=1.0;this->m_Memory+=2;return *this;}CComputer  CComputer::operator++(int){CComputer c(*this);++(this->m_Port);this->m_CPU+=1.0;this->m_Memory+=2;return c;}ostream& operator<<(ostream& Out, const CComputer& Data){/*��������������ڲ��������ʽ��CComPort����ͬCPU��Ƶռ8�У�С�����ֱ���2λ���Ҷ����󲹿��ڴ�����ռ5�У��Ҷ����󲹿�*/Out<<Data.m_Port;Out<<setw(8)<<fixed<<setprecision(2)<<right<<setfill(' ')<<Data.m_CPU;Out<<setw(5)<<right<<setfill(' ')<<Data.m_Memory;return Out;}/*1)	��д����ReadFile����ǰ�������ı��ļ���������ݵĶ��룬������������A�С�*/vector<CComputer>  ReadFile(string path){/*1)	��1�б�ʾ�������CPU��Ƶ��double����;
2)	��2�б�ʾ��������ڴ�������int���ͣ�
3)	��3�б�ʾ������Ĵ��ڱ�ţ�int����;
4)	��4�б�ʾ������Ĵ���ͨѶ���ʣ�int����;
*/ifstream ifile(path);if(!ifile){cout<<"dakaishibai"<<endl;exit(0);}vector<CComputer> A;while(!ifile.eof()){double CPU;int Memory;int ID;int Baud;ifile>>CPU>>Memory>>ID>>Baud;A.push_back(CComputer(CPU,Memory,ID,Baud));}ifile.close();return A;}/*
2)	��д����DeleteData�����ڰ�����A�д���ͨѶ����С�ڵ���X�ļ��������ɾ�����粻ָ��X��ֵ����XĬ�ϵ���9600��
*/
void DeleteData(vector<CComputer> &a,int X=9600){for(vector<CComputer>::iterator it=a.begin();it!=a.end();){if(it->GetComPort().GetBaud()<=9600){it=a.erase(it);}else{it++;}}
}/*
3)	��д����WriteFile�����ڽ�������A�����м�������ݱ��浽d:\res.txt�ı��ļ��С�
*/
void WriteFile(string path, const vector<CComputer> &a){ofstream ofile(path);if(!ofile){cout<<"dakaishibai"<<endl;exit(0);}for(int i=0;i<a.size();i++){ofile<<a[i]<<endl;}ofile.close();
}
int main()
{vector<CComputer> A;A = ReadFile("d:\\input.txt");	//��ȡ�ļ�����������ADeleteData(A);		//ɾ������A�д���ͨѶ����С�ڵ���9600�ļ��������WriteFile("d:\\res.txt", A);	//������A�еļ��������д��ָ���ļ�CComputer c1;cout << c1 << endl;cout << c1++ << endl;cout << ++c1 << endl;return 0;
}

考试被扣了6分,因为CComputer构造函数定义有问题——我没有直接冒号定义m_port!这意味着我给CComPort的构造函数设置了默认值进行补救。实际上这只是对CComputer的约束,不应该涉及到CComPort。 


http://www.ppmy.cn/news/596076.html

相关文章

MATLAB算法实战应用案例精讲-【自动驾驶】FMCW 雷达

目录 前言 几个高频面试题目 脉冲雷达和连续波雷达的区别特点,优缺点,以及应用场景?

GDAL 标记图像连接区域

文章目录 一、简介1.1原始算法1.2修改标记算法二、实现代码三、实现效果参考资料一、简介 1.1原始算法 标记图像连接区域的算法有很多,这里主要实现了一种基于扫描线的改进算法(Suzuki算法),原始算法使用了一种决策树策略,即对二进制图像b(x,y)进行重复传递,在前向和后向…

微服务 – Spring Cloud – Eureka – Discovery 服务发现

如何发现服务呢? 服务注册到 Eureka 集群中。需要通过 RestTemplate和@LoadBalanced 实现服务发现调用(http) 。 在上一篇笔记中,order 服务 通过 estTemplate和@LoadBalanced 实现调用 payment服务. 是通过注册在 Eureka 集群中的服务名称来调用的。 那么如何发现这些服务…

使用 Debian、Docker 和 Nginx 部署 Web 应用

前言 本文将介绍基于 Debian 的系统上使用 Docker 和 Nginx 进行 Web 应用部署的过程。着重介绍了 Debian、Docker 和 Nginx 的安装和配置。 第 1 步&#xff1a;更新和升级 Debian 系统 通过 SSH 连接到服务器。更新软件包列表&#xff1a;sudo apt update升级已安装的软件…

leetcode1884. 鸡蛋掉落-两枚鸡蛋.动态规划-java

鸡蛋掉落-两枚鸡蛋 leetcode1884. 鸡蛋掉落-两枚鸡蛋题目描述解题思路代码演示 动态规划代码演示 动态规划专题 leetcode1884. 鸡蛋掉落-两枚鸡蛋 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/egg-drop-with-2-eggs-a…

网络安全那些梗

逢年过节回家妈妈都会带着我这个好大儿子走亲访友串门炫耀&#xff1a;“这是我家大儿子啊&#xff0c;可出息了&#xff0c;现在在一线城市做黑客啊。” “妈&#xff01;不是黑客&#xff0c;是白帽黑客&#xff0c;网络安全工程师…”

微软成功抵御峰值高达2.4Tbps的DDoS攻击

整理 | 祝涛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 微软表示&#xff0c;他们成功抵御了一场发生于8月份的2.4Tbps分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;这次攻击超过了去年针对亚马逊Web服务的2.3Tbps最大攻击。 这场攻击持续了…

小米笔记本UEFI关闭安全启动

制作了一个UEFI启动U盘&#xff0c;在我的小米笔记本上测试&#xff0c;提示SecureBoot失败&#xff0c;看来是要把安全启动关闭。 网上查询&#xff0c;关闭安全启动的方法如下&#xff1a; 开机按F2进入UEFI&#xff0c;进入安全&#xff0c;安全启动的选项默认是灰的&…