|
发表于 2025-1-15 12:06:22
|
显示全部楼层
本楼为最佳答案
- #include <iostream>
- #include <string>
- using namespace std;
- string removeSpaces(string s, int &num) {
- int pos = s.find(" ");
- while (pos != string::npos) {
- s.erase(pos, 1);
- num++;
- pos = s.find(" ");
- }
- return s;
- }
- int main() {
- int n, num = 0; // `num` 用于记录删除的空格总数
- cin >> n; // 读取字符串个数
- cin.ignore(); // 清除缓冲区中的换行符
- string result[n]; // 用于存储处理后的字符串
- for (int i = 0; i < n; i++) {
- string s;
- getline(cin, s); // 读取包含空格的整行字符串
- result[i] = removeSpaces(s, num); // 调用函数删除空格并更新 `num`
- }
- cout << num << endl; // 输出总共删除的空格数
- for (int i = 0; i < n; i++) {
- cout << result[i] << endl; // 输出处理后的字符串
- }
- return 0;
- }
复制代码
### 你的问题解答:
1. **函数声明错误**:
- 函数参数和变量定义重复,`string func(string s, s1 = " ", int num)` 中的 `s1` 和 `s` 在函数体内重复定义导致混淆,且 `s1` 的默认参数值写法不合理。
- `num` 应使用引用传递 `int &num`,否则在处理后不会记录空格总数。
2. **变量未声明**:
- `str s` 是非法的变量声明,应该改为 `string s`,且未声明一个 `string` 用途的容器或数组存储结果。
3. **循环问题**:
- `for (i=0, i>` 是非法的语法错误,正确写法是 `for (int i = 0; i < n; i++)`。
4. **输入与输出问题**:
- 缺少处理换行符的代码,如 `cin.ignore()`。
- 结果没有正确保存并逐行输出。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|