算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出。
输入格式:输入只有一行,即三个字符。
输出格式:输出只有一行,包括三个整数,中间用空格隔开。
输入输出样例 样例输入 FFF 样例输出 FFF 4095 7777
16进制转10进制后,利用转来的十进制数直接来转换成八进制, 借助了刚学的数据结构中的stack的知识。 这题要注意当输入为000时的输出格式是:0 0 0
#include<iostream>
#include<string>
#include<stack>
#include<cmath>
using namespace std;
int main()
{
string s;
cin >>s;
int i,len=s.length(),dec=0;
if(s[0]==s[1]&&s[1]==s[2]&&s[0]=='0'){
cout <<"0 0 0"<<endl;
exit(0);
}
cout <<s<<" ";
for(i=len-1;i>=0;i--){ //16-10
int t;
switch(s[i]){
case'0':t=0;break;
case'1':t=1;break;
case'2':t=2;break;
case'3':t=3;break;
case'4':t=4;break;
case'5':t=5;break;
case'6':t=6;break;
case'7':t=7;break;
case'8':t=8;break;
case'9':t=9;break;
case'A':t=10;break;
case'B':t=11;break;
case'C':t=12;break;
case'D':t=13;break;
case'E':t=14;break;
case'F':t=15;break;
default:break;
}
dec+=pow(16,len-i-1)*t;
}
cout <<dec<<" ";
stack<int> st; //10-8
int t=dec;
while(t>0){
st.push(t%8);
t/=8;
}
while(!st.empty())
{
cout <<st.top();
st.pop();
}
return 0;
}
算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出。
输入格式:输入只有一行,即三个字符。
输出格式:输出只有一行,包括三个整数,中间用空格隔开。
输入输出样例 样例输入 FFF 样例输出 FFF 4095 7777