進制轉換 寫出一個程序,接受一個十六進制的數值字符串,輸出該數值的十進制字符串。(多組同時輸入 )
輸入描述: 輸入一個十六進制的數值字符串。
輸出描述: 輸出該數值的十進制字符串。
輸入例子: 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來源:??途W#include <iostream>using namespace std;int main(){ int a; while(cin>>hex>>a) { cout<<a<<endl; } return 0;}新聞熱點
疑難解答