方法一
十六进制转为十进制再转为八进制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char arr[50];
char str[99];
int i = 0, sum = 0,j=0;
scanf("%s", &arr);
while (arr[i] != '\0')
{
if (arr[i] >= 'A'&&arr[i] <= 'F')
{
arr[i] = arr[i] - '7';//字母转换为数值
}
else
arr[i] = arr[i] - '0';//数字转换为数值,因为在字符串数组中它是一个个字符,存的是ascii码
sum = sum * 16 + arr[i];
i++;
}
while (sum!= 0)
{
str[j] = sum % 8;
sum = sum / 8;
j++;
}
for (i = j - 1; i >= 0; i--)
{
printf("%d", str[i]);
}
system("pause");
return 0;
}