自定义排序 C 调试在第 20 行显示错误

发布于 科技 2024-07-22
16个回答
  1. 匿名用户2024-01-31

    缺少大括号,第三个。

  2. 匿名用户2024-01-30

    for(i=0;i<=n-2;i++)

    奇怪的是,为什么你不在这个循环中比较 b[i] 的值,难道你不应该根据 b[i] 调整 a[i] 的顺序吗?

    更改它,以便您可以尝试:

    for(i=0;i<=n-2;i++)

  3. 匿名用户2024-01-29

    #include

    void merge(int a[8],int b[5])for(j=0;j<5;j++)

    for(i=0;i<12;i++)

    for(k=0;k<13;k++)

    printf ("%d ",c[k]);

    printf("");

    void main()

    b[5]=;

    merge(a,b);

    其实你也没什么大错误,就是if语句后面少了一对大括号,如果if语句后面有多个语句,就需要用括号括起来。

    if(k!=i)

  4. 匿名用户2024-01-28

    首先:第二个for循环应该是for(i=0; i<5;i++),因为没有 a[6],只有 a[5]。

    其次:1.最重要的是这个想法是错误的,你只比较两个相邻的人,而不是全部。 如果有三个数字,5 9 1,你的方法结果是 5 1 9,这显然是不正确的。

    2.书中有一个冒泡法和一个选择法,具体我记不清了,你可以看一下,你应该这样想:最小的不一定在相邻的数字之间,但可能在末尾,所以对于数组中的第一个元素,a[0],你应该从整个数组中找到最小的, 等等。

    最后:精神值得称赞,敢于自己写错,敢说错,很多同学都不这样了!

  5. 匿名用户2024-01-27

    for(i=0;i<6;i++)

    你的 ** 有一个 bug,当 i=5 时,你将访问 a[6],它属于数组越界访问。

    一般来说,完整的排序算法,一层循环是不做,冒泡法和选择法都需要双层循环嵌套,在你的**上修改如下:

    int j = 0;

    for(i=0;i<6;i++)

    未验证,你试试。

    希望对你有所帮助!

  6. 匿名用户2024-01-26

    你应该先找到最小的一个,就是取一个[0],与其他的逐个对比,其他的都差不多,**修改如下:

    #include

    int main()

    for(i=0;i<6;i++)

    for(j=i+1;j<6;j++)

    if(a[i]>a[j])

    for(i=0;i<6;i++)

  7. 匿名用户2024-01-25

    排序需要双循环:

    外循环:每个循环都填充 a[0]、a[1]、a[2]、a[3] 和 a[4],以存储最小的元素。

    Inner Loop:外循环元素位置之后的最小值。

    for ( i=0:i<5;i++ 循环以数据数减去 1 结束

    for ( j=i+1;j<6;j++ 循环从外部循环的指定位置之后的 1 开始,直到数组的末尾。

    如果 ( a[i]>a[j] ) 如果大于,则交换,如果更改为小于,则从大到小排序。

  8. 匿名用户2024-01-24

    错误 1:当 i 等于 5 时,当比较大小时,它会溢出,if(a[i]>a[i+1]))。

    误区2:你不能这样排序,你是用冒泡算法吗,冒泡算法外面有一层循环。

  9. 匿名用户2024-01-23

    例如,a= 执行程序后,结果是 a= 这里应该包含两个循环

    int main()

    for(i=0;i<6;i++)

    for(i=0;i<6;i++)

    if(a[i]>a[i+1])

    .其余的都是一样的。

  10. 匿名用户2024-01-22

    你得到的结果是这样:2、4、5、7、3、9;你只是像这样交换相邻的数字,你不能把它们全部比较。

    #include

    int main()

    for(i=0;i<6;i++)

    for(j=i+1;j<7;j++)

    for(i=0;i<6;i++)

  11. 匿名用户2024-01-21

    只有 6 个数组 a,a[i+1] 会导致索引越界并报错,第一个 for 循环只能去 5,不能去 6

  12. 匿名用户2024-01-20

    第一个for(i=0; i<6;i++)

    更改为 for(i=-1; i<5;i++) 试一试。

  13. 匿名用户2024-01-19

    当 i 等于 5 时,当比较大小时,它会溢出,if(a[i]>a[i+1]))。

  14. 匿名用户2024-01-18

    case'1':直接情况 1 就可以了。 没有单引号。

  15. 匿名用户2024-01-17

    Grade 定义为 int 类型,因此情况 1、情况 2....就是这样,您不需要加单引号。

  16. 匿名用户2024-01-16

    算法本身很好,但你必须将输入和输出两个数组分开:

    for(b=0;b

相关回答
10个回答2024-07-22

此错误表示等号附近存在语法错误。

例如if(x=0),这句话可能会提示这个错误,因为一个等号是赋值,两个等号等于意义,if是判断语句,所以需要用两个等号,一个是赋值,而不是判断。 >>>More

3个回答2024-07-22

int i,j,temp;

scanf("%d",&a[j]);这里没有值,此外,您最初设置了 5 个数字,那么您要输入什么? >>>More

14个回答2024-07-22

在 VisualStudio 2013 中编写和调试 C 语言程序的步骤: 1.打开 [文件] - 新建 - 项目以打开“新建项目”窗口。2. 在[模板]、[名称]、[位置]和[解决方案名称]中选择[Visual C++] Win32控制台应用程序,可以根据需要填写。 >>>More

14个回答2024-07-22

不知道是不是问题,这个**格式挺乱的,看起来有点累。 >>>More

18个回答2024-07-22

您的程序中可能存在两个错误,请检查:

1 for (i = 3; i < sqrt(; i += 2)if (a[i] == 1) >>>More