东南大学C卷:程序设计与算法语言试题与解析
119 浏览量
更新于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++语言基础、类和对象、函数使用以及异常处理的掌握程度,是评估学生程序设计和算法能力的有效方式。
145 浏览量
101 浏览量
392 浏览量
2022-11-28 上传
2022-05-08 上传
111 浏览量
113 浏览量
2021-10-10 上传
110 浏览量

xinkai1688
- 粉丝: 395
最新资源
- 计算机组成原理期末试题及答案(2011参考)
- 均值漂移算法深入解析及实践应用
- 掌握npm与yarn在React和pg库中的使用
- C++开发学生信息管理系统实现多功能查询
- 深入解析SIMATIC NET OPC服务器与PLC的S7连接技术
- 离心式水泵原理与Matlab仿真教程
- 实现JS星级评论打分与滑动提示效果
- VB.NET图书馆管理系统源码及程序发布
- C#实现程序A监控与自动启动机制
- 构建简易Android拨号功能的应用开发教程
- HTML技术在在线杂志中的应用
- 网页开发中的实用树形菜单插件应用
- 高压水清洗技术在储罐维修中的关键应用
- 流量计校正方法及操作指南
- WinCE系统下SD卡磁盘性能测试工具及代码解析
- ASP.NET学生管理系统的源码与数据库教程