4.14 使用数组时的四个要点

1.长宽相等的矩阵和数组完全两码事,访问行和访问列,不是简单的行列互换访问。要尊重原始数据的行列格式。(只有行和列相同的等形矩阵才适合直接互换)
判断错误的方式,是从arr  ][ ]这个式子来判断,一定要明确左[ ]控制行, 右[ ]控制列,然后才再看双层循环,看看行和列的大小有没有出错。
 
 
//只有行列相等才能这样直接互换 i j 来访问行列。
int main(void)
{
    int arr[5][5];
    int i,j;
    for(i = 0;i < 5;i++)//访问每一行
    {
        for(j = 0;j < 5;j++)
        {
            printf("%3d".arr[i][j]);
        }
        putchar(10);
    }
    
    for(i = 0;i < 5;i++)//访问每一列
    {
        for(j = 0;j < 5;j++)
        {
            printf("%3d".arr[j][i]);
        }
        putchar(10);
    }
    
    return 0;
}
//错误!访问行和访问列,不是简单的行列互换访问。要尊重原始数据的行列格式。
int main(void)
{
    int arr[3][4];
    int i,j;
    for(i = 0;i < 3;i++)//访问每一行 //正确
    {
        for(j = 0;j < 4;j++)
        {
            printf("%3d",arr[i][j]);
        }
        putchar(10);
    }
    
    for(i = 0;i < 3;i++)//访问每一列  //错误 说的就是这个
    {
        for(j = 0;j < 4;j++)
        {
            printf("%3d",arr[j][i]);
        }
        putchar(10);
    }
    
    for(i = 0;i < 4;i++)//访问每一列  //正确,但是写法我觉得垃圾,逻辑容易造成误解。
    {
        for(j = 0;j < 3;j++)
        {
            printf("%3d",arr[j][i]);
        }
        putchar(10);
    }
    
    for(j = 0;j < 4;j++)//访问每一列  //正确,i控制行,j控制列。习惯性喜欢用ij控制行列。
    {
        for(i = 0;i < 3;i++)
        {
            printf("%3d",arr[i][j]);
        }
        putchar(10);
    }

    return 0;
}
 
2.使用一个嵌套循环访问数组时,同时求行和列内容相关的问题。
见4.13
 
3.扫描数组时,双重循环与行列下标如何配合,确定扫描每大轮前的初始位置的定位(外层循环+内存循环初始化式决定),以及每小趟扫描时的走向(内层循环决定)
见4.12 
 
4.使用数组指针时各种灵活使用。

猜你喜欢

转载自www.cnblogs.com/ZhuLuoJiGongYuan/p/9506950.html
今日推荐