#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;
}
}
}
![](https://profile-avatar.csdnimg.cn/fa4171b0ebcb4708ae4bbd3b509bfe2b_2302_79344985.jpg!4)
C:\Users\LENOVO\Desktop\collect2.exe [Error] ld returned 1 exit status
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注
【以下回答由 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函数进行排序,并输出结果。
【相关推荐】
- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7477335
- 这篇博客也不错, 你可以看下collect2.exe: error: ld returned 1 exit status错误(C入门)
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在vue3中使用div标签时用background-image: url("'templates/demo/src/assets/医院名称.jpg'")页面不显示背景图片?
- ¥15 运动会成绩管理系统的设计与实现
- ¥15 matlab支持向量机使用错误
- ¥99 利用C/C++语言,使用TCP/IP协议,编一个简易聊天程序
- ¥15 如何使用python 实现对串口/dev/ttyUSB0进行上锁,使得该串口只能在一个python脚本中使用,其他脚本不能操作这个串口
- ¥15 晶体塑性有限元——Damask求解
- ¥30 设计一个图形用户界面来控制你机械臂的运动
- ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
- ¥15 前端返回pdf时不显示内容
- ¥50 如何在不能联网影子模式下的电脑解决usb锁