如何从整数中删除第一个数字?

5

我需要输入一个数字,例如:200939915。

在输入后,我需要移除第一个数字,使其变为:00939915。

最好的方法是什么?

4个回答

9
char *c = "200939915";
char *d = c + 1;

0
要删除一个整数的第一个数字,首先需要将这个整数翻转。现在使用 %10 删除最后一个数字。现在再次翻转这个整数。现在我们可以看到这个整数的第一个数字已经被删除了。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
完全没有用的答案。如果删除最后一位很容易,那么删除第一位也很容易。但现在我们还需要反转一个数字,这又是另一个问题,所以你刚刚把一个问题变成了两个问题。如果答案包含演示此解决方案的代码,那么它将更加有用(也许您知道一种聪明的方法,我从您的文本中没有理解到)。 - wovano

0

我可能会招来投票者,但这是我会做的:

#include <iostream>
#include <math.h>

int main()
{
    int number;
    std::cin >> number;

    int temp = number;
    int digits = 0;
    int lastnumber = 0;
    while(temp!=0)
    {
        digits++;
        lastnumber = temp % 10;
        temp = temp/10;
    }

    number =  number % (lastnumber * (int)pow(10,digits-1));
    std::cout << number << std::endl;
    return 0;
}

显然,由于您想要使用C语言,将std::cin更改为scanf(或其他)并将std::cout更改为printf(或其他)。但请记住,如果您希望数字左侧保留两个00,则应执行Kane的答案。干杯!


-1
这里我使用了别名(nCopy)来代替我们的原始整数。然后计算数字个数直到个位数。例如n=1234,在while循环内部,它迭代了3次。所以count=3
现在n最终包含个位数(/第一个数字,在这里是1),因为循环条件是n>10。然后我们使用pow函数并计算103 = 1000。然后从别名中减去它,1234-1000 = 234。最后将该值复制到原始整数。
#include <iostream>
#include <math.h>
using namespace std;

int main() 
{
    int n; cin >> n;
    int nCopy = n;
    int count = 0;
    while(n>10){
      n/=10; 
      count ++;
    }
    nCopy -= (n * pow(10, count));
    n = nCopy;
    cout << n;
    return 0;
}

希望能有所帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接