练习是"输入数字a,b和数字列表c。 ""代表列表c的基础," b"表示将列表c转换为" b"基于号码列表。 例如:a = 2,b = 3,c = 10110 答案是" 211"
这是我的计划:
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
int main() {
int a,b;
int account, d, size, sum = 0;
char *c, *w;
cout<<"Input two stander a b first, them input a based listed"<<endl;
cin>>a>>b;
cin.ignore();
cin.getline (c,64);
size = strlen(c);
d = atoi(c);
for(int i = 0; i<size; i++){
account = (d%a)*pow(a,i);
sum+=account;
d = (d/a);
}
w = itoa(sum, w, b);
cout<<"the list after transfer: "<<w<<endl;
return 0;
}
我的程序可以通过编译器来完成,但我的计算机无法计算数据。我焦急地不知道我的节目在哪里出错了。我认为它可能是for循环中的pow函数。 任何人都可以帮助我吗?
答案 0 :(得分:0)
我复制了您的代码并做了两处更改: 而不是char * c,* w; - &GT; char c [256],w [256]; (我的编译器抛出异常,不喜欢这里的* c)
而不是w = itoa(sum,w,b); - &GT; _itoa_s(sum,w,b);
我使用2 3 101进行了测试,并获得了“转移后的列表12”。希望这项工作。
然而,仍有警告“从double转换为int”,应将其视为错误。