东南大学C卷:程序设计与算法语言试题与解析
22 浏览量
更新于2024-08-04
收藏 97KB DOC 举报
"程序设计及算法语言C卷是东南大学吴健雄学院的一门课程的考试试卷,主要测试学生对C语言程序设计和算法的理解。试卷包括闭卷考试部分,总分为60分,另外还有上机编程30分以及平时成绩10分。试题涵盖了简答题和程序阅读与修改题,旨在考察学生对于类的定义、函数的使用以及异常处理等C++核心概念的掌握。
在简答题部分,题目主要涉及了类的定义和成员变量的声明:
1. 类Circle的定义中,使用了`register`和`auto`关键字,这两个在C++中并不是合法的存储类别修饰符。`register`通常用于告诉编译器尝试将变量存储在寄存器中以提高速度,但在这里不能用于类的数据成员。而`auto`在C++中用于变量声明,表示由编译器推断类型,但不能用于类的成员声明。正确的定义应去除这两个关键字。
2. 类Figure的定义中,析构函数`~Figure()`接受了一个布尔参数,这是不常见的。通常析构函数不接受任何参数,且在C++中,析构函数的主要作用是清理对象创建时分配的资源。如果需要特定行为,可以考虑使用带有参数的构造函数或重载函数,而不是析构函数。
3. 函数`swap(double d1, double d2)`用来交换两个双精度浮点数的值。然而,由于`d1`和`d2`是按值传递的,函数内部的修改不会影响到调用者中的原始变量。为了实现交换,需要使用引用或者指针。正确的函数定义应该是`void swap(double &d1, double &d2)`,这样函数内的修改会直接影响到传入的变量。
程序阅读与修改题部分,主要考察的是C++的异常处理。题目给出了一个自定义异常类ZeroExcep,当除数为0时抛出该异常。程序中使用`try-catch`结构捕获异常,打印出异常信息。异常处理部分的代码如下:
```cpp
try {
cout << "5.0/2.0=" << divide(5.0, 2.0) << endl;
cout << "7.0/0.0=" << divide(7.0, 0.0) << endl;
cout << "9.0/2.0=" << divide(9.0, 2.0) << endl;
}
catch (ZeroExcepze) {
cout << ze.what() << endl;
}
```
当调用`divide(7.0, 0.0)`时,由于除数为0,会抛出ZeroExcep异常,程序进入对应的`catch`块,打印出异常信息“被0除异常”。其他两行正常执行,输出相应的除法结果。
综合来看,这个考试试卷全面地检查了学生对于C++语言基础、类和对象、函数使用以及异常处理的掌握程度,是评估学生程序设计和算法能力的有效方式。
2022-05-08 上传
2022-05-05 上传
2022-06-20 上传
2021-10-10 上传
2022-07-11 上传
2007-08-23 上传
2022-05-30 上传
2022-06-21 上传
xinkai1688
- 粉丝: 373
- 资源: 8万+
最新资源
- 开源通讯录备份系统项目,易于复刻与扩展
- 探索NX二次开发:UF_DRF_ask_id_symbol_geometry函数详解
- Vuex使用教程:详细资料包解析与实践
- 汉印A300蓝牙打印机安卓App开发教程与资源
- kkFileView 4.4.0-beta版:Windows下的解压缩文件预览器
- ChatGPT对战Bard:一场AI的深度测评与比较
- 稳定版MySQL连接Java的驱动包MySQL Connector/J 5.1.38发布
- Zabbix监控系统离线安装包下载指南
- JavaScript Promise代码解析与应用
- 基于JAVA和SQL的离散数学题库管理系统开发与应用
- 竞赛项目申报系统:SpringBoot与Vue.js结合毕业设计
- JAVA+SQL打造离散数学题库管理系统:源代码与文档全览
- C#代码实现装箱与转换的详细解析
- 利用ChatGPT深入了解行业的快速方法论
- C语言链表操作实战解析与代码示例
- 大学生选修选课系统设计与实现:源码及数据库架构