没有先前'if'的'else'

时间:2015-02-04 15:33:44

标签: c if-statement

我刚刚开始学习C编程,所以我并没有真正处于高级水平。忍受我!

我有这段代码,我想我很容易理解我要做的事情。但是我收到一个错误,说在没有if之前调用了最后一个else。

我怀疑问题是if和else之间的if-else语句。你们怎么解决它?

int talet;
scanf("%d", &talet);

int i = 1;
while (i <= 99) {
  int a; {
    if (i % talet == 0 || talet == (i / 10) % 10 || talet == i % 10) {
      if (talet % 10 == 0)
        printf("\n");
      else
        continue;
    }
    printf("burr ");
    else
      printf("%d ", i);
  }
  i = i + 1;
}

4 个答案:

答案 0 :(得分:8)

你的问题在这里:

}
    printf("burr ");  //<---
else
    printf("%d ",i);

你不能在else块之前有任何声明。所以删除它或将其移动到else或OR块中,如下所示:

} else {
    printf("burr ");
    printf("%d ",i);
}

答案 1 :(得分:4)

问题在于括号。缩进对于了解打开和关闭括号的位置非常重要

int talet;
scanf("%d",&talet);

int i=1;
while(i<=99)
{
int a;

    if (i%talet==0 || talet==(i/10)%10 ||talet==i%10)
    {
             if (talet%10==0)
                  printf("\n");
             else
                  continue;

        printf("burr ");
    }
    else
    {
        printf("%d ",i);
    }
    i=i+1;
}

答案 2 :(得分:4)

问题是您在printf括号外有if。因此,编译器认为if语句已完成。当它到达else时,由于没有打开if条件

,因此会抛出错误

你应该有这个

if (i%talet==0 || talet==(i/10)%10 ||talet==i%10)
{
    if (talet%10==0)
        printf("\n");
    else
        continue;

    printf("burr "); // <-- this was moved
}
else
    printf("%d ",i);

答案 3 :(得分:1)

尽量保持代码块尽可能干净和可读。 这样可以防止你犯错误。

你可以写一个if else Horstmann风格:

if (condition)
{
    #statements
}
else
{
    #statements
}

或TBS1风格更紧凑:

if (condition) {
    #statements
} else {
    #statements
}

选择一个你喜欢的,在crashmstr提供的评论中更多样式(感谢他),并坚持下去。 它将提高您的代码质量。