【问题标题】:For looping an array?用于循环数组?
【发布时间】:2015-01-19 19:39:48
【问题描述】:

刚开始掌握 c 编程的技巧,但我正在尝试创建一个函数,可以计算从给定基数到十进制格式的数字。 (base_to_int)

例如, digits1[] = {2, 3, 4, 5} 以 10 为底 = 5432 和 digits2[] = {5, 6, 7} 以 8 为底 = 501

看起来当我尝试运行 for 循环时,它似乎没有计算它,并且我不断获取数组中的最后一个数字(对于digits1,我不断得到的输出的答案是“ 5")...

为什么我不能在数组中运行 for 循环?

代码:

ndigits = 数组中的位数,digits = 数组,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”。

【问题讨论】:

    标签: c arrays for-loop


    【解决方案1】:

    您正在返回计算的第一个结果,请记住,return 结束函数的执行并简单地返回值,因此您只有一次迭代,而不是循环和求和所有值,您的代码是相当于:

    return  digits[0] * pow(base,0);
    

    改变

    return a * pow(base, n);
    

    sum += a * pow(base, n)
    

    您应该在完成计算后将sum 在循环外返回(不要忘记在循环外将sum 初始化为0)。

    【讨论】:

    • 谢谢!我的菜鸟错误
    • 发生了 :) 最重要的是从错误中吸取教训。
    【解决方案2】:

    正如 Maroun Maroun 所说,当您编写 return 语句时,函数返回并且从不计算后面的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2012-12-11
      • 1970-01-01
      相关资源
      最近更新 更多