鱼C论坛

 找回密码
 立即注册
查看: 466|回复: 1

[已解决]c++问题

[复制链接]
发表于 2025-1-15 12:01:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;
int main(){
    string s, s1, s2;
    int pos;
   
    getline(cin, s);
    getline(cin, s1);
    getline(cin, s2);
   
    pos = s.find(s1, 0);
   
    while (pos != -1){
        s.replace(pos, s1.size(), s2);
        pos = s.find(s1, 0);
    }
    cout << s;
    return 0;
}
最佳答案
2025-1-15 12:01:43

  1. 程序设计目标错误,您目前的代码逻辑与题目要求不符。题目要求删除输入的字符串中的空格并统计总共删除的空格数,而您的代码显然在尝试实现字符串替换操作(`replace`),而且输入处理不完整。以下是正确的解答:

  2. [code]#include <iostream>
  3. #include <string>
  4. using namespace std;

  5. int main() {
  6.     int n; // 用于存储字符串数量
  7.     cin >> n; // 读取字符串数量
  8.     cin.ignore(); // 清除缓冲区换行符

  9.     int totalSpaces = 0; // 用于统计总共删除的空格数
  10.     string str;

  11.     // 逐行处理输入并移除空格
  12.     string result[n]; // 用于存储处理后的字符串
  13.     for (int i = 0; i < n; ++i) {
  14.         getline(cin, str); // 读取每一行字符串
  15.         string temp = ""; // 用于存储当前行去掉空格后的结果
  16.         for (char c : str) {
  17.             if (c != ' ') {
  18.                 temp += c; // 不是空格则加入新字符串
  19.             } else {
  20.                 totalSpaces++; // 遇到空格则计数加1
  21.             }
  22.         }
  23.         result[i] = temp; // 存储去掉空格后的字符串
  24.     }

  25.     // 输出总共删除的空格数
  26.     cout << totalSpaces << endl;

  27.     // 输出每行删除空格后的字符串
  28.     for (int i = 0; i < n; ++i) {
  29.         cout << result[i] << endl;
  30.     }

  31.     return 0;
  32. }
复制代码


### 修正总结:
1. **输入问题**:程序的输入不符合题目要求,需逐行读取第2到第n+1行字符串。
2. **处理逻辑问题**:题目要求的是删除空格操作,而非替换。因此需统计空格个数并移除其余字符的空格。
3. **忽略输出结果**:程序必须按要求完整输出处理后的结果。

运行该修正版代码即可获得正确答案。
[/code]

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-1-15 12:01:43 | 显示全部楼层    本楼为最佳答案   

  1. 程序设计目标错误,您目前的代码逻辑与题目要求不符。题目要求删除输入的字符串中的空格并统计总共删除的空格数,而您的代码显然在尝试实现字符串替换操作(`replace`),而且输入处理不完整。以下是正确的解答:

  2. [code]#include <iostream>
  3. #include <string>
  4. using namespace std;

  5. int main() {
  6.     int n; // 用于存储字符串数量
  7.     cin >> n; // 读取字符串数量
  8.     cin.ignore(); // 清除缓冲区换行符

  9.     int totalSpaces = 0; // 用于统计总共删除的空格数
  10.     string str;

  11.     // 逐行处理输入并移除空格
  12.     string result[n]; // 用于存储处理后的字符串
  13.     for (int i = 0; i < n; ++i) {
  14.         getline(cin, str); // 读取每一行字符串
  15.         string temp = ""; // 用于存储当前行去掉空格后的结果
  16.         for (char c : str) {
  17.             if (c != ' ') {
  18.                 temp += c; // 不是空格则加入新字符串
  19.             } else {
  20.                 totalSpaces++; // 遇到空格则计数加1
  21.             }
  22.         }
  23.         result[i] = temp; // 存储去掉空格后的字符串
  24.     }

  25.     // 输出总共删除的空格数
  26.     cout << totalSpaces << endl;

  27.     // 输出每行删除空格后的字符串
  28.     for (int i = 0; i < n; ++i) {
  29.         cout << result[i] << endl;
  30.     }

  31.     return 0;
  32. }
复制代码


### 修正总结:
1. **输入问题**:程序的输入不符合题目要求,需逐行读取第2到第n+1行字符串。
2. **处理逻辑问题**:题目要求的是删除空格操作,而非替换。因此需统计空格个数并移除其余字符的空格。
3. **忽略输出结果**:程序必须按要求完整输出处理后的结果。

运行该修正版代码即可获得正确答案。
[/code]

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表