程序改错。在一个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-26 13:10:07 浏览: 242
c代码-6.3输出10个数的最大值和最小值的大小和下标
程序有几个问题需要改正:
1. 在函数定义处缺少返回值类型,应该加上 `int`。
2. 在函数中,指针变量 `pRow` 和 `pCol` 指向的地址没有修改,应该修改为 `*pRow = i` 和 `*pCol = j`。
3. 在主函数中调用 `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);
*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;
}
}
}
return max;
}
```
阅读全文