刚开始掌握c编程的绳索,但我正在尝试创建一个可以计算从给定基数到十进制格式的数字的函数。 (base_to_int)
例如, digits1 [] = {2,3,4,5},基数为10 = 5432 和 digits2 [] = {5,6,7},基数为8 = 501
看起来当我尝试运行for循环时,它似乎没有计算它,并且我不断得到数组中的最后一位(对于digits1,我一直得到的输出的答案是“ 5" )...
为什么我不能在数组中运行for循环?
CODE:
ndigits =数组中的位数,digits = array,base =数组编号所在的位数。
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”。
答案 0 :(得分:2)
您正在返回计算的第一个结果,请记住,return
结束函数的执行并简单地返回值,因此您只有一次迭代而不是循环并对所有值求和,代码相当于:
return digits[0] * pow(base,0);
更改
return a * pow(base, n);
到
sum += a * pow(base, n)
当你完成计算时,你应该在循环之外的<{1}} 返回(不要忘记在循环之外将sum
初始化为0)。
答案 1 :(得分:0)
正如Maroun Maroun所说,当你编写return语句时,函数返回并且从不计算后面的部分。