十六进制转八进制
问题描述给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
注意
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int n,i,sum,m,f[100005],j,h;
while(scanf("%d",&n)!=EOF)
{for(h=0;h<n;h++)
{
scanf("%x",&m);
{j=1;
sum=0;
while(m)
{
f[j]=m%10;
m/=10;
j++;
}
for(i=j-1;i>0;i--)
sum=sum+f[i]*pow(10,i-1);
int k=0;
while(sum)
{
f[k]=sum%8;
sum/=8;
k++;
}
for(i=k-1;i>=0;i--)
printf("%d",f[i]);
printf("\n");
}
}
return 0;
}
提示是用二进制,现在提交的是错误的,怎么改啊?