题目描述:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345。 请完成函数StrToInt,实现字符串转换成整数的功能。 友情提醒: 提交代码之前,请复查下你的程序,比如当给的字符串是如左边图片所示的时候,有考虑到么? 当然,它们各自对应的正确输出如右边图片所示(假定你是在32位系统下,编译环境是VS2008以上) input: output: 注:以上只是部分测试数据,不代表上述数据通过了,即挑战成功。
挑战规则:
完成功能函数StrToInt即可,但不要去改动函数名,参数,至于main函数是为方便你在提交代码之前进行在线编译测试; 不得用库函数atoi。
这题需要考虑的细节很多,不过经过多次提交后得到代码如下,不知是否可通过。
求指点:
int StrToInt(const char* str)
{
int fuhaogeshu = 0, ffzfgs = 0;
int i,fuhao=1,tjjh=0;
int len = strlen(str);
int r=0,p=0;
while ( --len >= 0 && str[len] == 32){}
for ( i = 0; i <= len && str[i]!=0; i++)
{
if (str[i]!=32)
{
if (fuhao == 1 && str[i] == '-' && tjjh==0)
{
if (p==2)
{
break;
}
p = 1;
fuhao = -1;
}
else if (str[i]>='0' && str[i]<='9')
{
r = r * 10 + str[i] - '0';
p = 2;
}
else if (str[i] == '+' && p == 0 && tjjh==0)
{
tjjh++;
}
else
{
break;
}
}
else
{
if (p>0 || tjjh>0)
{
break;
}
}
}
return r*fuhao;
}