user-0 提问: 二维数组求解

回复:
user: user-1
content: #3第一段代码，m和n搞反了，纠正后：//题目（输入m,n,o，接着输入m*n个数，其中0<m,n<30，存为m*n二维数组中查找o，输出第一次出现o的位置。 //如果找不到，输出not found）大佬们看一下，我想在二维数组里输入一串数该怎么改啊，m和n也是参数啊， //这样数组里怎么写才能输入进去数字啊，还有怎么输出第一次的位置呢？？？？求解求解，大一笨蛋要死了 #include<stdio.h> int main() {     int m,n,o;     int x,y;     int *cz;      scanf("%d%d%d",&m,&n,&o);     if (!(0<m && m<30 && 0<n && n<30)) return 1;     cz=new int[m*n];     for (y = 0; y < m; y++) {         for (x = 0; x < n; x++) {             scanf("%d",&cz[y*n+x]);         }     }     for (y = 0; y < m; y++) {         for (x = 0; x < n; x++) {             if (o == cz[y*n+x]) {                 printf("(%d,%d)\n",x,y);                 break;             }         }         if (x<n) break;     }     if (y>=m) printf("not found\n");     delete[] cz;      return 0; } //input: //2 3 9 //11 12 13 //21 22 23 //output: //not found // //input: //2 3 13 //11 12 13 //21 13 23 //output: //(2,0) //

user: user-1
content: 楼上用最大30x30的数组也行。

user: user-1
content: //题目（输入m,n,o，接着输入m*n个数，其中0<m,n<30，存为m*n二维数组中查找o，输出第一次出现o的位置。 //如果找不到，输出not found）大佬们看一下，我想在二维数组里输入一串数该怎么改啊，m和n也是参数啊， //这样数组里怎么写才能输入进去数字啊，还有怎么输出第一次的位置呢？？？？求解求解，大一笨蛋要死了 #include<stdio.h> int main() {     int m,n,o;     int x,y;     int *cz;      scanf("%d%d%d",&m,&n,&o);     if (!(0<m && m<30 && 0<n && n<30)) return 1;     cz=new int[m*n];     for (y = 0; y < n; y++) {         for (x = 0; x < m; x++) {             scanf("%d",&cz[y*m+x]);         }     }     for (y = 0; y < n; y++) {         for (x = 0; x < m; x++) {             if (o == cz[y*m+x]) {                 printf("(%d,%d)\n",x,y);                 break;             }         }         if (x<m) break;     }     if (y>=n) printf("not found\n");     delete[] cz;      return 0; } //input: //2 3 9 //11 12 13 //21 22 23 //output: //not found // //input: //2 3 13 //11 12 13 //21 13 23 //output: //(0,1) //  非要用真正的二维数组的话，参考下面： #include <stdio.h> #include <stdlib.h> int **newarr2d(int rows,int cols) {     int **p,i;      p=new int *[rows];     if (NULL==p) exit(1);     for (i=0;i<rows;i++) {         p[i]=new int[cols];         if (NULL==p[i]) exit(1);     }     return p; } void deletearr2d(int **p,int rows) {     int i;      for (i=0;i<rows;i++) {         delete[] p[i];     }     delete[] p; } int main() {     int **arr2d,i,j,r,c;      r=4;     c=5;     //在堆中开辟一个4×5的二维int数组     arr2d=newarr2d(r,c);     for (i=0;i<r;i++) {         for (j=0;j<c;j++) {             arr2d[i][j]=i*c+j;         }     }     for (i=0;i<r;i++) {         for (j=0;j<c;j++) {             printf(" %2d",arr2d[i][j]);         }         printf("\n");     }     deletearr2d(arr2d,r);      r=6;     c=3;     //在堆中开辟一个6×3的二维int数组     arr2d=newarr2d(r,c);     for (i=0;i<r;i++) {         for (j=0;j<c;j++) {             arr2d[i][j]=i*c+j;         }     }     for (i=0;i<r;i++) {         for (j=0;j<c;j++) {             printf(" %2d",arr2d[i][j]);         }         printf("\n");     }     deletearr2d(arr2d,r);      return 0; } //  0  1  2  3  4 //  5  6  7  8  9 // 10 11 12 13 14 // 15 16 17 18 19 //  0  1  2 //  3  4  5 //  6  7  8 //  9 10 11 // 12 13 14 // 15 16 17 //

user: user-2
content: #include<stdio.h>  #define ROW     30 #define COL     30  int main() {     int m,n,o;     int i,j;     int cz[ROW][COL];     scanf("%d %d %d",&m,&n,&o);     if (m > ROW)         m = ROW;     if (n > COL)         n = COL;      for (i = 0; i < m; i++)     //遍历     {         for (j = 0; j < n; j++)         {             scanf("%d", &cz[i][j]);         }     }     for (i = 0; i < m; i++)     //遍历     {         for (j = 0; j < n; j++)         {             if (o == cz[i][j]) {                 printf("%d,%d",i,j);                 break;             }         }         if (j < n)             break;     }     if (i >= m)         printf("not found!\n");      return 0; } 供参考～

user: user-3
content: int cz[m][n] 是不可以的，既然 0<m,n<30，那就 int cz[30][30]