【问题描述】
现有两行三列的二维数组,数据是从键盘输入。请使用指针法找出其中最小的数,并输出对应的行号和列号(如果最小值有多个,输出最后一次出现最小值的行数和列数)。
要求:
1、不在子函数中输出。
2、使用指定子函数,不得修改。
void GetMin(int *p,int m,int n,int *b)//p是行地址,m是行,n是列,b存储最小值、行和列的结果
【输入形式】
主函数中循环输入2行3列数组元素。
【输出形式】
输出最后一次最小值及所在行号和列号
【样例输入】
7 6 4
4 3 3
【样例输出】
min=3,2,3
【样例说明】
【评分标准】
#include<stdio.h>
void GetMin(int *p,int m,int n,int *b)
{
int i,j;
b[0]=*p;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(*b>=*(p+i*n+j))
{
*b=*(p+i*n+j);
*(b+1)=i;
*(b+2)=j;
}
}
}
}
int main()
{
int a[2][3],b[3];
int *p;
int m=2,n=3,i,j;
p=&a[0][0];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
GetMin(p,m,n,b);
printf("min=%d,%d,%d", *b, *(b+1)+1,*(b+2)+1);
return 0;
}