user-0 提问: 小白写不出作业，求指导

回复:
user: user-1
content: float a[3][3]={(2,4,3),(1,3,1),(6,5,3)}; 里面小括号改成大括号，否则小括号里只是逗号表达式  注释前要加上 //

user: user-2
content: #include <stdio.h>   #define ROW 3 #define COL 3  int main(void) {     float a[ROW][COL] = {         {2, 4, 3},         {1, 3, 1},         {6, 5, 3}     };     int i, j, k;     int row, col;     int max_row, max_col;      for (i = 0; i < ROW; i++) {         max_row = a[i][0];         col = 0;         /* find max value in row */         for (j = 1; j < COL; j++)             if (max_row < a[i][j]) {                 max_row = a[i][j];                 col = j;             }          /* Find max value in col */         max_col = a[i][col];         for (k = 0; k < ROW; k++)             if (max_col < a[k][col]) {                 max_col = a[k][col];                 row = k;             }         /* Check the condition*/         if (row == i && max_col == max_row)             printf("鞍点为a[%d][%d] = %.1f\n", row, col, a[row][col]);      }     return 0; } 个人的逻辑

user: user-3
content: 引用 3 楼 weixin_37836059 的回复:[quote=引用 2 楼 user-4的回复:]你那样初始化只是把，3附给了a[0][0]，把1附给a[0][1]，把3附给了a[0][2]，其他都是0 就是说，我这样只初始化了三个元素“（2,4,3）”,“（1,3,1）”,“（6,5,3）”，每个元素只有最后一个数字被赋值给了a，是这样吗？？这是什么原理啊[/quote]   float a[3][3]={{2,4,3},{1,3,1},{6,5,3}};   这样写应该对了

user: user-0
content: 引用 2 楼 user-4的回复:你那样初始化只是把，3附给了a[0][0]，把1附给a[0][1]，把3附给了a[0][2]，其他都是0 就是说，我这样只初始化了三个元素“（2,4,3）”,“（1,3,1）”,“（6,5,3）”，每个元素只有最后一个数字被赋值给了a，是这样吗？？这是什么原理啊

user: user-4
content: 你那样初始化只是把，3附给了a[0][0]，把1附给a[0][1]，把3附给了a[0][2]，其他都是0

user: user-4
content: 你的二维数组初始化错了，全用大括号

user: user-2
content: 引用 10 楼 weixin_37836059 的回复:[quote=引用 9 楼 自信男孩的回复:][quote=引用 8 楼 weixin_37836059 的回复:] [quote=引用 5 楼 cfjtaishan 的回复:] #include <stdio.h>   #define ROW 3 #define COL 3  int main(void) {     float a[ROW][COL] = {         {2, 4, 3},         {1, 3, 1},         {6, 5, 3}     };     int i, j, k;     int row, col;     int max_row, max_col;      for (i = 0; i < ROW; i++) {         max_row = a[i][0];         col = 0;         /* find max value in row */         for (j = 1; j < COL; j++)             if (max_row < a[i][j]) {                 max_row = a[i][j];                 col = j;             }          /* Find max value in col */         max_col = a[i][col];         for (k = 0; k < ROW; k++)             if (max_col < a[k][col]) {                 max_col = a[k][col];                 row = k;             }         /* Check the condition*/         if (row == i && max_col == max_row)             printf("鞍点为a[%d][%d] = %.1f\n", row, col, a[row][col]);      }     return 0; } 个人的逻辑 学习到啦~不过我感觉我的逻辑也挺好的嘛[/quote] 学习编程是不能靠感觉的，除非你的感觉是百分百对的。 改一下你的初始化数组形式，小括号改大括号，然后运行一下看看是否是正确答案。 如果能得出鞍点值是6.0就是对的。[/quote] 能得出啊~鞍点是列最小，是a［1］［1］=3嘛，毕竟我之前检查了好遍的[/quote] 不好意思，我把鞍点的定义看错了。以下是我的实现： #include <stdio.h> #include <stdlib.h> #include <time.h>  #define ROW 4 #define COL 5   void init_array(int (*array)[COL], int row, int col) {     int i, j;      srand(time(NULL));     for (i = 0; i < row; i++)         for (j = 0; j < col; j++)             array[i][j] = rand() % 100; }   void show_array(int (*array)[COL], int row, int col) {     int i, j;      for (i = 0; i < row; i++) {         for (j = 0; j < col; j++)             printf("%2d ", array[i][j]);         putchar(10);     } }  void check_saddle_point(int (*point)[2], int (*array)[COL], int row, int col) {     int i, j, k, cnt = 0;     int row_idx, col_idx;     int max_row, min_col;      for (i = 0; i < row; i++) {         max_row = array[i][0];         col_idx = 0;         /* find max value in row */         for (j = 1; j < COL; j++)             if (max_row < array[i][j]) {                 max_row = array[i][j];                 col_idx = j;             }          /* Find min value in col */         min_col = array[i][col_idx];         row_idx = i;         for (k = 0; k < row; k++)             if (min_col > array[k][col_idx]) {                 min_col = array[k][col_idx];                 row_idx = k;             }         /* Check the condition*/         if (row_idx == i && min_col == max_row) {             point[cnt][0] = row_idx;             point[cnt][1] = col_idx;             cnt++;         }      } }  void init_point_array(int (*point)[2], int row) {     int i, j;      for (i = 0; i < row; i++)         for (j = 0; j < 2; j++)             point[i][j] = -1; }  void show_saddle_point(int (*point)[2], int (*array)[COL], int row) {     int i, row_idx, col_idx;      for (i = 0; i < row; i++) {         row_idx = point[i][0];         col_idx = point[i][1];         if (row_idx >= 0 && col_idx >= 0)             printf("鞍点为array[%d][%d] = %d\n", row_idx, col_idx, array[row_idx][col_idx]);     } }  int main(void) {     int array[ROW][COL];     int point[ROW][2];      init_array(array, ROW, COL);     init_point_array(point, ROW);     show_array(array, ROW, COL);     check_saddle_point(point, array, ROW, COL);     show_saddle_point(point, array, ROW);      return 0; }

user: user-0
content: 引用 9 楼 自信男孩的回复:[quote=引用 8 楼 weixin_37836059 的回复:] [quote=引用 5 楼 cfjtaishan 的回复:] #include <stdio.h>   #define ROW 3 #define COL 3  int main(void) {     float a[ROW][COL] = {         {2, 4, 3},         {1, 3, 1},         {6, 5, 3}     };     int i, j, k;     int row, col;     int max_row, max_col;      for (i = 0; i < ROW; i++) {         max_row = a[i][0];         col = 0;         /* find max value in row */         for (j = 1; j < COL; j++)             if (max_row < a[i][j]) {                 max_row = a[i][j];                 col = j;             }          /* Find max value in col */         max_col = a[i][col];         for (k = 0; k < ROW; k++)             if (max_col < a[k][col]) {                 max_col = a[k][col];                 row = k;             }         /* Check the condition*/         if (row == i && max_col == max_row)             printf("鞍点为a[%d][%d] = %.1f\n", row, col, a[row][col]);      }     return 0; } 个人的逻辑 学习到啦~不过我感觉我的逻辑也挺好的嘛[/quote] 学习编程是不能靠感觉的，除非你的感觉是百分百对的。 改一下你的初始化数组形式，小括号改大括号，然后运行一下看看是否是正确答案。 如果能得出鞍点值是6.0就是对的。[/quote] 能得出啊~鞍点是列最小，是a［1］［1］=3嘛，毕竟我之前检查了好遍的

user: user-2
content: 引用 8 楼 weixin_37836059 的回复:[quote=引用 5 楼 cfjtaishan 的回复:] #include <stdio.h>   #define ROW 3 #define COL 3  int main(void) {     float a[ROW][COL] = {         {2, 4, 3},         {1, 3, 1},         {6, 5, 3}     };     int i, j, k;     int row, col;     int max_row, max_col;      for (i = 0; i < ROW; i++) {         max_row = a[i][0];         col = 0;         /* find max value in row */         for (j = 1; j < COL; j++)             if (max_row < a[i][j]) {                 max_row = a[i][j];                 col = j;             }          /* Find max value in col */         max_col = a[i][col];         for (k = 0; k < ROW; k++)             if (max_col < a[k][col]) {                 max_col = a[k][col];                 row = k;             }         /* Check the condition*/         if (row == i && max_col == max_row)             printf("鞍点为a[%d][%d] = %.1f\n", row, col, a[row][col]);      }     return 0; } 个人的逻辑 学习到啦~不过我感觉我的逻辑也挺好的嘛[/quote] 学习编程是不能靠感觉的，除非你的感觉是百分百对的。 改一下你的初始化数组形式，小括号改大括号，然后运行一下看看是否是正确答案。 如果能得出鞍点值是6.0就是对的。

user: user-0
content: 引用 5 楼 cfjtaishan 的回复:#include <stdio.h>   #define ROW 3 #define COL 3  int main(void) {     float a[ROW][COL] = {         {2, 4, 3},         {1, 3, 1},         {6, 5, 3}     };     int i, j, k;     int row, col;     int max_row, max_col;      for (i = 0; i < ROW; i++) {         max_row = a[i][0];         col = 0;         /* find max value in row */         for (j = 1; j < COL; j++)             if (max_row < a[i][j]) {                 max_row = a[i][j];                 col = j;             }          /* Find max value in col */         max_col = a[i][col];         for (k = 0; k < ROW; k++)             if (max_col < a[k][col]) {                 max_col = a[k][col];                 row = k;             }         /* Check the condition*/         if (row == i && max_col == max_row)             printf("鞍点为a[%d][%d] = %.1f\n", row, col, a[row][col]);      }     return 0; } 个人的逻辑 学习到啦~不过我感觉我的逻辑也挺好的嘛

user: user-0
content: 引用 6 楼 paschen 的回复:float a[3][3]={(2,4,3),(1,3,1),(6,5,3)}; 里面小括号改成大括号，否则小括号里只是逗号表达式  注释前要加上 // 百度逗号表达式：（3+5,6+8）称为逗号表达式，其求解过程先表达式1，后表达式2，整个表达式值是表达式2的值。 顿时就明白了。超谢谢哦