You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序求助:筛选含指定字符的单词时输出内容缺失

问题诊断与修复

你的代码核心问题出在输出符合条件单词时的额外i++操作。

原代码的for循环中,当找到包含指定字符的单词后,你手动执行了i++,但for循环本身每次迭代结束都会自动执行i++,这就导致每次匹配成功后,会跳过下一个单词的检查。比如:

  • 处理索引0的red后,手动i++让i变成1,循环自身的i++又把i变成2,直接跳过了索引1的roses,这就是输出缺失部分符合条件单词的原因。

修复后的代码

#include<iostream>
#include<vector>
using namespace std;

int main() {
   int len;
   cin>>len;
   string inpt;
   vector<string> vect;
   for(int i =0;i<len;i++){
      cin>>inpt;
      vect.push_back(inpt); 
   }
   char ch;
   cin>>ch;  
   for(int i =0;i<len;i++){
      size_t found = vect.at(i).find(ch);  
      if (found != string::npos){
         cout<<vect.at(i)<<endl;
         // 移除多余的i++,避免跳过下一个单词
      }
   }  
   return 0;
}

修复说明

  • 移除if块内的i++语句,让for循环的自动迭代处理索引递增,确保每个单词都会被检查到。
  • 可以去掉原代码中无意义的cout<<"";语句,代码更简洁且不影响功能。

测试示例输入后,修复后的代码会输出所有包含指定字符的单词,与预期结果一致。

内容的提问来源于stack exchange,提问作者Gregory McNeal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:22:08