标题: 为什么运行C语言二维数组出来的值不对(详看贴内容) [打印本页]

作者: WGL88    时间: 2019-7-11 16:17
标题: 为什么运行C语言二维数组出来的值不对(详看贴内容)
各位师兄,有个问题请教下,我用DEV-C++编译器编译如下一段源代码,为什么得到的结果行=3,列=4,正确的结果应该是行=2,列=3,因为有个a[0][0]为第一位。

  1. #include<stdio.h>
  2. void main()
  3. {
  4.         int i,j,a[3][4],row,col,max; //定义参数
  5.         for(i=0;i<3;i++)//行循环
  6.         {
  7.                 for(j=0;j<4;j++)//列循环
  8.                 {
  9.                         scanf("%d",&a[i][j]);//输入12个整数
  10.                 }
  11.         }
  12.         max = a[0][0];//设定a[0][0]为最大值
  13.         row = 0;//行为0
  14.         col = 0;//列为0
  15.         for(i=0;i<3;i++)
  16.         {
  17.                 for(j=0;j<4;j++)
  18.                 {
  19.                         if(a[i][j] > max)
  20.                         {
  21.                                 max = a[i][j];
  22.                                 row = i;
  23.                                 col = j;
  24.                         }
  25.                 }
  26.         }
  27.         printf("max=%d,行=%d,列=%d",max,i,j);
  28. }
复制代码

QQ截图20190711161706.png (10.46 KB, 下载次数: 39)

QQ截图20190711161706.png

作者: 尹子归来    时间: 2019-7-12 08:35
因为退出for循环最后是执行了一步表达式三即i++;这时候i=3了,判断否出来,此时i就是为3 的
作者: f556    时间: 2019-7-12 09:20
2楼正解,for(i=0;i<3;i++)不执行for时i是=3的。
作者: haohaoxiansheng    时间: 2019-7-12 09:27
是的,问题就出在这里,for(i=0;i<3;i++)不执行for时i是=3的。
作者: WGL88    时间: 2019-7-16 11:29
那程序编写问题处在哪?如何改正呢?
作者: db895166315    时间: 2019-7-17 08:53
考虑一下for循环的特点,既然弹出循环的时候,i=3,j=4,你可以令row=i-1,col=j-1.即可输出正确结果。
作者: 白字儿先生    时间: 2019-7-17 09:57
2楼正解,for(i=0;i<3;i++)不执行for时i是=3的
作者: xujing    时间: 2019-7-17 17:08
二楼正解




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1