急需解决的一个问题,求大神帮忙。
求二维数组中每一行的最大数,再放入一个一维数组中。思路我大概明白了,给出具体的二维数组比如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; }