题解
2024-12-10 17:56:57
发布于:北京
10阅读
0回复
0点赞
T6:跳转链接
这道题输入一个十进制数,将他转为8进制数,再按16进制数转化为10进制数,再输出:
思路:
八进制:将这个数数位分离(除8取余,逆序排列)
十六进制:数位分离,第i位数a[i]让结果增加a[i] * (16,i-1)
#include <bits/stdc++.h>
using namespace std;
int eight(int n){
int res[1000] = {};//记录下来每一位
int rec = 0;
while(n > 0){//除到0为止
rec ++;//位数增加
res[rec] = n % 8;//除8取余
n /= 8;//除以8
}
int ans = 0;//结果
for (int i = rec;i >= 1;i --){//逆序排列
ans *= 10;//在结果后面再开一位
ans += res[i];//加上这一位
}
return ans;//返回
}
int sixteen(int n){
int ans = 0;
int i = 0;
while(n > 0){//数位分离
ans += (n % 10) * pow(16,i);//转化为16进制
n /= 10;//去掉最后一位
i ++;//权数增加
}
return ans;
}
int main(){
int n;
cin >> n;
cout << sixteen(eight(n));//函数调用
return 0;
}
这里空空如也
有帮助,赞一个