我创建了一个函数,它将一个数字转换为给定基数中的等效数字并将其打印成一个字符串。它看起来完美无瑕,但结果却很荒谬。下面的代码应将 100 转换为基数 9 并给出“121”。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void doldur(string *s,int u,int base){
*s="";
while(u!=0){
*s=""+u%base+*s;
u/=base;
}
return;
}
int main() {
ofstream fout ("dualpal.out");
ifstream fin ("dualpal.in");
int i;
string hey;
doldur(&hey,100,9);
cout<<hey;
cin>>i;
return 0;
}
但可笑的是,它打印了 dualpal.outualpal.outdualpal.out。(还为不同的基数提供了其他有趣的结果)
缺陷在哪里?