C语言 'd'未宣告(第一次在这个函式中使用)

nx7onnlm  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(148)

它应该返回“d”,因为它是一个计数器。但是它没有声明。我在这个问题上很纠结。当我在代码前声明“d”时,它没有意义。
我有这样的代码:

int collatz(const int number){
  for(int d = 0; number > 1; d++){
    int number;
    if(number % 2 == 0){
      number = number / 2;
    }else{
      number = number * 3 + 1;
    }
  }
  return d;   
}
drkbr07n

drkbr07n1#

  1. dfor循环内声明,并受其作用域限制。请将声明移出循环。
  2. for循环阴影参数number范围内的int number。请将参数用作变量。
int collatz(int number)
{
  int d = 0;
  for(; number > 1; d++) {
    if(number % 2 == 0){
      number = number / 2;
    }else{
      number = number * 3 + 1;
    }
  }
  return d;   
}

while循环看起来更可读:

int collatz(int number)
{
  int d = 0;
  while (number > 1) {
    if(number % 2 == 0){
      number = number / 2;
    }else{
      number = number * 3 + 1;
    }
    d++;
  }
  return d;   
}

相关问题