C++ 将字符串中的每个字符反转,特殊字符除外(例如“?”)
例如:你好吗?----->哦,是什么 这是我的代码,我成功了,但问号也颠倒了。 我怎样才能使它保持完整C++ 将字符串中的每个字符反转,特殊字符除外(例如“?”),c++,C++,例如:你好吗?----->哦,是什么 这是我的代码,我成功了,但问号也颠倒了。 我怎样才能使它保持完整 #include <iostream> using namespace std; int main() { string ch; while(cin >> ch) { for(int i = ch.length() - 1; i >= 0; i--) { cout <<
#include <iostream>
using namespace std;
int main()
{
string ch;
while(cin >> ch)
{
for(int i = ch.length() - 1; i >= 0; i--)
{
cout << ch[i];
}
cout << " ";
}
return 0;
}
#包括
使用名称空间std;
int main()
{
弦ch;
而(cin>>ch)
{
对于(int i=ch.length()-1;i>=0;i--)
{
cout尝试使用数组并扫描每个字母,以查看是否有问号。如果有,请将其移动到数组的最后一个位置。从字符串开头开始,向前扫描,直到找到一个字母。从结尾向后扫描,直到找到一个字母。交换它们。继续,直到两个位置相遇
注意:上面我使用了“字母”,但我真正的意思是“应该反转的字符之一”。您没有非常精确地定义哪些字符应该交换,哪些不应该交换,但我假设您(或您的老师)心里有一个合理具体的定义。您选择的输入法(cin>>ch
)自动将输入拆分为单独的单词。
正如他在书中所说,你必须跳过标点符号等,找到要交换的字母字符。大致如下:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
string ch;
while (cout << "String? " && cin >> ch)
{
cout << "Input: <<" << ch << ">>\n";
const char *bp = ch.c_str();
const char *ep = ch.c_str() + ch.length() - 1;
const char *sp = ch.c_str();
while (sp < ep)
{
while (sp < ep && (*sp != ' ' && !isalpha(*sp)))
sp++;
while (sp < ep && (*ep != ' ' && !isalpha(*ep)))
ep--;
char c = *sp;
ch[sp-bp] = *ep;
ch[ep-bp] = c;
sp++;
ep--;
}
cout << "Output: <<" << ch << ">>\n";
}
cout << endl;
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
弦ch;
while(cout>ch)
{
不能用简单的解决方案或黑客单独解决这个问题。如果有更多的问题,请评论,让我们一起解决
#include <iostream>
using namespace std;
int main()
{
string ch;
while(cin >> ch)
{
int flag = 0;
for(int i = ch.length() - 1; i >= 0; i--)
{
if(ch[i] != '?')
cout << ch[i];
else
flag = 1;
}
if(flag)
cout << "?";
else
cout << " ";
}
return 0;
}
#包括
使用名称空间std;
int main()
{
弦ch;
而(cin>>ch)
{
int标志=0;
对于(int i=ch.length()-1;i>=0;i--)
{
if(ch[i]!='?')
如果在字符串中间存在标点怎么办?
#include <iostream>
using namespace std;
int main()
{
string ch;
while(cin >> ch)
{
int flag = 0;
for(int i = ch.length() - 1; i >= 0; i--)
{
if(ch[i] != '?')
cout << ch[i];
else
flag = 1;
}
if(flag)
cout << "?";
else
cout << " ";
}
return 0;
}