请按题目给定的要求编程计算NXN方阵(其中N<=20)的最大值及最大值的行下标和列下标。 要求:1)N值在主函数读入;2)读入NXN方阵数据请调用Input函数完成;3)计算NXN方阵最大值及最大值行下标和列下标请调用FindMax函数完成;4)在主函数打印最大值及最大值的行下标和列下标。Input函数及FindMax函数原型如下。Input函数原型为: void Input( int a[ ][20], int n); 说明: 功 能:读入数组元素的值 参 数:数组a存放NXN方阵,n矩阵行数; 返回值:无。 FindMax函数原型为: int FindMax( int a[ ][20], int n, int *prow, int *pcol); 说明: 功 能:计算最大值及最大值行下标和列下标 参 数:数组a存放NXN方阵,n矩阵行数,prow最大值行下标,pcol最大值列下标; 返回值:最大值。 **输入提示信息**:"Input n:\n" **输入数据格式**:"%d" **输入提示信息**:"请按行读入方阵的值:\n" **输入数据格式**:"%d" **输出数据格式**:"最大值是:%d,最大值行下标是:%d,列下标是:%d\n" 注: 1、不允许使用 go to 语句; 2、不允许使用全局变量; 3、不用考虑数据的合法性,输入数据时保证2≤N≤20即可;
#include<stdio.h>
#define N 20
void Input(int a[][20], int n);
int FindMax(int a[][20], int n, int *prow, int *pcol);
int main()
{
int a[N][N], n;
int maxnum, maxrow, maxcol;//1
printf("Input n:\n");
scanf("%d", &n);//1
Input(a, n);//3
maxnum = FindMax(a, n, &maxrow, &maxcol);//4
printf("最大值是:%d,最大值行下标是:%d,列下标是:%d\n", maxnum, maxrow, maxcol);//2
return 0;
}
void Input(int a[][20], int n)
{
int i, j;
printf("请按行读入方阵的值:\n");
for (i = 0; i < n; i++) //1
{
for (j = 0; j < n; j++)//1
{
scanf("%d", &a[i][j]);//1
}
}
}
int FindMax(int a[][20], int n, int *prow, int *pcol)
{
int maxnum, i, j;
maxnum = a[0][0];//1
*prow = 0;//1
*pcol = 0;//1
for (i = 0; i < n; i++)//1
{
for (j = 0; j < n; j++)//1
{
if (a[i][j] > maxnum)//1
{
maxnum = a[i][j];//1
*prow = i;//1
*pcol = j;//1
}
}
}
return maxnum;//2
}