【发布时间】:2020-12-27 18:00:21
【问题描述】:
我正在尝试编写一个代码,从用户那里获取两个单词并将它们存储为数组,并检查第一个单词的 all 字符是否已经存在于第二个单词中,如果是,则只输出是的,如果 NO 则输出 NO。 示例:
输入:
输入第一个单词:
福斯
输入第二个字:
堆栈溢出
输出:
是的
我的代码甚至不接近我真正想要的,但我会把它记下来,也许它会解释我想要做什么。
#include <iostream>
#include <string>
using namespace std;
int main() {
char N1[7];
char N2[10];
cout << ("ENTER THE FIRST WORD : ") ;
cin >> N1;
cout <<("ENTER THE SECOND WORD : ");
cin >> N2;
for (int i = 0; i <4; i++)
{
for (int j = 0; j < 7; j++)
{
if (N1[i] = N2[j])
{
cout << ("YES") << endl;
}
else
{
cout << ("NO") << endl;
}
}
}
return 0;
}
提前致谢。
【问题讨论】:
-
提示:
unordered_map<string,int>。另外,避免using namespace std;。 -
N1[i] = N2[j]是赋值,而不是比较。此外,C++ 有std::string,不需要笨拙的字符数组。此外,std::string具有std::string::find,这使您的任务更轻松。此外,您应该真正将可以命名为函数的进程分开,在这种情况下类似于bool contains_letters(const string& a, const string& b);。 -
您缺少的关键概念是您无法立即判断您的条件是否属实。您只能在循环结束时知道第一个字符串中的每个项目是否都在第二个字符串中。每当您遇到“全部”问题时,您都可以使用布尔变量。将变量设置为 true,然后编写一个循环来测试每个项目。如果 any 失败,则将布尔变量设置为 false。换句话说,假设您的条件为真,然后先寻找一个反例。