用c语言编程:将一个8进制的字符串转化为十进制的数。

要用函数解答
2024-11-15 06:33:17
推荐回答(3个)
回答1:

#include
#include

int main()
{
int l,i,num=1,sum=0;
char a[100];
puts("input(以大写字母为标准):");
gets(a);
l=strlen(a);
for(i=1;i<=l;++i)
{
if(a[l-i]>'7'||a[l-i]<'0')
{puts("输入有误");exit(0);}
sum=sum+(a[l-i]-'0')*num;
num*=8;
}
printf("%d\n",sum);
}

回答2:

/////////////////////////////////////////
// C-Free 4.1
// MinGW 3.4.5
// veket的小号
/////////////////////////////////////////
#include
int OctToDec(char s[]);
int main()
{
char str[10] = "0713";
printf("%o Oct = %d\n", 0713, OctToDec(str));
return 0;
}
int OctToDec(char s[])
{
int sum = 0;
int i = 0;
int m = 0x00000001;
while(s[i]!='\0')
{
i++;
}
i--;
while(i>=0)
{
sum += (s[i]-'0')*m;
m <<= 3;
i--;
}
return sum;
}

回答3:

#include
long fun(char c[]);
void main()
{
char c[10];
gets(c);
printf("%d",fun(c));
}
long fun(char c[])
{
long n=0;
int i;
while(c[i++]!='\0');
for(i--;i>=0;i--)
n=10*n+c[i]-'0';
return n;
}