#include <iostream>
#include <string>
using namespace std;
string convert(int num, int base) {
static const char charset[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int q = num / base;
int r = num % base;
if (q == 0) {
return string(1, charset[r]);
} else {
return convert(q, base) + charset[r];
}
}
int main() {
string num;
int K, T;
cin >> num >> K >> T;
int decimal = 0;
int p = 1;
for (int i = num.length()-1; i >= 0; i--) {
char c = num[i];
int digit = 0;
if (c >= '0' && c <= '9') {
digit = c - '0';
} else if (c >= 'A' && c <= 'Z') {
digit = c - 'A' + 10;
}
decimal += digit * p;
p *= K;
}
string result = convert(decimal, T);
cout << result << endl;
return 0;
}
两个实现文件包含了同一个头文件,这两个又同时被另外一个文件包含
有如下文件1.h,2.h,3.h,my.cpp,2.cpp
2.cpp和3.h都包含了1.h
my.cpp包含了2.h和3.h
2.cpp包含了2.h
这种情况直接用#ifndef是没用的
如果是2.h和3.h包含了1.h是没问题的,
但是!!!如果是2.cpp包含了2.h,并且1.h是被2.cpp而不是2.h包含,就会出错
解决方案如下:
1.把在1.h实现的函数,用1.cpp实现,1.h只声明,不实现
2.如果不想再搞个1.cpp,可以把1.h里面的函数封装到类里面作为静态方法,封装到namespace也没有用