2
所以我有這個任務編寫C++程序轉換二進制,八進制或十六進制數轉換爲十進制,我做到了,這是我的代碼:二進制,八進制,十六進制到十進制程序
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
long two2ten(string s)
{
int m = 0;
for (size_t i = 0; i < s.size(); i++)
{
m = 2 * m + (s[i] - '0');
}
return m;
}
long oct2dec(int n)
{
long int m = 0, i = 0;
while (n != 0)
{
m = m + (n % 10)* pow(8, i++);
n = n/10;
}
return m;
}
long hex2dec(string s)
{
long result = 0;
for (size_t i = 0; i < s.length(); i++)
{
if (s[i] >= 48 && s[i] <= 57)
{
result += (s[i] - 48)*pow(16, s.length() - i - 1);
}
else if (s[i] >= 65 && s[i] <= 70) {
result += (s[i] - 55)*pow(16, s.length() - i - 1);
}
else if (s[i] >= 97 && s[i] <= 102) {
result += (s[i] - 87)*pow(16, s.length() - i - 1);
}
}
return result;
}
int main()
{
int k, n;
string s;
while (cin >> k)
{
if (k == 2)
{
cin >> s;
cout << two2ten(s) << endl;
}
else if (k == 8)
{
cin >> n;
cout << oct2dec(n) << endl;
}
else if (k == 16)
{
cin >> s;
cout << hex2dec(s) << endl;
}
else
{
cin >> n;
}
}
return 0;
}
現在,它對我來說工作得非常好,但它給我的老師帶來了編譯錯誤(他沒有說爲什麼)。我已經把我的頭靠在牆上幾天了,但我仍然無法弄清楚什麼是錯的。請有人幫我解決這個問題嗎?
如果他不說爲什麼,這是不公平的。你如何編譯它?也許我們可以建議你是否使用一些不尋常的選項。 – BoBTFish
可能會問他他正在使用的編譯器和操作系統嗎? –
你的編譯器/選項是什麼?你的老師是什麼? – wasthishelpful