题如下:
将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。
代码如下:
#include <stdio.h>
#define N 10
void main()
{
unsigned char str[N]; // 存放八进制字符串
unsigned char len=0; // 存放字符长度
int i;
int j;
unsigned int res=0,res1=0;
printf("请输入八进制字符串:");
scanf("%s",str); // 输入字符串
for(i=0;i<N;i++) // 计算字符串长度
{
if(str[i] == '\0')
{
break;
}
len++;
}
printf("len = %d\n",len); // 输出长度
for(i=0;i<len;i++)
{
if(str[i]<'0' || str[i]>'7')
{
printf("字符串输入有误!!!\n"); // 判断字符串中是否有不是八进制规格的字符串
return;
}
}
for(i=0;i<len;i++) // 进行八进制字符串转换成十进制整数
{
res1 += (str[i]-'0')*1;
for(j=0;j<len-i-1;j++)
{
res1 *= 8;
}
res+=res1;
res1=0;
}
printf("res = %d\n",res);
}