将数组中的十六进制数转换成八进制数并把已转换的八进制数仍存放在字符串数组xx中

mostar 2005-09-11 06:21:14
?怎么转
...全文
155 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
drizzlecrj 2005-09-11
  • 打赏
  • 举报
回复
进制转换stu3030
进制转换

问题描述
给出多个 P 进制整数 N,求 对应每个N 的 Q 进制表示。期中 0<= N <= 32767 , 2 <= P <= 16, 2 <= Q <= 16。大于 9 的数字用 A、B、C、D、E、F 表示。

输入:(多组数据)
P Q
N(用 P 进制表示的)
输出:
N(用 Q 进制表示的)

样例
输入:
5 16
421
输出:
6F (必须换行,下面不重复了)


--------------------------------------------------------------------------------

From: OIBH 信息学练习赛 #3


#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
char a[15];
int from , to;//form代表输入数的原有进制,to是待转换进制
int i;
unsigned long tmp;
while(cin>>from>>to)
{
cin>>a;
if(a[0] >='A')
tmp = a[0] - 'A' + 10;//将大于9的数字进行处理
else
tmp = a[0] - '0';
for(i = 1; i<strlen(a); i++)
{
if(a[i] >= 'A')
tmp = from * tmp + a[i] - 'A' + 10;
else
tmp = from * tmp + a[i] - '0';
}//已10进制的tmp作为中介。
char buffer[15] = {'\0'};
int count = 0, res;
do
{
res = tmp % to;
if(res < 10)
buffer[count] = res + '0';
else
buffer[count] = res - 10 + 'A';
count++;
tmp /= to;
} while(tmp != 0);
buffer[count] = '\0';//上面把tmp转换成to进制

reverse(buffer, buffer + strlen(buffer));
cout<<buffer<<endl;
}

return 0;
}

00:00.240 697 Kb

33,320

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧