【程序功能】对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序。 下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。 注意:请将修改正确后的完整源程序拷贝粘贴到答题区内。 对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。 改错时不能改变程序原有的意图,不能改变函数原型。 【含有错误的源程序】 #include <stdio.h> #define N 4 void swap(int *p1, int *p2) { int p; p=p1;p1=p2;p2=p; } void sort(int a[N][N]) { int i,j,k; for(i=0;i<N;i++) for(j=0;j<N-1;j++) for(k=j+1;k<N-1;k++) if(i%2==0?a[i][j]<a[i][k]:a[i][j]>a[i][k]) swap(a[i]+j,a[i]+k); } void main(){ int a[N][N]={{3,4,2,1},{8,7,5,6},{12,10,11,9},{15,14,16,13}}; int i,j; sort(a[N][N]); for (i=0;i<N;i++) { for(j=0;j<N;j++) printf("%3d",a[i][j]); printf("\n"); } }
时间: 2024-03-22 09:40:02 浏览: 18
改正后的程序如下:
```c
#include <stdio.h>
#define N 4
void swap(int *p1, int *p2)
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
void sort(int a[N][N])
{
int i, j, k;
for (i = 0; i < N; i++)
{
for (j = 0; j < N - 1; j++)
{
for (k = j + 1; k < N; k++) // 修改 k<N-1 为 k<N
{
if (i % 2 == 0 ? a[i][j] > a[i][k] : a[i][j] < a[i][k]) // 修改 < > 符号
{
swap(&a[i][j], &a[i][k]);
}
}
}
}
}
int main()
{
int a[N][N] = {{3, 4, 2, 1}, {8, 7, 5, 6}, {12, 10, 11, 9}, {15, 14, 16, 13}};
int i, j;
sort(a); // 修改 sort(a[N][N]) 为 sort(a)
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++) // 修改 j < N-1 为 j < N
{
printf("%3d", a[i][j]);
}
printf("\n");
}
return 0; // 添加 return 0
}
```
主要的错误包括:
1. swap函数中的指针使用错误,应该使用*p1和*p2表示指针所指向的值。
2. sort函数中的第三重循环中,k的取值范围应该是0到N-1,而不是0到N-2。
3. sort函数中比较大小的符号错误,应该根据题目要求修改。
4. main函数中调用sort函数时传递参数错误,应该直接传递二维数组名a即可。
5. main函数中输出二维数组时,内层循环的取值范围错误,应该是0到N-1。同时,程序最好添加return 0语句,表示程序正常结束。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)