刚刚开始掌握c-编程的诀窍,但我正在尝试创建一个函数,该函数可以计算从给定的基数到十进制格式的数字。(base_to_int)
例如,基10 = 5432的digits1[] = {2,3,4,5},基数8= 501的digits2[] = {5,6,7}
看起来,当我试图运行一个for循环时,它似乎并不是在计算它,而且我总是在数组中得到最后一个数字(对于digits1,我一直得到的输出的答案是“5”)。
为什么我不能在数组中运行一个for循环?
代码:
数字=数组中的数字数,数字=数组,基数=数组编号所在的基。
int base_to_int(int ndigits, int* digits, int base)
{
for (int n = 0 ; n <= ndigits - 1 ; n++)
{
int a = digits[n];
return a * pow(base,n);
}
}对于这段代码,当我试图编译它时,我一直得到输出"2“。
发布于 2015-01-19 19:42:15
您正在返回计算的第一个结果,请记住,return结束了函数的执行并简单地返回值,所以您只有一个迭代,而不是循环和求和所有值,您的代码相当于:
return digits[0] * pow(base,0);变化
return a * pow(base, n);至
sum += a * pow(base, n)当您完成计算时,应该在循环外返回sum (不要忘记在循环之外将sum初始化为0)。
发布于 2015-01-19 19:46:02
正如Maroun Maroun所说,当您编写返回语句时,函数将返回,永远不会计算后面的部分。
https://stackoverflow.com/questions/28032296
复制相似问题