我编写了一个P
函数,该函数删除了c
整数中的n
个数字。
该函数的开头为:void P(int &n, int &c)
。
比方说,n = 23734,c = 3
输出应为:274
这是我在这里问之前尝试过的。
无效P(int&n,int&c) {
int p=1,k=0;
while(n)
{
if(n%10==c)
n=n/10;
else
{
k=k+n%10*10;
n=n/10;
}
}
cout<<k;
}
P.S。我是新来的,这就是为什么我不知道如何正确添加代码的原因。
答案 0 :(得分:2)
使用std :: to_string()将n转换为字符串:
std::string s = std::to_string(n);
然后通过将48加到c上来将其转换为字符,这相当于'0'+您的数字c ='0'与'9'之间的一些字符。
char myChar = '0' + c;
现在通过遍历字符串并删除myChar == s [i]
的索引来擦除每次出现的myChar。for(int i = 0; i < s.size(); i ++){
If(myChar == s[i]){
s.erase(s.begin()+i);
i--;
}
}
最后,将字符串转换回int:
n = std::stoi (s);
编辑:您也可以使用除法和取模运算来完成此操作,如注释之一所述。
这是我刚刚整理的一个示例:
bool sign = false; // false -> + , true -> -
if (n < 0) { n = -n; sign = true; }
int back = 0;
int front = n;
int i = 0;
while (front > 0) {
if(front % 10 != c){
back += (front % 10) * std::pow(10, i++);
}
front /= 10;
}
n = sign ? -back : back;