这道题有两种解法,一种利用pow,另一种就是利用 字符和数字之间的转化关系。
先说下itoa,将数字转换成字符串。利用了在一个数后面加‘0’即可将之转换成char型,这样将每个数字转换成char后即成为一个逆序的字符数组,再逆序下即可。
atoi即将char-'0'即得整数。
void itoaMyself(int number,char str[])
{
bool bNagetive = false;
if(number<0)
{
bNagetive = true;
number = -number;
}
int i=0;
char tmp[12];
//将数字转换成char
while(number)
{
tmp[i] = number%10 + '0';
i++;
number=number/10;
}
if(bNagetive)
{
tmp[i++] = '-';
}
tmp[i] = '\0';
i--;
//cout<<"tmp[]为:"<<tmp<<endl;
int j=0;
//逆置的char转换成正序的字符串
while (i>=0);
{
str[j++]=tmp[i--];
}
str[j] = '\0';
}
bool atoiMyself(char* str,int &number)
{
int i=0,j=0;
bool bNagetive = false;
if(!str) return false;
char tmp[12];
//空格或制表符
while(str[i]==' ' || str[i]=='/t')
{
i++;
}
if(str[i]=='-')
{
bNagetive=true;
i++;
}
//cout<<"str[]:"<<str<<endl;
int sum=0;
while(str[i])
{
//if(IsNumber(str[i]-'0')) return false;
sum = str[i]-'0'+sum*10;
i++;
}
if(bNagetive) sum=-sum;
number=sum;
return true;
}