鱼C论坛

 找回密码
 立即注册
查看: 1888|回复: 1

s1e20习题

[复制链接]
发表于 2019-11-1 23:08:40 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main(){
        int i,j;
       
        int a[4][5] = {
        {1,2,3,4,5},
        {6,7,8,9,10},
        {11,12,13,14,15},
        {16,17,18,19,20}
};
       
        for (i=0;i<4;i++)
        {
                for (j=0;j<5;j++)
                {

                        printf("%2d ",a[i][j]);
                        if(i+j=3){
                        printf("\n");
                        }
                }
        }

        return 0;
       
}
怎么实现换行的???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-2 00:24:36 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-2 00:31 编辑

        在内存中,任何多维数组实际都是以一维数组的形式呈现的,例如,二维数组 a ,与一维数组 aa 是完全一样的:
        int a[4][5] = {{ 1 ,  2 ,  3 ,  4 ,  5},
                       { 6 ,  7 ,  8 ,  9 , 10},
                       {11 , 12 , 13 , 14 , 15},
                       {16 , 17 , 18 , 19 , 20}} ;
        int aa[] = { 1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 , 10 , \
                    11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20} ;
        通过这种转换可以看出,把多维数组视为一维数组,每个元素的先后顺序保持不变。多维数组不过就是对一维数组分了一下组而已。
        懂得了这种转换关系,事情就变得好办了。二维数组 a 的每行有 5 个元素,所以,二维下标与一维下标的换算关系为:
        a[i][j] = aa[i * 5 + j]
        根据代码:
                        if(i + j == 3)  printf("\n") ;
        在 i + j = 3 的时候,会输出一个回车符,就二维数组 a 而言,与一维数组 aa 之间存在以下对应关系:
        a[0][3]  ->  aa[ 3]
        a[1][2]  ->  aa[ 7]
        a[2][1]  ->  aa[11]
        a[3][0]  ->  aa[15]
        所以,程序会在输出完 a[0][3]、a[1][2]、a[2][1]、a[3][0] 后,各输出一个回车符,也就是说,对全部 5 × 4 = 20 个元素一共输出 5 行,每输出 4 个元素就输出一个回车。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 19:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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