急需解决的一个问题,求大神帮忙。
求二维数组中每一行的最大数,再放入一个一维数组中。思路我大概明白了,给出具体的二维数组比如a[2][3],a[3][4] 我也会编写程序,就是不知道对于a[m][n]怎么编写程序啊,求大神给个完整的程序,最好是没用到指针的程序。
[ 本帖最后由 ly2222 于 2012-6-30 21:05 编辑 ]
程序代码:#include <stdio.h>
#include <malloc.h> //malloc
#include <assert.h> //assert
#include <limits.h> //INT_MIN
int main()
{
int **p;//动态二位数组
int *m;//存储最大值的一维数组
int row, col;//动态指定行和列
int i, j;
//请确保输入合法。
scanf("%d%d", &row, &col);
p = (int **)malloc(sizeof(int *) * row);
assert(NULL != p);
for (i=0; i<col; i++)
{
p[i] = (int *)malloc(sizeof(int) * col);
assert(NULL != p[i]);
}
m = (int *)malloc(sizeof(int) * col);
assert(NULL != m);
for (i=0; i<row; i++)
{
m[i] = INT_MIN;//初始每行最大值为最小
for (j=0; j<col; j++)
{
scanf("%d", &p[i][j]);//输入每个值
if (m[i] < p[i][j])//筛选每行的最大值
{
m[i] = p[i][j];
}
}
}
//输出每行最大值
printf("\n\n");
for (i=0; i<row; i++)
{
printf("%d\t", m[i]);
}
printf("\n\n");
return 0;
}
程序代码:#include <stdio.h>
#include <malloc.h> //malloc
#include <assert.h> //assert
#include <limits.h> //INT_MIN
int main()
{
int **p;//动态二位数组
int *m;//存储最大值的一维数组
int row, col;//动态指定行和列
int i, j;
//请确保输入合法。
scanf("%d%d", &row, &col);
p = (int **)malloc(sizeof(int *) * row);
assert(NULL != p);
for (i=0; i<col; i++)
{
p[i] = (int *)malloc(sizeof(int) * col);
assert(NULL != p[i]);
}
m = (int *)malloc(sizeof(int) * col);
assert(NULL != m);
for (i=0; i<row; i++)
{
m[i] = INT_MIN;//初始每行最大值为最小
for (j=0; j<col; j++)
{
scanf("%d", &p[i][j]);//输入每个值
if (m[i] < p[i][j])//筛选每行的最大值
{
m[i] = p[i][j];
}
}
}
//输出每行最大值
printf("\n\n");
for (i=0; i<row; i++)
{
printf("%d\t", m[i]);
free(p[i]);
}
printf("\n\n");
free(p);
free(m);
return 0;
}