用c++声明一个类 String,其数据成员为 char head[100],构造函数 String(char *Head)实现 head 的初始化,成员函数 void reverse()实现 head 内字符串的 逆序存放,成员函数
时间: 2023-06-05 17:05:58 浏览: 114
char* getHead() 返回 head 数组的地址。
这是一个简单的答案:
```
#include <cstring>
class String {
public:
char head[100];
String(char* Head) {
strcpy(head, Head);
}
void reverse() {
int len = strlen(head);
for (int i = 0, j = len - 1; i < j; i++, j--) {
char temp = head[i];
head[i] = head[j];
head[j] = temp;
}
}
char* getHead() {
return head;
}
};
```
相关问题
声明一个类 String,其数据成员为 char head[100],构造函数 String(char *Head)实现 head 的初始化,成员函数 void reverse()实现 head 内字...
好的,我理解了你的问题。以下是声明一个类 String,其数据成员为 char head[100],构造函数 String(char *Head)实现 head 的初始化,成员函数 void reverse()实现 head 内字母的翻转的示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class String {
private:
char head[100];
public:
String(char *Head) {
strcpy(head, Head);
}
void reverse() {
int len = strlen(head);
for (int i = 0; i < len / 2; i++) {
char temp = head[i];
head[i] = head[len - i - 1];
head[len - i - 1] = temp;
}
}
void print() {
cout << head;
}
};
int main() {
char str[] = "Hello World!";
String s(str);
cout << "Original String: ";
s.print();
s.reverse();
cout << "\nReversed String: ";
s.print();
return 0;
}
```
在这个示例中,我们声明了一个名为 String 的类,它有一个包含 100 个字符的 char 类型的 head 数组。构造函数 String(char *Head) 用于初始化 head 数组。成员函数 void reverse() 用于翻转 head 数组中的字符。成员函数 void print() 用于打印 head 数组中的字符。
在主函数中,我们首先声明一个 char 类型的数组 str,并将其传递给构造函数 String(char *Head)。然后我们调用 print() 函数来打印原始的字符串,接着调用 reverse() 函数来翻转字符串,最后再次调用 print() 函数来打印翻转后的字符串。
输出结果应该如下:
```
Original String: Hello World!
Reversed String: !dlroW olleH
```
void read(cnode* head) { std::ifstream in; char a[20]; string b; double c; double d; in.open("D:\\《文件》\\数据结构程序设计\\消费者积分管理系统\\first.txt",ios::app); while (in >> a >> b >> c >> d) { cnode* p = new cnode(a, b, c, d, NULL); p->next = head->next; head->next = p; } if (head == NULL) cout << "加载失败,请检查后重试"; else cout << "加载成功"; } new cnode(a, b, c, d, NULL)这个语句出现“C++ 没有与参数列表匹配的构造函数 参数类型为: (char [20], std::string, double, double, int)”和“没有重载函数接受5个参数”的问题
根据编译器的错误提示,你定义的 `cnode` 类的构造函数并没有接受 `(char [20], std::string, double, double, int)` 这样的参数列表。你需要在 `cnode` 类中定义一个构造函数,接受这样的参数列表,并在构造函数中对类的成员变量进行初始化。
例如,你可以在 `cnode` 类的定义中加入以下构造函数:
```c++
cnode(char name[], std::string id, double score, double spend, cnode* n) {
// 对类的成员变量进行初始化
strcpy(this->name, name);
this->id = id;
this->score = score;
this->spend = spend;
this->next = n;
}
```
然后在 `read` 函数中使用这个构造函数:
```c++
cnode* p = new cnode(a, b, c, d, NULL);
```