【发布时间】:2017-11-21 14:52:35
【问题描述】:
第一次来到 StackOverflow。在为我的编程期末考试学习和编码时,我发现了一个我可以在精神上解决的问题,但是当我尝试将它放在 C++ 中时,它并没有真正起作用。
所以问题出在我的母语罗马尼亚语中,但我会尝试翻译它。所以问题要我从键盘上读一个单词,然后在屏幕上显示它,每次都消除一个元音。例如,如果我在程序中输入“programming”这个词,它应该会显示:
- 编程 - 消除一个
- 编程——消除e
- 编程 - 消除 i
- 编程 - 消除 o
- 编程——消除你
我的代码如下所示:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char v[6]="aeiou",s1[21],s2[21];
int i,j;
cin.get(s1,20);
for(i=0;i<strlen(v);i++)
{
strcpy(s2,s1);
j=0;
while(j<strlen(s2))
{
if(strchr(v[i],s2[j])!='\0')
strcpy(s2+j,s2+j+1);
else
j++;
}
cout<<s2<<endl;
}
return 0;
我在“if”语句中有一个错误,但我似乎无法找到解决方法。它在我从“v[i]”中删除“[i]”后起作用,但我一次只需要删除一个元音,而不是全部。希望有人可以在这里帮助我。谢谢!
编辑:问题已解决,我将把我的代码放在这里,因为问题来自于罗马尼亚学士学位的编程科目
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char v[6]="aeiou",s1[21],s2[21];
int i,j,x;
cin.get(s1,20);
for(i=0;i<strlen(v);i++)
{
strcpy(s2,s1);
j=0;
while(j<strlen(s2))
{
if(s2[j]==v[i])
strcpy(s2+j,s2+j+1);
else
j++;
}
cout<<endl;
cout<<s2<<endl;
}
return 0;
}
很抱歉造成误解,但在这里,我们没有被教导使用std::string::find_first_of 之类的东西,而只是使用strcmp 和stchr 之类的基本功能。
【问题讨论】:
-
我建议使用
std::string和stringstream- 它会让你的生活更轻松 -
看看 std::string::find_first_of
标签: c++