您的位置:首页 > 其它

算法提高 进制转换

2017-01-20 15:26 211 查看


1111: 算法提高 进制转换

时间限制: 1 Sec  内存限制: 256 MB
提交: 2  解决: 1

[提交][状态][讨论版]


题目描述

程序提示用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出。


输入

输入只有一行,即三个字符。


输出

输出只有一行,包括三个整数,中间用空格隔开。


样例输入

FFF


样例输出

FFF 4095 7777


提示


来源

注意输入的为 “000"的情况,要输出 0 0 0;
#include<iostream>
#include<string>
#include<stdio.h>
#include<string.h>
using namespace std;
int b10(char a[])//转化为10
{
int sum=0,i,k,temp;
for(i=strlen(a)-1;i>=0;i--)
{
if(i==strlen(a)-1)
k=1;
else
k=k*16;
if(a[i]>='0'&&a[i]<'10')
temp=a[i]-'0';
if(a[i]=='A')
temp=10;
if(a[i]=='B')
temp=11;
if(a[i]=='C')
temp=12;
if(a[i]=='D')
temp=13;
if(a[i]=='E')
temp=14;
if(a[i]=='F')
temp=15;
sum=temp*k+sum;
}
return sum;
}
void b8(int n)//将十进制转换为八进制
{
int a[300],i=0,j;
while(n)
{
a[i++]=n%8;
n=n/8;
}
for(j=i-1;j>=0;j--)
cout<<a[j];
}
int main()
{
char b[40];
int i,n,sum=0;
for(i=0;i<3;i++)
{
cin>>b[i];
if(b[i]=='0')
sum++;
}
//特殊情况输入的全为0;
if(sum==3)
cout<<"0 0 0"<<endl;
else
{
for(i=0;i<strlen(b);i++)
cout<<b[i];
cout<<" ";
cout<<b10(b)<<" ";
n=b10(b);
b8(n);
}
return 0;
}




[提交][状态]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: