例如,用户输入 digit 542035
。应用程序必须从给定的数字中删除所有5
s 和0
s 并打印423
。想不出一个简单的方法来写像“查找并删除”数字中的所有 0 和 5 之类的东西?有什么建议么?
问问题
80 次
3 回答
5
将数字转换为字符串,执行替换(将数字替换为“”),显示结果。
于 2012-06-28T20:04:37.273 回答
0
这是一个使用 C++11 的示例。
注意:如果这是一个家庭作业问题,这可能不是老师想要的答案,尽管它是惯用的。
#include <string>
#include <algorithm>
#include <iostream>
int main()
{
std::string s("542035");
std::cout << "Input: " << s << "\n";
auto new_end = std::remove_if(
s.begin(),
s.end(),
[] (const char c) -> bool
{
switch(c)
{
case '5':
case '0':
return true;
default:
return false;
}
});
s.assign(s.begin(), new_end);
std::cout << "Result: " << s << "\n";
}
于 2012-06-28T20:17:51.070 回答
0
这段代码似乎对我有用。我不确定它是否是最好的解决方案。
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int main()
{
int userinput;
cin >> userinput;
string s;
stringstream out;
out << userinput;
s = out.str();
cout << s << " " << userinput << endl;
vector<char> editted;
string::iterator it;
for (it = s.begin() ; it < s.end(); it++ )
{
if ((*it) == '5' || (*it) == '0')
{}
else
editted.push_back((*it));
}
for (int i = 0; i <editted.size(); i++)
{
cout << editted[i] << endl;
}
return 0;
}
于 2012-06-28T20:49:38.527 回答