C 如何从整数中删除第一个数字?
我需要输入一个数字,比如:200939915 这样做之后(我知道怎么做),我需要删除第一个数字,使其成为:00939915C 如何从整数中删除第一个数字?,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; 我可能会吸引下层选民,但
最好的方法是什么?另一种方法,尽管我最喜欢马特·凯恩的方法:
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
中,您可以声明一个本地字符缓冲区alachar buf[128];
(128足够大,但不太浪费),然后sprintf(缓冲区,“%d”,x);
(其中x是int
变量。然后,如果数字>=10,请查看缓冲区[1]对于文本数据:如果您再次需要将其作为int
格式,只需使用atoi(缓冲区[1])
转换即可。不需要。通过个人项目帮助我学习C。别担心,我不会投反对票。:)您可以始终使用社区wiki。pow
返回一个双精度值,该值对于%运算符无效。此外,这种方法原则上也存在舍入问题。请尝试使用
printf(“%lld\n”,(long-long)pow(10,18));`左右。