求数组中的最大值_求二维数组的最大值。

原问题:求二维数组的最大值。
分类:编程开发 > 最后更新时间:【2016-12-15 08:29:27】
问题补充:

求二维数组的最大值。

练习时,建议用指向数组元素的指针(如*p)或用指向数组的指针(如(*p)[100])对数组元素进行访问。

先输入m和n,表示二维数组有m行n列。m或n为0,则结束。(1<=m,n<=100)然后输入m*n个整数,即输入各个二维数组元素。

输出

对应输出二维数组的最大值。

补充:样例输入2,31 2 34 5 63,423 4 5 3423 6 4 4511 2 33 180,0样例输出645补充:#include <stdio.h># define m 100# define n 100int main(){int a[100][100],max,i,j;int *p=&a[0][0];while(scanf("%d,%d",&m,&n)!=EOF)printf("\n");for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",p++);max=a[0][0];p=&a[0][0];for(i=0;i<m;i++)for(j=0;j<n;j++)if(max<*(p+i*n+j))max=*(p+i*n+j);printf("%d",max);return 0;}我这个要怎么改?

最佳答案

改好的,参考下:

#include <stdio.h>
# define M 100
# define N 100
//你定义的宏不正确,m,n下面用于变量,改为M,N
int main()
{
int a[M][N], m, n, max, i, j; //你的m,n是常量不能输入的,要用变量
int *p ;///= &a[0][0]; 这个要在循环中
while(scanf("%d,%d", &m, &n) != EOF)//输入行/列,以逗号隔开
{ //要大循环环的
// printf("\n"); 写在后面
if (m==0 || n==0 )
break; //若m或n为0,退出循环
fflush(stdin); //要清缓冲
p = &a[0][0]; //要赋在这里
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
scanf("%d", p++);
max = a[0][0];
p = &a[0][0];
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
if(max < * (p + i * n + j))
max = *(p + i * n + j);
printf("%d\n", max); //换行加这是
} //大循环结束
return 0;
}

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
13

分享到:

其他回答

暂无其它回答!

    推荐