二维数组基础

1.二维数组基础

二维数组的创建:类型 数组名 [ 数组长度1 ] [ 数组长度2 ]//狭义上为 [ 行 ] [ 列 ]

元素个数:行✖列

int main()
{
    int array[2][3]={1,2,3,4,5,6};
    int array1[2][3]={0};//其他值默认是0
    int array2[2][3]={{1},{2}};//第一行第一个数字是1,第二行第一个数字是2,其他默认是0
    int array3[][3]={1,2,3,4,5}//第一个方括号内的数组长度自动推导出来,行可以省略,列不能省略
    int array4[2][2][2]={ {{1,2},{3,4}} , {{5,6},{7,8}} }//三维数组,第一个(1,1,1)位置的数据是{1,2},依次类推......
    for(int i = 0;i < 2 ; i++ )
    {
        for(int j = 0;j < 3 ; j++ )  
        {
            printf("%d",array[i][j]);
        }
        printf("\n");//形成行列关键
    }
    return 0;
}

2,二维数组传参

void print_array(int arr[][3],int row,int cols)
{
      for(int i = 0;i < row ; i++ )
    {
        for(int j = 0;j < cols ; j++ )
        {
            printf("%d\t",arr[i][j]);
        }
        printf("\n");//形成行列关键
    }
}
int main()
{   
    printf_array(arr,2,3);//传参操作是函数名进行传参
    return 0;
}

3,字符类二维数组

char str[][10]={"yo ","~","bro"};//自动推导行数是3
for(int i=0 ; i<3 ; i++ )
{
   printf("%s\n",str[i]);//str[i]代表第i行的首地址
}
for(int i =0 ; i<3 ; i++ )
{
   scanf_s("%s",str[i],10); 
}
for(int i=0; i<3 ; i++ )
{
    printf("%d",str[i]);//str代表第一行的首地址
}
​

4,二维数组的常规操作

4.1制表操作

int main()
{
    char name[3][10] = {"雪豹丁真","拐零","孙笑川"};
    int score[3][3] = 
    {
        60,62,50,
        98,95,99,
        89,84,85
    };
    printf("姓名\t\t语文\t\t数学\t\t英语\t\t总分\n");
    int rows = 3;
    int cols = 3;
    int sumrows[3] = {0};
    
    for (int i = 0;i<rows;i++)
    {
        printf("%-16s",name[i]);//控制打印字符间距格式
        for (int j=0;j<cols;j++)
        {
            printf("%d\t\t",score[i][j]);
            sumrows[i] += score[i][j];
            //sumrows[0] += score[0][1]; 
            //sumrows[0] += score[0][2];
            //sumrows[0] += score[0][3];
        }
        printf("%d\n",sumrows[i]);  
    }
    return 0;
}
/*求列的和
for (int j = 0; j < cols; j++) 
{
    for (int i = 0; i < row; i++) 
    {
        colsSum[j]+= score[i][j];
    }
}*/

4.2做地图

int map[9][9] =
    {
        1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,
        1,1,0,0,1,0,0,1,1,
        1,0,0,0,0,0,0,0,1,
        1,1,0,0,0,0,0,1,1,
        1,1,1,0,0,0,1,1,1,
        1,1,1,1,0,1,1,1,1,
        1,1,1,1,1,1,1,1,1,
    };
    for (int i=0;i<9;i++)
    {
        for (int j =0;j<9;j++)
        {
            switch (map[i][j])
            {
            case 1:
                printf(" ");
                break;
            case 0:
                printf("o");
            default:
                break;
​
            }
        }
        printf("\n");
    }

5,固定高位数字去做遍历
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int cas = 0;
for(int j=0;j<4,j++)
{
    printf("%d  ",arr[cas][j]);
}
cas = 1;
for(int j=0;j<4,j++)
{
    printf("  %d",arr[cas][j]);
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值