pat 中数组-08. 字符串转换成十进制整数(15),总是有错误,不能得满分,求指点
#include <stdio.h>#include <math.h>
#include <string.h>
int main()
{
char str[1000];
int num[1000];
int i;
int flag = 0;
int f;
int sum = 0;
int count = 0;
int temp;
gets(str);
if(strlen(str)==0)
{
return 0;
}
for(i=0;str[i]!='#';i++)
{
if (str[i]== '-'&&!flag)
{
f=1;//用于判断第一个字符是不是负数
}
else if(str[i] >= '0' && str[i] <= '9')
{
num[count] = str[i]- '0';
count++;
flag = 1;
}
else if(str[i] >= 'a' && str[i] <= 'f')
{
num[count] = str[i]-'a'+10;
count++;
flag = 1;
}
else if(str[i] >='A' && str[i] <= 'F')
{
num[count] = str[i]-'A'+10;
count++;
flag = 1;
}
}
//求和函数
temp = count;
for(i=0;i<count;i++)
{
if(num[i] >= '0' && num[i] <= '9')
{
sum = sum + (num[i])*pow(16,temp-1);
temp--;
}
else if(num[i] >= 'a' && num[i] <= 'f')
{
sum = sum + (num[i])*pow(16,temp-1);
temp--;
}
else
{
sum = sum + (num[i])*pow(16,temp-1);
temp--;
}
}
if (f==1)
{
sum = -sum;
printf("%d\n",sum);
}
else
{
printf("%d\n",sum);
}
return 0;
}