不使用头文件string和vector,本实验要求使用一个c++程序实现以下功能(using namespace std): (1) 实现字符串的基本操作。 (2) 设计程序,输入两个字符串,并比较这两个字符串是否匹配。 (3) 设计程序,利用数组实现两个矩阵的乘法。
时间: 2024-10-25 10:15:41 浏览: 18
要在C++中实现上述功能而不使用`<string>`和`<vector>`库,你需要手写一些基本的数据结构以及它们的相关操作。以下是简化的代码示例:
1. **字符串的基本操作** (无需`std::string`):
```cpp
#include <iostream>
#include <cstring>
// 定义字符数组表示字符串
class String {
public:
char data[100];
int length;
// 构造函数和赋值
String(const char* str) {
strncpy(data, str, sizeof(data) - 1);
length = strlen(data);
}
// 比较两个字符串
bool equals(String other) const {
return strcmp(data, other.data) == 0;
}
// 打印字符串
void print() {
for (int i = 0; i < length; i++) {
std::cout << data[i];
}
std::cout << "\n";
}
};
// 示例用法
String s1("Hello");
s1.print();
String s2("World");
if (s1.equals(s2)) {
std::cout << "Strings match.\n";
} else {
std::cout << "Strings do not match.\n";
}
```
2. **矩阵乘法** (使用数组而非`std::vector`):
```cpp
const int ROWS = 3;
const int COLS = 3;
class Matrix {
private:
int arr[ROWS][COLS];
public:
// 初始化矩阵
void init(int r, int c, int values[]) {
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
arr[i][j] = values[i * c + j];
}
}
}
// 矩阵乘法 (仅适用于方阵)
Matrix multiply(Matrix& other) {
if (COLS != other.ROWS) {
throw std::invalid_argument("Matrix multiplication is only supported between matrices of compatible sizes.");
}
Matrix result(ROWS, other.COLS, 0);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < other.COLS; j++) {
for (int k = 0; k < COLS; k++) {
result.arr[i][j] += arr[i][k] * other.arr[k][j];
}
}
}
return result;
}
// 打印矩阵
void print() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << "\n";
}
}
};
// 示例用法
Matrix m1(ROWS, COLS, {1, 2, 3, 4, 5, 6, 7, 8, 9});
Matrix m2(ROWS, COLS, {9, 8, 7, 6, 5, 4, 3, 2, 1});
m1.init(ROWS, COLS, {1, 2, 3, 4, 5, 6, 7, 8, 9}); // 另一种初始化方式
Matrix product = m1.multiply(m2);
product.print();
```
阅读全文