给定n个十六进制正整数,输出它们对应的八进制数。
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
#include<stdio.h>
#include<string.h>
#include<math.h>
void verse(char str[])
{
int n=strlen(str),i,demp=0,k=0;
for(i=0;i<n;i++)
{
if(str[i]>='0'&&str[i]<='9')
demp+=(str[i]-'0')*pow(16,n-i-1);
else
demp+=(str[i]-'A'+10)*pow(16,n-i-1);
}
while(demp>0)
{
i=demp%8;
str[k++]=(char)i;
demp=demp/8;
}
for(i=k-1;i>=0;i--)
printf("%d",str[i]);
printf("\n");
}
int main()
{
int n,i;
char str[10][10];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
gets(str[i]);
for(i=0;i<n;i++)
verse(str[i]);
return 0;
}
为什么练习系统显示运行错误?呜