#include <stdio.h> void sort(int a[][5],int n,int k); int main( ) { int a[4][5]={{5,9,7,4,2},{1,2,3,4,5},{8,4,5,2,1},{7,5,3,6,4}},k; int i,j; scanf("%d",&k); if(k>=0&&k<=4) { sort(/*1*/ /*1*/); for(i=0;i<4;i++) { for(j=0;j<5;j++) printf("%4d",a[i][j]); printf("\n"); } } else printf("k值应在[0,4]内.\n"); return 0; } void sort(int a[][5],int n,int k) { /*2*********Program**********/ /*2********* End **********/ }
时间: 2023-06-24 17:09:06 浏览: 30
这段代码有两个问题:
1. 在主函数中调用sort函数时,第一个参数未传入实参a,需要将a作为第一个参数传入。
2. 在sort函数中,未对二维数组a进行排序操作,需要在函数中添加排序算法。
修改后的代码如下:
```
#include <stdio.h>
void sort(int a[][5], int n, int k);
int main()
{
int a[4][5] = {{5, 9, 7, 4, 2}, {1, 2, 3, 4, 5}, {8, 4, 5, 2, 1}, {7, 5, 3, 6, 4}}, k;
int i, j;
scanf("%d", &k);
if (k >= 0 && k <= 4)
{
sort(a, 4, k);
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
printf("%4d", a[i][j]);
printf("\n");
}
}
else
printf("k值应在[0,4]内.\n");
return 0;
}
void sort(int a[][5], int n, int k)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (a[j][k] > a[j + 1][k])
{
// 交换a[j]和a[j+1]
temp = a[j][k];
a[j][k] = a[j + 1][k];
a[j + 1][k] = temp;
}
}
}
}
```
这里使用冒泡排序算法对二维数组的第k列进行排序。