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

C 如何从整数中删除第一个数字?,c,C,我需要输入一个数字,比如:200939915 这样做之后(我知道怎么做),我需要删除第一个数字,使其成为:00939915 最好的方法是什么?另一种方法,尽管我最喜欢马特·凯恩的方法: char *c = "200939915"; char *d = c + 1; unsigned long n = 42424242; n = n % (unsigned long)pow(10.0, (double)floor(log10(n))); // n = 2424242; 我可能会吸引下层选民,但

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

这样做之后(我知道怎么做),我需要删除第一个数字,使其成为:00939915


最好的方法是什么?

另一种方法,尽管我最喜欢马特·凯恩的方法:

char *c = "200939915";
char *d = c + 1;
unsigned long n = 42424242;
n = n % (unsigned long)pow(10.0, (double)floor(log10(n)));
// n = 2424242;

我可能会吸引下层选民,但以下是我要做的:

#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;
}
#包括
#包括
int main()
{
整数;
标准::cin>>编号;
int temp=数字;
整数位数=0;
int lastnumber=0;
while(温度!=0)
{
数字++;
lastnumber=温度%10;
温度=温度/10;
}
数字=数字%(最后数字*(整数)功率(10,数字-1));

std::cout+1;如果你想把数字当作字符串,就把它变成字符串。别忘了当我去打印新字符时,它是空的?@muntoo这些大小是相等的。
strlen(c)
strlen(d)
是另一回事。@马克:如果您的输入是在一个
int
中,您可以声明一个本地字符缓冲区ala
char buf[128];
(128足够大,但不太浪费),然后
sprintf(缓冲区,“%d”,x);
(其中x是
int
变量。然后,如果数字>=10,请查看缓冲区[1]对于文本数据:如果您再次需要将其作为
int
格式,只需使用
atoi(缓冲区[1])
转换即可。不需要。通过个人项目帮助我学习C。别担心,我不会投反对票。:)您可以始终使用社区wiki。
pow
返回一个双精度值,该值对于
%运算符无效。此外,这种方法原则上也存在舍入问题。请尝试使用
printf(“%lld\n”,(long-long)pow(10,18));`左右。