关于二维数组的问题
求问各位大佬a是不是包括a、a、a、a、a、a、a、a、a、a、a、a、a?可是对这个二维数组求最大值最小值时,为什么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);
}
但是我之前的代码是这样的,为什么这样输出的答案的最大值却不是整个二维数组的最大值呢?
#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);
} 数组的下标不应该是从0开始吗?for循环的条件那里有点不懂。 i<3
i=0 1 2
i<2
i=0 1 而且,为什么要和数组交换数值
这样不就行了
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;
}
i<3的话i有3种可能:0 1 2
i<2的话i有2种可能: 0 1
很明显,i<3不会时不会比2大
而且i<2的话会有缺失所以会有问题
页:
[1]