// cpppractice.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#define MAX 20
bool isdigit(char c)
{
if(c<='9' && c>='0')
return true;
return false;
}
int chartodigit(char c)
{
if(isdigit(c))
return c-'0';
printf("format error/r/n");
exit(1);
}
// return a^b
int power(int a, int b)
{
if(a==0)
return 0;
if(b==0)
return 1;
if(b==1)
return a;
if(a<0 || b <0)
{
printf("not support navigate power yet/r/n");
exit(1);
}
return a*power(a,b-1);
}
int myatoi(char* str)
{
if(NULL==str)
{
printf("atoi str param is nul/r/n");
exit(1);
}
int ret = 0;
char* s = str;
int digits[MAX];
int len = 0;
bool ispositive = true;
ispositive = *s=='-'?s++,false:true;
while(*s!=0)
{
digits[len] = chartodigit(*s);
++len;
++s;
}
for(int i = len-1; i>=0; i--)
{
ret += digits[i]*power(10,i);
}
return ispositive ? ret : (ret*-1);
}
int _tmain(int argc, _TCHAR* argv[])
{
char* s = "1213";
int i = myatoi(s);
printf("converted: %d/r/n", i);
printf("Test %d - 1 = %d/r/n", i, i-1);
return 0;
}