鱼C论坛

 找回密码
 立即注册
查看: 2548|回复: 6

关于二维数组的问题

[复制链接]
发表于 2022-5-25 22:20:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求问各位大佬a[3][4]是不是包括a[0][0]、a[0][0]、a[0][1]、a[0][2]、a[0][3]、a[1][0]、a[1][1]、a[1][2]、a[1][3]、a[2][0]、a[2][1]、a[2][2]、a[2][3]?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-25 22:22:24 | 显示全部楼层
可是对这个二维数组求最大值最小值时,为什么for循环的条件这样才是正确的?就是代码如果是这样的话,输出的答案才是正确的最大值和最小值。代码如下:#include<stdio.h>
main()
{
        int a[3][4]={{1,0,-32,21},{10,42,43,23},{345,2,12,0}};
        int max,min,i,j,t,c;
        max=a[0][0];
        min=a[0][0];
        for(i=0;i<3;i++)
        {
                for(j=0;j<4;j++)
                 {
                         if(a[i][j]>max)
                          {
                                  t=max;
                                  max=a[i][j];
                                  a[i][j]=t;
                          }
                    if(a[i][j]<min)
                      {
                              c=min;
                              min=a[i][j];
                              a[i][j]=min;
                          }
                 }
                    
        }
    printf("max=%d,min%d",max,min);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-25 22:23:24 | 显示全部楼层
但是我之前的代码是这样的,为什么这样输出的答案的最大值却不是整个二维数组的最大值呢?
#include<stdio.h>
main()
{
        int a[3][4]={{1,0,-32,21},{10,42,43,23},{345,2,12,0}};
        int max,min,i,j,t,c;
        max=a[0][0];
        min=a[0][0];
        for(i=0;i<2;i++)
        {
                for(j=0;j<4;j++)
                 {
                         if(a[i][j]>max)
                          {
                                  t=max;
                                  max=a[i][j];
                                  a[i][j]=t;
                          }
                    if(a[i][j]<min)
                      {
                              c=min;
                              min=a[i][j];
                              a[i][j]=min;
                          }
                 }
                    
        }
    printf("max=%d,min%d",max,min);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-25 22:28:07 | 显示全部楼层
数组的下标不应该是从0开始吗?for循环的条件那里有点不懂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-25 22:38:58 | 显示全部楼层
i<3
i=0 1 2
i<2
i=0 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-25 22:46:05 | 显示全部楼层
而且,为什么要和数组交换数值
这样不就行了
int main()
{
        int a[3][4]={{1,0,-32,21},{10,42,43,23},{345,2,12,0}};
        int max,min,i,j,t,c;
        max=a[0][0];
        min=a[0][0];
        for(i=0;i<3;i++)
        {
                for(j=0;j<4;j++)
                 {
                         if(a[i][j]>max)max=a[i][j]; 
                         else if(a[i][j]<min) min=a[i][j];
                      
                 }
                    
        }
        printf("max=%d,min=%d",max,min);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2022-8-19 19:33:55 | 显示全部楼层
i<3的话i有3种可能:0 1 2
i<2的话i有2种可能: 0 1
很明显,i<3不会时不会比2大
而且i<2的话会有缺失所以会有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 12:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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