#题目是“十六进制转八进制”
#这是我写的代码
#我想着是先十六转十,再十转八,感觉思路没错,但是结果不对,看几个小时没找到问题在哪,晕了要感觉好笨啊
#c语言
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//十六进制转八进制题
int main() {
char sixt[10][7];
int ten[10];
int n,i,j,l,t;
int eit[10][100];
//n 代表有多少个数需要转换
scanf("%d",&n);
//十六进制转成十进制
for(i=0;i<n;i++){
for(j=0;j<7;j++){
scanf("%c",&sixt[i][j]);
if(sixt[i][j]=='\0')
break;
}
t=j;
ten[i]=0;
for(l=0;l<t;l++){
// ten[i]=ten[i]+
if(sixt[i][l]>='0'&&sixt[i][l]<='9'){
ten[i]=ten[i]+(sixt[i][l]-48)*(int)pow(16,t-l-1);
}
else if(sixt[i][l]>='A'&&sixt[i][l]<='F'){
ten[i]=ten[i]+(sixt[i][l]-48-7)*(int)pow(16,t-l-1);
}
}
}
//十进制转换成八进制
for(i=0;i<n;i++){
for(j=0;;j++){
if(ten[i]>0){
eit[i][j]=ten[i]%8;
ten[i]=ten[i]/8;
}
if(ten[i]<=0){
t=j+1;
break;
}
}
for(l=t-1;l>=0;l--){
printf("%d",eit[i][l]);
}
printf("\n");
}
return 0;
}