不能在for循环中的pow函数输出答案

时间:2018-04-02 02:40:43

标签: c++

练习是"输入数字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函数。 任何人都可以帮助我吗?

1 个答案:

答案 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”,应将其视为错误。