编译器抱怨其他错位

时间:2017-04-13 07:53:46

标签: c

else

[尝试从这个问题中获得可用的东西:]

在上面的排序代码中,我收到错误的{{1}}错误。

[原文:]

这是短路的问题我得错了其他错误 plc复制此代码并尝试使用turbo c一次,我希望你能纠正这个错误 只有一个是

3 个答案:

答案 0 :(得分:4)

您的编译器抱怨错误放置else,因为有一个else没有前面的if

// ...
for (j=1; j<n-i; j++)
{
  if(a[j]<=a[j+1])
  {
    // ...
  } // END OF IF
} // END OF FOR
else
{
  continue;
}
// ...

代码中的else不会跟在{ }之后的if块,而是for循环之后的#include<conio.h>块。这是一个简单的语法错误。

这可以轻松查看代码是否正确缩进。定下你的代码。 (编者注:问题中的代码最初没有缩进。)

除此之外还有其他问题:

  • void main()完全未使用,请将其删除。 (从不考虑顺便使用它)
  • main这不是int main()函数的正确签名,请尝试int main(int argc, char** argv)for (i=1; i<=n; i++)
  • 0数组从n - 1scanf("%f",a[i]);编入索引。
  • float此处的第二个参数需要是指向&(a[i])应存储位置的指针:for (i=1; i<=n; i++);
  • { }最后的分号使得这个循环没有任何用处。通常,请始终在forif之后使用table1 : table2: ID1 ID2 ----- ----- 1 102 2 103 阻止。

答案 1 :(得分:0)

一些算法备注:

  • else { continue; }无用
  • 第二个循环应为(for j = i + 1 ; j < n ; j++)

一些实施备注:

  • 您应该始终检查scanf返回值(以了解已读取了多少有效输入):man 3 scanf
  • 恕我直言,你应该避免使用scanf,读取一行并通过strtol(man 3 strtol)传递更安全:有了它,你可以控制整个单词是否已被转换为整数。
  • 您应该检查元素数量(n)是否不大于数组长度(N
  • 如前所述,数组索引从0开始
  • 使用for (i = 0 ; i < n ; i++)而不是for (i = 0 ; i <= n - 1 ; i++)循环风格更为常规。

答案 2 :(得分:-1)

C中的数组从索引0开始,以索引n - 1结束。您的输入循环开始在索引1处写入,并在(可能不存在)索引n处结束。先解决这个问题。

编写这样一个循环的规范方法是

for (i = 0; i < n; i++) { /* ... */ }