实验项目
实现安全计数器:实现 Counter 结构,确保计数范围为 0~100。
实验要求:
1、使用 struct 封装计数值value;
2、计数器初值为 0;
3、increment() 方法增加计数,但不能超过 100;
4、decrement() 方法减少计数,但不能小于 0;
5、get_count() 方法返回当前计数值;
6、释放计数器。
7、编写测试代码,注意测试边界条件。
以上1-7用c语言编写
8、用c++构造计数器类,同样包含上述功能,无需测试
提交:
1. 代码
2. 测试用例
3. 过程及结果截图
目录
实验项目
实验步骤、实验结果及结果分析:
1. 代码
1、使用 struct 封装计数值value;
2、计数器初值为 0;
3、increment() 方法增加计数,但不能超过 100;
4、decrement() 方法减少计数,但不能小于 0;
5、get_count() 方法返回当前计数值;
6、释放计数器。
2. 测试用例
7、编写测试代码。
8、用c++构造计数器类,同样包含上述功能
3. 过程及结果截图
实验步骤、实验结果及结果分析:
1. 代码
1、使用 struct 封装计数值value;
typedef struct {
int value;
} Counter;
2、计数器初值为 0;
Counter* create_counter() {
Counter* counter = (Counter*)malloc(sizeof(Counter));
if (counter != NULL) {
counter->value = 0; // 初始化为0
}
return counter;
}
3、increment() 方法增加计数,但不能超过 100;
void increment(Counter* counter) {
if (counter->value < 100) {
counter->value++;
}
}
4、decrement() 方法减少计数,但不能小于 0;
void decrement(Counter* counter) {
if (counter->value > 0) {
counter->value--;
}
}
5、get_count() 方法返回当前计数值;
int get_count(Counter* counter) {
return counter->value;
}
6、释放计数器。
void destroy_counter(Counter* counter) {
free(counter);
}
2. 测试用例
7、编写测试代码。
// 创建计数器
Counter* counter = create_counter();
// 测试初始值
printf("Initial count: %d \n", get_count(counter));
// 测试增加到上限
for (int i = 0; i < 105; i++) {
increment(counter);
}
printf("After 105 increments: %d \n", get_count(counter));
// 测试减少到下限
for (int i = 0; i < 105; i++) {
decrement(counter);
}
printf("After 105 decrements: %d \n", get_count(counter));
// 测试边界附近的单个操作
increment(counter);
printf("After increment at 0: %d \n", get_count(counter));
increment(counter);
printf("After increment at 0: %d \n", get_count(counter));
decrement(counter);
printf("After decrement at 1: %d \n", get_count(counter));
decrement(counter);
printf("After decrement at 1: %d \n", get_count(counter));
decrement(counter);
printf("After decrement at 1: %d \n", get_count(counter));
// 边界精确测试
for (int i = 0; i < 100; i++) increment(counter);
printf("After exactly 100 increments: %d\n", get_count(counter));
// 混合操作测试
for (int i = 0; i < 200; i++) {
if (i % 3 == 0) decrement(counter);
else increment(counter);
}
printf("After mixed 200 operations: %d\n", get_count(counter));
// 释放计数器
destroy_counter(counter);
8、用c++构造计数器类,同样包含上述功能
#include <iostream>
class Counter {
private:
int value;
public:
// 1. 使用类封装计数值value
// 2. 构造函数初始化计数器为0
Counter() : value(0) {}
// 3. increment()方法增加计数(不超过100)
void increment() {
if (value < 100) {
value++;
}
}
// 4. decrement()方法减少计数(不小于0)
void decrement() {
if (value > 0) {
value--;
}
}
// 5. get_count()方法返回当前计数值
int get_count() const {
return value;
}
// 6. 析构函数自动释放资源
~Counter() = default;
};
3. 过程及结果截图
计数器程序运行结果符合预期,边界条件和操作逻辑都实现。