• C语言入门:二维数组的概要


    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
    //2个小队 每个小队有6名成员 1500
    //一维数组的定义格式 有一个下标 用一个循环
    //类型说明符 数组名 【长度】;
    //二维数组的定义格式 有二个下标 用两个循环
    //类型说明符 数组名 【下标1(行)】【下标2(列)】;
    int arr[2][6]; //一共12个成员
    //数组的下标 从0 开始的 不管是行 还是列
    //二维数组的引用
    //arr[0][0]=123123;
    //arr[0][1]=124;
    //循环赋值
    //定义两个下标 行和列
    int h,l;
    //二维数组的循环赋值
    for(h=0;h<2;h++)//行 下标 从0开始
    {
    for(l=0;l<6;l++)//列
    {
    arr[h][l]=1; //二维数组中的元素 全部赋值为1
    }
    }
    //循环输出
    for(h=0;h<2;h++)//行 下标 从0开始
    {
    for(l=0;l<6;l++)//列
    {
    printf("%d ",arr[h][l]);
    }
    printf(" ");
    }
    }

    //-----------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    { //3行4列的二维数组
    //二维数组求和
    int arr[3][4];
    int i,j,sum=0;//行 列 求和
    //先给二维进行赋值 输入 赋值
    for(i=0;i<3;i++)
    {
    for(j=0;j<4;j++)
    {
    printf("请输入一个数:");
    scanf("%d",&arr[i][j]);
    sum=sum+arr[i][j];//累加公式
    }
    }
    //然后 累加求和 矩阵输出
    for(i=0;i<3;i++)
    {
    for(j=0;j<4;j++)
    {
    printf("%d ",arr[i][j]);
    }
    printf(" ");
    }

    printf("二维数组之和为:%d,平均分:%.2f",sum,(float)sum/(i*j));
    }

    //-----------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
    //二维数组的对角线之和( 左对角线 右对角线)
    int arr[4][4]={{1,2,3,4},{1,1,1,1},{5,5,5,5},{1,1,1,1}};
    //1.行初始化 2.列初始化 3.部分初始化
    //int brr[4][4]={1,2,3,4, 5,6,7,8, 9,10,11,12 };
    int i,j,sum=0,rsum=0;//行下标 列下标 求和 右对角线之和
    printf("打印数组中的元素结果: ");
    for(i=0;i<4;i++)
    {
    for(j=0;j<4;j++)
    {
    printf("%d ",arr[i][j]);
    }
    printf(" ");
    }
    for(i=0;i<4;i++)
    {
    for(j=0;j<4;j++)
    {
    if(i==j)//因为咱要求 左对角线
    {
    sum=sum+arr[i][j]; //左对角线的和
    }
    }
    }
    printf("左对角线的和为:%d ",sum);

    for(i=0;i<4;i++)
    {
    for(j=0;j<4;j++)
    {
    if(i+j==3)//行下标+列下标 ==最大长度-1(最大下标值)
    {
    rsum=rsum+arr[i][j];
    }
    }
    }
    printf("右对角线的和为:%d ",rsum);
    }

    //-----------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
    //二维数组每一行的和
    int arr[4][4]={{1,2,3,4},{1,1,1,1},{5,5,5,5},{1,1,1,1}};
    int a[4];//一维数组 用来存放 二维数组的每一行 和
    int i,j,sum;//下标行 下标列 每一行的和
    printf("1. 直接求完,就输出。 ");
    for(i=0;i<4;i++)//行
    {
    sum=0;//求行 在这初始化就可以了
    for(j=0;j<4;j++)//列
    {
    sum=sum+arr[i][j];
    }
    //直接求完 一行。
    printf("%d行的一行之和为:%d ",i,sum);
    //打印二维数组的行的结果。 1. 直接求完,就输出。
    }
    printf("2.利用新数组(求每一行的和完之后根据下标存到新数组里) ");
    // 2.利用新数组(求每一行的和完之后根据下标存到新数组里)
    for(i=0;i<4;i++)//行
    {
    sum=0;//求行 在这初始化就可以了
    for(j=0;j<4;j++)//列
    {
    sum=sum+arr[i][j];
    a[i]=sum;//把每一行的和 赋值给 新数组中
    }
    }
    //循环输出一维数组的结果
    for(i=0;i<4;i++)
    {
    printf("%d行的结果为:%d ",i,a[i]);
    }
    }

    //-----------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
    //二维数组的转置 行变列 列变行
    //{1,2,3}
    //{4,5,6} 2行3列
    //通过转置 变成 3行2列
    //{ , }
    //{ , }
    //{ , }

    int arr[2][3],brr[3][2];
    int i,j;//行 列
    for(i=0;i<2;i++)
    {
    for(j=0;j<3;j++)
    {
    printf("输入一个数:");
    scanf("%d",&arr[i][j]);
    }
    }
    //先打印出来, 查看一下。
    printf("打印出来,看看效果。 ");
    for(i=0;i<2;i++)
    {
    for(j=0;j<3;j++)
    {
    printf("%d ",arr[i][j]);
    }
    printf(" ");
    }
    //转置的效果
    printf("二维数组转置之后的效果: ");
    for(i=0;i<2;i++)
    {
    for(j=0;j<3;j++)//转置的功能
    {
    brr[j][i]=arr[i][j]; //赋值符号 是把 后面的元素 赋值到 前面的变量中
    // 0,0 -> 0,0
    // 0,1 -> 1,0
    // 0,2 -> 2,0
    }
    }
    //打印 转置之后结果。
    for(j=0;j<3;j++)
    {
    for(i=0;i<2;i++)
    {
    printf("%d ",brr[j][i]);
    }
    printf(" ");
    }
    }

    //-----------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
    int arr[4][4]={{1,2,3,4},{1,8,1,16},{5,5,5,5},{1,24,1,48}};
    int ou[16],ji[16],o=0,q=0;//计数也是下标
    int h,l,t;//冒泡排序
    //二维数组中 所有奇数全部 为当前2倍,比如3 --》 3*2
    //所有的偶数 全部乘6 如果 2 --》 2*6
    //拆分数组 二维数组 变成 两个一维数组
    int i,j;//循环的下标
    for(i=0;i<4;i++)
    {
    for(j=0;j<4;j++)
    {
    if(arr[i][j]%2==0)//找到元素 为偶数的时候
    {
    ou[o]=arr[i][j];
    o++;//下标移动 也可以理解为 计数。
    }
    else
    {
    ji[q]=arr[i][j];
    q++;//下标移动 也可以理解为 计数。
    }
    }
    }
    //一定打印出来 因为 需要 检查一下。
    printf("偶数的: ");
    for(i=0;i<o;i++)
    {
    printf("%d ",ou[i]);
    }
    printf(" 奇数的: ");
    for(j=0;j<q;j++)
    {
    printf("%d ",ji[j]);
    }

    //对两个数组 进行 冒泡排序 h,l ,t 行 列 中间变量
    //把变化之后的 奇数 进行冒泡排序从小到大 一维数组
    for(h=1;h<q;h++)//行
    {
    for(l=0;l<q-h;l++)//列 下标 从 0
    {
    if(ji[l]>ji[l+1])//拿第一个元素 和 他后面的元素 比较
    {
    t=ji[l];
    ji[l]=ji[l+1];
    ji[l+1]=t;
    }
    }
    }
    printf(" 奇数的冒泡排序:从小到大: ");
    for(j=0;j<q;j++)
    {
    printf("%d ",ji[j]);
    }
    //把变化之后的 偶数 进行冒泡排序从大到小 一维数组
    for(h=1;h<o;h++)//行 从1开始
    {
    for(l=0;l<o-h;l++)//列是下标 从0开始
    {
    if(ou[l]<ou[l+1])//l是小写的L
    {
    t=ou[l];
    ou[l]=ou[l+1];
    ou[l+1]=t;
    }
    }
    }
    printf(" 偶数的冒泡排序:从大到小: ");
    for(i=0;i<o;i++)
    {
    printf("%d ",ou[i]);
    }

    }

    二维数组的注意事项

    1.行序号和列序号的下标都是从 0 开始的。元素 a[i][j] 表示第 i+1 行、第 j+1 列的元素。

    2.数组 int a[m][n] 最大范围处的元素是 a[m1][n1]。所以在引用数组元素时应该注意,下标值应在定义的数组大小的范围内。 

    3.定义数组时用到的“类型说明符 数组名[常量表达式][常量表达式]”和引用数组元素时用到的“数组名[下标][下标]”是有区别的。前者是定义一个数组,以及该数组的维数和各维的大小。而后者仅仅是元素的下标,像坐标一样,对应一个具体的元素。

  • 相关阅读:
    iOS10---新特性以及适配点
    linux下,MySQL默认的数据文档存储目录为/var/lib/mysql。
    Linux安装JDK完整步骤
    ajax获取json数据为undefined--原因解析
    怎样用jQuery拿到select中被选中的option的值
    一个Filter需要配置多个url-pattern
    Jquery+Ajax实现Select动态添加数据
    tomcat启动报错:Address already in use: JVM_Bind
    Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson
    Java中文乱码解决方案
  • 原文地址:https://www.cnblogs.com/ZJ-CN/p/12260856.html
Copyright © 2020-2023  润新知