进制转换 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述: 输入一个十六进制的数值字符串。
输出描述: 输出该数值的十进制字符串。
输入例子: 0xA 输出例子: 10
解答(个人版):#include <iostream>#include <string>#include <vector>#include <math.h>using namespace std;int pows(int a,int n){ int result = 1; int i=0; while(i<n) { result*=a; ++i; } return result;}int main(){ string str; //string dst; int i,j,k,result=0; vector<int>v; while(cin>>str) { // k = 0; v.clear(); for(i=2;i<str.length();++i) { //cout<<str[i]<<endl; if(str[i]<='9'&&str[i]>='0') { v.push_back(str[i]-'0'); } else { if (str[i]=='A'||str[i]=='a') { v.push_back(10); } if (str[i]=='B'||str[i]=='b') { v.push_back(11); } if (str[i]=='C'||str[i]=='c') { v.push_back(12); } if (str[i]=='D'||str[i]=='d') { v.push_back(13); } if (str[i]=='E'||str[i]=='e') { v.push_back(14); } if (str[i]=='F'||str[i]=='f') { v.push_back(15); } } } int n = 1; result = 0; for(i=0;i<v.size();++i) { result+=(v[i]*pows(16,(v.size()-n++))); } cout<<result<<endl; } return 0;}解答(网友版):#include<iostream>#include<string>using namespace std;int main(){ string input,output; int i,num; while(cin>>input){ num=0; for(i=2;i<input.size();i++){ if(input[i]>='a'&&input[i]<='f') num=num*16+(input[i]-'a'+10); else if(input[i]>='A'&&input[i]<='F') num=num*16+(input[i]-'A'+10); else num=num*16+(input[i]-'0'); } output=to_string(num); cout<<output<<endl; } return 0; }另外,我还发现了一种简单粗暴直接的办法:链接:https://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6来源:牛客网#include <iostream>using namespace std;int main(){ int a; while(cin>>hex>>a) { cout<<a<<endl; } return 0;}新闻热点
疑难解答