#include <stdio.h> /*------- ERROR ------*/ #define N 20; void fun(int a[], int n) { int i, j, t, p; for (j = 0 ;j < n-1 ;j++) { /*------- ERROR ------*/ p = j for (i = j;i < n; i++) if(a[i] < a[p]) /*------- ERROR ------*/ p = j t = a[p] ; a[p] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:"); for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:"); for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); }
时间: 2024-01-17 17:04:52 浏览: 129
#include <stdio.h>
根据代码的意图,应该是想实现选择排序的功能,但是代码中存在一些错误。
可以将代码修改如下:
```c
#include <stdio.h>
#define N 20
void fun(int a[], int n) {
int i, j, t, p;
for (j = 0; j < n - 1; j++) {
p = j; // 加上分号
for (i = j + 1; i < n; i++) { // 将 i 的初始值改为 j+1
if (a[i] < a[p]) {
p = i; // 将 p 改为 i
}
}
t = a[p]; a[p] = a[j]; a[j] = t;
}
}
int main() {
int a[N] = {9, 6, 8, 3, -1}, i, m = 5;
printf("排序前的数据:");
for (i = 0; i < m; i++) printf("%d ", a[i]); printf("\n");
fun(a, m);
printf("排序后的数据:");
for (i = 0; i < m; i++) printf("%d ", a[i]); printf("\n");
return 0; // 添加返回值
}
```
这样就可以实现选择排序的功能了。
阅读全文