|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
现在有n个字符串,其中包含一些空格,现在希望你将所有字符串中的空格删除后输出。
输入
输入第一行只有一个正整数n,表示共有n个字符串。(1≤n≤10000)
第二行至第n+1行共n行,每行是一个字符串(由大小写英文字母和空格组成)。
输出
输出有 n+1行,第一行只有一个正整数,表示总共删除的空格数。第二行至第 n+1行共n行,每行表示一个删除空格后的字符串(按照输入顺序)。
样例输入
3
Yan ke lei
iiiii
acac aca c ac
样例输出
9
Yankelei
iiiii
acacacacac
有什么问题?
#include<bits/stdc++.h>
using namespace std;
string func(string s, s1 = " ", int num){
string s, s1;
int pos, num;
pos = s.find(s1, 0);
while (pos != -1){
s.erase(pos, 1);
pos = s.find(s1, 0);
num += 1;
}
return s;
}
int main(){
int n, num = 0;
str s
cin >> n;
for (i=0, i<n-1, i++){
cin >> s
func(s, s1, num);
cout << s;
}
return 0;
}
- #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 小助理,如未能正确解答您的问题,请继续追问。
|
|