fthgyh 发表于 2022-5-25 22:20:42

关于二维数组的问题

求问各位大佬a是不是包括a、a、a、a、a、a、a、a、a、a、a、a、a?

fthgyh 发表于 2022-5-25 22:22:24

可是对这个二维数组求最大值最小值时,为什么for循环的条件这样才是正确的?就是代码如果是这样的话,输出的答案才是正确的最大值和最小值。代码如下:#include<stdio.h>
main()
{
        int a={{1,0,-32,21},{10,42,43,23},{345,2,12,0}};
        int max,min,i,j,t,c;
        max=a;
        min=a;
        for(i=0;i<3;i++)
        {
                for(j=0;j<4;j++)
               {
                       if(a>max)
                      {
                              t=max;
                              max=a;
                              a=t;
                          }
                  if(a<min)
                      {
                              c=min;
                              min=a;
                              a=min;
                          }
               }
                  
        }
    printf("max=%d,min%d",max,min);
}

fthgyh 发表于 2022-5-25 22:23:24

但是我之前的代码是这样的,为什么这样输出的答案的最大值却不是整个二维数组的最大值呢?
#include<stdio.h>
main()
{
        int a={{1,0,-32,21},{10,42,43,23},{345,2,12,0}};
        int max,min,i,j,t,c;
        max=a;
        min=a;
        for(i=0;i<2;i++)
        {
                for(j=0;j<4;j++)
               {
                       if(a>max)
                      {
                              t=max;
                              max=a;
                              a=t;
                          }
                  if(a<min)
                      {
                              c=min;
                              min=a;
                              a=min;
                          }
               }
                  
        }
    printf("max=%d,min%d",max,min);
}

fthgyh 发表于 2022-5-25 22:28:07

数组的下标不应该是从0开始吗?for循环的条件那里有点不懂。

jhq999 发表于 2022-5-25 22:38:58

i<3
i=0 1 2
i<2
i=0 1

jhq999 发表于 2022-5-25 22:46:05

而且,为什么要和数组交换数值
这样不就行了
int main()
{
      int a={{1,0,-32,21},{10,42,43,23},{345,2,12,0}};
      int max,min,i,j,t,c;
      max=a;
      min=a;
      for(i=0;i<3;i++)
      {
                for(j=0;j<4;j++)
               {
                         if(a>max)max=a;
                       else if(a<min) min=a;
                     
               }
                  
      }
        printf("max=%d,min=%d",max,min);
        return 0;
}

陈尚涵 发表于 2022-8-19 19:33:55

i<3的话i有3种可能:0 1 2
i<2的话i有2种可能: 0 1
很明显,i<3不会时不会比2大
而且i<2的话会有缺失所以会有问题
页: [1]
查看完整版本: 关于二维数组的问题