程序改错。在一个3x4矩阵中找出最大数及最大数所在元素的下标。 #include <stdio.h> #define M 3 #define N 4 int FindMax(int (*p)[N],int m,int n, int *pRow, int *pCol) main() { int score[M][N], i, j, maxScore, row, col; for ( i=0; i<M; i++ ) { for ( j=0; j<N; j++ ) { scanf("%d", &score[i][j]); } } maxScore = FindMax(*score, M, N, &row, &col); printf("%d %d %d\n", maxScore, row+1, col+1); } int FindMax( int (*p)[N], int m, int n, int *pRow, int *pCol ) { int i, j, max; max = *(p); pRow = 0; pCol = 0; for (i=0; i<m; i++) { for (j = 0; j<n; j++) { if ( *(*(p+i)+j) > max ) { max = *(*(p+i)+j) ; *pRow = i; *pCol = j; } } } }
时间: 2023-06-17 07:08:25 浏览: 171
B:找出数组中最大数和其下标
程序存在以下错误:
1. FindMax函数中的pRow和pCol应该是指针类型,而不是整型。
2. 在FindMax函数中,max的初值应该为矩阵中第一个元素而不是第一个指针值。
3. 在FindMax函数中,pRow和pCol应该通过指针传递进来,并在函数中修改,而不是在函数中重新赋值。
4. 在主函数中,调用FindMax函数时应该传递score的地址,而不是score的第一行的地址。
下面是修改后的程序:
```
#include <stdio.h>
#define M 3
#define N 4
int FindMax(int (*p)[N], int m, int n, int *pRow, int *pCol);
int main() {
int score[M][N], i, j, maxScore, row, col;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &score[i][j]);
}
}
maxScore = FindMax(score, M, N, &row, &col);
printf("%d %d %d\n", maxScore, row+1, col+1);
return 0;
}
int FindMax(int (*p)[N], int m, int n, int *pRow, int *pCol) {
int i, j, max;
max = *(*p); // 修改1
*pRow = 0; // 修改2
*pCol = 0; // 修改2
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
if (*(*(p+i)+j) > max) {
max = *(*(p+i)+j);
*pRow = i; // 修改3
*pCol = j; // 修改3
}
}
}
return max;
}
```
阅读全文