奇点QIDIAN 2023-11-28 01:10 采纳率: 0%
浏览 7

C:\Users\LENOVO\Desktop\collect2.exe [Error] ld returned 1 exit status


#include <stdio.h>
void sort(int a[],int n);
int main()
{
  int  a[3][4],i,j;
  for(i=0;i<3;i++)
     for(j=0;j<4;j++)
         scanf("%d",&a[i][j]);
   for(i=0;i<3;i++) sort(a[i],4);
   for(i=0;i<3;i++)
   {  for(j=0;j<4;j++)  printf("%5d",a[i][j]);
         printf("\n");
        }

  return 0;
 }
/* 请在这里填写答案 */
void sort(int a[],int n)
{
    int i,j,tem;
        for(j=1;j<n;j++)
        {
            if(a[j-1]>a[j])
            {
                tem=a[j-1];
            a[j-1]=a[j];
            a[j]=tem;
            }
            
        }
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-28 04:05
    关注

    【以下回答由 GPT 生成】

    问题是:代码中的排序函数sort无法正常工作。

    代码中的sort函数实现了冒泡排序的算法,但是在排序中只有一个外循环,在每次外循环完毕后,还需要再进行一次内循环以保证数组完全排序。这是因为冒泡排序算法需要多次的比较和交换。

    正确的排序函数sort应该是这样的:

    void sort(int a[], int n)
    {
        int i,j,tem;
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-1-i;j++)
            {
                if(a[j]>a[j+1])
                {
                    tem=a[j];
                    a[j]=a[j+1];
                    a[j+1]=tem;
                }
            }
        }
    }
    

    首先,外循环控制了需要进行多少趟排序,所以需要执行n-1趟排序。

    内循环控制了每趟排序中进行的比较和交换。每次内循环会比较当前位置和下一个位置的大小,如果当前位置的元素大于下一个位置的元素,就进行交换。

    最后,在main函数中将会正确地调用sort函数进行排序,并输出结果。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月28日