找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2812|回复: 7
收起左侧

为什么运行C语言二维数组出来的值不对(详看贴内容)

[复制链接]
ID:521921 发表于 2019-7-11 16:17 | 显示全部楼层 |阅读模式
各位师兄,有个问题请教下,我用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
回复

使用道具 举报

ID:452821 发表于 2019-7-12 08:35 | 显示全部楼层
因为退出for循环最后是执行了一步表达式三即i++;这时候i=3了,判断否出来,此时i就是为3 的
回复

使用道具 举报

ID:282850 发表于 2019-7-12 09:20 | 显示全部楼层
2楼正解,for(i=0;i<3;i++)不执行for时i是=3的。
回复

使用道具 举报

ID:582736 发表于 2019-7-12 09:27 | 显示全部楼层
是的,问题就出在这里,for(i=0;i<3;i++)不执行for时i是=3的。
回复

使用道具 举报

ID:521921 发表于 2019-7-16 11:29 | 显示全部楼层
那程序编写问题处在哪?如何改正呢?
回复

使用道具 举报

ID:585493 发表于 2019-7-17 08:53 | 显示全部楼层
考虑一下for循环的特点,既然弹出循环的时候,i=3,j=4,你可以令row=i-1,col=j-1.即可输出正确结果。
回复

使用道具 举报

ID:585555 发表于 2019-7-17 09:57 | 显示全部楼层
2楼正解,for(i=0;i<3;i++)不执行for时i是=3的
回复

使用道具 举报

ID:183159 发表于 2019-7-17 17:08 | 显示全部楼层
二楼正解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表