精华内容
下载资源
问答
  • C语言:二维数组变一维数组

    千次阅读 2019-06-02 15:41:27
    二维数组就是一维数组 直接循环 例如 a[3][4] 可以直接用*p指向 然后 p++ 只要不超过3x4就行 #include<stdio.h> #defineN3 #defineM4 intmain() { inta[N][M]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p; ...

    二维数组就是一维数组 直接循环

     例如 a[3][4] 可以直接用*p指向 然后 p++ 只要不超过3x4就行

    #include <stdio.h>
    #define N 3
    #define M 4
    int main()
    {
        int a[N][M]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p;
        p=(int *)a;//将二维数组a变成一维数组p
        for(i=0;i<N;i++){
            for(j=0;j<M;printf("%3d",a[i][j++]));//用数组名a仍然按二维数组操作
            printf("\n");
        }
        printf("\n");
        for(j=M*N,i=0;i<j;printf("%3d",p[i++]));//用p则按一维数组操作
        printf("\n");
        return 0;
    }

    一维数组变二维数组

    #include <stdio.h>
    #include <stdlib.h>

    #define ROW 3 
    #define COL 2

    int main(int argc, char *argv[])
    {
        int arr1D[]  = {1,2,3,4,5,6};
        int arr2D[ROW][COL];
        int i,j;
        //一维维整型数组转换为二维整型数组
        for(i=0;i<ROW;i++)
        {
            for(j=0;j<2;j++)
            {
             arr2D[i][j]=arr1D[i*COL+j];
            }
        }
        //二维整型数组打印显示 
            for(i=0;i<ROW;i++)
        {
            for(j=0;j<COL;j++)
            {
              printf("%d  ", arr2D[i][j]);  
            }
             printf("\n");    
        }
        system("pause");
        return 0;
    }

    展开全文
  • 用C++语音实现一维数组二维数组写入txt,从txt中读取数据存到一维数组、二维数组,数组用指针表示
  • 二维数组用一维数组的方式表示

    千次阅读 2019-02-14 16:29:27
    a[i*M+j] i是行下标,M是列的元素个数,j是列下标

    二维数组a[i][j]表示为一维数组:

    • 行优先原则:a[i*M+j] i是行下标,M是一行的元素个数,j是列下标
    • 列优先原则:a[i*M+j] i是列下标,M是一列的元素个数,j是行下标

    扩展:

    问题:若二维数组元素按行优先存储,则有以下两种方式访问数组,

            a. 按行访问数组,即一行一行访问数组

            b. 按列访问数组,即一列一列访问数组

    那么请问a和b两种方式哪种访问的速度快?

    先说答案,第一种。

    原因分析:

    先说说程序访问的局部性原理,包括时间局部性和空间局部性。

    • 时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。
    • 空间局部性是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的,因为指令通常是顺序存放,顺序执行的,数据一般也是以向量、数组等形式聚集地存储在一起的。

    了解了上面的原理,相信你应该也知道了答案。a之所以比b快的原因便是a的空间局部性比b好。(因为a的访问顺序与存放顺序是一致的,按行存储,按行访问)。从而导致执行的时间不同。数据越大,时间相差越明显,大家也可以自行编写代码运行一下!!

    如果觉得有帮助可以点个赞支持一下呀。

    展开全文
  • C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组 第七章、数组 ...

    第七章、数组

    数组是构造数据类型之一

    • 数组: 有序数据的集合,用数组名标识
    • 元素: 属同一数据类型,用数组名和下标确定

    一维数组

    一维数组的定义

    定义方式:
    在这里插入图片描述
    例: int a[6]
    在这里插入图片描述

    一维数组的引用

    1、数组必须先定义,后使用。
    2、只能逐个引用数组元素,不能一次引用整个数组。
    3、数组元素表示形式: 数组名[下标] ,下标可以是常量或整型表达式

    一维数组的初始化

    初始化方式:
    在这里插入图片描述

    说明:
    1、数组不初始化,其元素值为随机数。
    2、对static数组元素不赋初值,系统会自动赋以0值。
    在这里插入图片描述
    3、只给部分数组元素赋初值。
    在这里插入图片描述
    4、当全部数组元素赋初值时,可不指定数组长度。
    在这里插入图片描述

    程序举例

    例1: 读10个整数存入数组,找出其中最大值和最小值
    在这里插入图片描述

    /*示例1*/
    #include <stdio.h>
    #define SIZE 10
    main()
    {   int x[SIZE],i,max,min;
        printf("Enter 10 integers:\n");
        for(i=0;i<SIZE;i++)
        {   printf("%d:",i+1);
    	scanf("%d",&x[i]);
        }
        max=min=x[0];
        for(i=1;i<SIZE;i++)
        {  if(max<x[i])  max=x[i];
           if(min>x[i])  min=x[i];
        }
        printf("Maximum value is %d\n",max);
        printf("Minimum value is %d\n",min);
    }
    

    例2: 用数组求Fibonacci数列前20个数
    在这里插入图片描述

    /*示例2*/
    #include <stdio.h>
    main()
    {   int i;
         int f[20]={1,1};
        for(i=2;i<20;i++)
           f[i]=f[i-2]+f[i-1];
        for(i=0;i<20;i++)
        {   if(i%5==0)  printf("\n");
             printf("%12d",f[i]);
        }
    }
    

    例3: 用冒泡法对10个数排序
    在这里插入图片描述
    在这里插入图片描述

    /*示例3*/
    #include <stdio.h>
    main()
    {   int a[11],i,j,t;
        printf("Input 10 numbers:\n");
        for(i=1;i<11;i++)
           scanf("%d",&a[i]);
        printf("\n");
        for(j=1;j<=9;j++)
           for(i=1;i<=10-j;i++)
              if(a[i]>a[i+1])
             {t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
        printf("The sorted numbers:\n");
        for(i=1;i<11;i++)
    	printf("%d ",a[i]);
    }
    

    例4: 用简单选择法对10个数排序

    在这里插入图片描述

    在这里插入图片描述

     /*示例4*/
    #include <stdio.h>  
    main()
    {   int a[11],i,j,k,x;
        printf("Input 10 numbers:\n");
        for(i=1;i<11;i++)
           scanf("%d",&a[i]);
        printf("\n");
       for(i=1;i<10;i++)
       {  k=i;
          for(j=i+1;j<=10;j++)
                if(a[j]<a[k])  k=j;
          if(i!=k)
          {  x=a[i]; a[i]=a[k]; a[k]=x;}
       }
        printf("The sorted numbers:\n");
        for(i=1;i<11;i++)
    	printf("%d ",a[i]);
    }
    

    二维数组及多维数组

    二维数组的定义

    定义方式: 
    在这里插入图片描述
    在这里插入图片描述
    数组元素的存放顺序
    1、原因: 内存是一维的
    2、二维数组: 按行序优先
    3、多维数组: 最右下标变化最快

    在这里插入图片描述
    数组a[m][n],m行n列,共m*n个元素
    在这里插入图片描述

    这些元素占用m*n个单元,每个单元的大小取决于
    元素的类型。

    任意元素a[i][j]在数组中的位置计算公式为:

    i×n+j (从0开始)

    a——数组的起始地址;a[0]——0行0列元素的地址。

    二维数组元素的引用

    形式: 数组名[下标][下标]

    二维数组元素的初始化

    1、分行初始化
    2、按元素排列顺序初始化

    程序举例

    例1:将二维数组行列元素互换,存到另一个数组中
    在这里插入图片描述

    /*示例1*/
    #include <stdio.h>
    main()
    {   int a[2][3]={{1,2,3},{4,5,6}};
         int b[3][2],i,j;
        printf("array a:\n");
        for(i=0;i<=1;i++)
        {   for(j=0;j<=2;j++)
    	{   printf("%5d",a[i][j]);
    	    b[j][i]=a[i][j];
    	}
    	printf("\n");
        }    
        printf("array b:\n");
        for(i=0;i<=2;i++)
        {   for(j=0;j<=1;j++)
    	   printf("%5d",b[i][j]);
             printf("\n");
        }
    }
    

    例2:求二维数组中最大元素值及其行列号
    在这里插入图片描述

    /*示例2*/
    #include <stdio.h>
    main()
    {  int a[3][4]={{1,2,3,4},
                            {9,8,7,6},
                            {-10,10,-5,2}};
        int i,j,row=0,colum=0,max;
        max=a[0][0];
        for(i=0;i<=2;i++)
           for(j=0;j<=3;j++)
               if(a[i][j]>max)
    	  {  max=a[i][j];
    	     row=i;
    	     colum=j;
    	  }
        printf("max=%d,row=%d,\colum=%d\n",max,row,colum);
    }
    

    例3:分别求n阶方阵两条对角线上的元素之和

    /*示例3*/
    #define N 3
    main()
    {   int i,j,a[N][N];
    int sum1=0,sum2=0;
    for(i=0;i<N;i++)
      for(j=0;j<N;j++)
        scanf(%d”,&a[i][j]);
    for(i=0;i<N;i++)
      for(j=0;j<N;j++)
        if(i==j) sum1+=a[i][j];
    for(i=0;i<N;i++)
      for(j=N-1;j>=0;j--)
        if((i+j)==N-1) sum2+=a[i][j];
    printf(“sum1=%d,sum2=%d\n”,sum1,sum2);
    }
    

    字符数组和字符串

    字符数组

    定义 : 每个元素存一个字符,主要用来对字符串操作。
    字符数组的初始化:

    1、逐个字符赋值
    2、用字符串常量

    字符数组的引用:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    字符串

    字符串及其结束标志

    (1)、无字符串变量,用字符数组处理字符串。
    (2)、字符串结束标志:‘\0’。

    在这里插入图片描述
    字符串的输入输出
    输入:

    • 用scanf函数
      (1).输入单个字符:%c 需用循环语句
      (2).输入字符串:%s scanf(“%s”,str);
    • 用gets函数:gets(str);

    输出:

    • 用printf函数
      (1).输出单个字符:%c 需用循环语句
      (2).输出字符串:%s printf(“%s”,str);
    • 用puts函数:puts(str);

    在这里插入图片描述

    常用的字符串处理函数: 加粗样式包含在头文件 string.h

    字符串输出函数puts

    格式: puts(字符数组)
    功能: 向显示器输出字符串(输出完,换行)
    说明: 字符数组必须以‘\0’结束

    字符串输入函数gets

    格式: gets(字符数组)
    功能: 从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’
    说明: 输入串长度应小于字符数组维数

    字符串连接函数strcat

    格式: strcat(字符数组1,字符数组2)
    功能: 把字符数组2连到字符数组1后面
    返值: 返回字符数组1的首地址
    说明:
    1、字符数组1必须足够大
    2、连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’

    字符串拷贝函数strcpy

    格式: strcpy(字符数组1,字符串2)
    功能: 将字符串2,拷贝到字符数组1中去
    返值: 返回字符数组1的首地址
    说明:
    1、字符数组1必须足够大
    2、拷贝时‘\0’一同拷贝
    3、不能使用赋值语句为一个字符数组赋值
    在这里插入图片描述

    字符串比较函数strcmp

    格式: strcmp(字符串1,字符串2)
    功能: 比较两个字符串
    比较规则: 对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
    返值: 返回int型整数,
    a. 若字符串1< 字符串2, 返回负整数
    b. 若字符串1> 字符串2, 返回正整数
    c. 若字符串1== 字符串2, 返回零
    说明: 字符串比较不能用“==”,必须用strcmp

    字符串比较函数strcmp

    字符串长度函数strlen
    格式:strlen(字符数组)
    功能:计算字符串长度
    返值:返回字符串实际长度,不包括‘\0’在内
    在这里插入图片描述

    展开全文
  • 多维数组变成一维数组

    万次阅读 2018-07-21 01:07:23
    这个问题来源于一个朋友曾经问过我的问题,当时是一个二维数组变成一维数组。后面我想整理一下,整理一个多维,并且是不定维的数组。 一、二维数组变成一维数组 1、遍历数组,将元素一个个放入新数组 结果: ...

    这个问题来源于一个朋友曾经问过我的问题,当时是一个二维数组变成一维数组。后面我想整理一下,整理一个多维,并且是不定维的数组。

    一、二维数组变成一维数组

    1、遍历数组,将元素一个个放入新数组

    结果:

    如果元素不是数组,将会报错。下面是改良版:

    这样的方法仍显臃肿

    2、用apply的特性,将数组作为参数展开

    concat接受单个值作为参数,所以不需要识别。

    3、利用es6新增的扩展运算符将数组展开

    与concat类似。

    比较推荐扩展运算符的方法,书写简洁。

    二、多维数组变成一维数组

    多维数组变成一维,就是在二维变成一维的基础上递归调用。

    代码如下:

    1、遍历每一个元素,先判断再处理

    2、reduce方法

    2018-9-26新增:三、es6新增的flat及flatMap方法

    es2018为数组实例新增了flat及flatMap方法,用于将二维 或者多维数组拉平成一维数组。

    flat方法默认没有参数,这时只会降维降一层。可以传数字类型的参数指定降维次数。

    flat方法不改变原数组。

    如果想将任意维度的数组变成一位数组,可以传入Infinity。

     

    flatMap()方法,参数是一个回调函数,类似map方法的使用,数组的每个元素执行一次回调函数,然后对返回的数组执行flat()方法,只降一次维,

     

     

     

     

     

     

    展开全文
  • C语言一维数组的定义与常见用法

    千次阅读 多人点赞 2020-05-07 16:54:48
    一维数组的定义与初始化 一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据。在C语言中,一维数组的定义方式如下所示 类型说明符 数组名[常量表达式]; 在上述语法格式中,类型说明符表示...
  • C++ 一维数组

    千次阅读 2019-12-16 20:36:05
    一维数组 数组的基本概念 声明(创建)一维数组及规则 引用数组元素 数组排序 冒泡排序法 数组的基本概念 先来说一下一维数组的定义:一维数组即为下标只有一个的数组,一维数组也是最简单的数组 数组也就是一...
  • 一维数组是一条线 二维数组是一页纸 三维数组是一本书 四维数组是书架 五维数组是图书室2201(好几个书架) 六维数组是图书馆某一层,2楼/3楼,好几个图书室 七维数组是整个图书馆 第N维数组是...
  • 使用指针输入输出一维数组

    千次阅读 2020-05-04 20:30:02
    《程序设计基础实训指导教程-c语言》 ...【实训内容2】有一个10个元素的一维数组使用输入/输出所有元素值 #include <stdio.h> int main() { int a[10],*p; for(p=a;p<a+10;p++) { scanf("%d",p...
  • Python输入数组(一维数组、二维数组)

    万次阅读 多人点赞 2018-08-09 20:14:34
    一维数组: arr = input("") //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空格键隔开做成数组 print(num) //打印数组 一维数组输入输出示例:  ...
  • python 二维数组转一维数组

    万次阅读 多人点赞 2019-09-25 14:54:24
    import operator from functools import reduce a = [[1,2,3], [4,6], [7,8,9,8]] print(reduce(operator.add, a)) >>> [1, 2, 3, 4, 6, 7, 8, 9, 8]
  • System.out.println("用一维数组存储占用内存总量为:" + memory1); long endTime1 = System.currentTimeMillis(); // 获取结束时间 System.out.println("程序运行时间: " + (endTime1 - startTime1) ...
  • 一维数组转二维数组

    千次阅读 2018-08-15 16:17:12
    在项目上,会遇到将一个一维数组的数据,按板块的分布排版这一类的需求。这种需求的数据往往就是数组元素中含有相同字段,以这相同字段分类即可达到需求。 以以下数据为例: 将 let oldArr= [ { name: "...
  • 一维数组转化为二维数组 使用场景举例:接口返回一个数组对象,展示时每行固定显示n个,则可将返回的数组转成二维数组[[...n], [...n]...]的形式循环展示。 分析:我们将一维数组,截取设定的长度,放入的一个新...
  • 昨天遇到了一个需要对后端传来的一段数据做操作,是将一维数组转为二维数组,思考了半天,夜晚又和朋友讨论了一下,思路如下。(毕竟我只是个切图仔) let classRes = [ {className: '05',name: 'a1',age: '12',...
  • //所以这里传递的arr,其实相当于第一行的地址,是一维数组的地址 //可以数组指针来接收 print_arr2(arr, 3, 5); system("pause"); return 0; }  数组名arr,表示首元素的地址  但是二维数组的首元素是二...
  • js二维数组转一维数组方法

    万次阅读 2019-03-12 15:28:00
    例子:[[0, 1], [2, 3], [4, 5]]转为[0, 1, 2, 3, 4, 5] 转自:... 方法 利用es5的arr.reduce(callback[, initialValue])实现 var arr1 = [[0, 1], [2, 3], [4, 5]]; var arr2 = ...
  • Java数组介绍(一维数组和二维数组)

    千次阅读 多人点赞 2018-06-08 16:00:55
    Java数组介绍(一维数组和二维数组)1. 概述· 数组是存储多个变量的容器。· 存储的多个变量必须是同一种数据类型。· 数组既可以存储基本数据类型,也可以存储引用数据类型。2. 数组定义的格式· 格式1:数据...
  • js一维数组转二维数组

    万次阅读 多人点赞 2018-05-24 13:47:27
    使用场景举例:接口返回个数组对象,展示时每行固定显示n个,则可将返回的数组转成二维数组[[...n], [...n]...]的形式循环展示。a.数组元素为基本类型: let baseArray = [1, 2, 3, 4, 5, 6, 7, 8]; len len = ...
  • 本文将重点介绍一维数组的创建、初始化和使用。 创建一维数组 为了在程序中使用一个数组,必须声明一个引用该数组的变量,并指明整个变量可以引用的数组类型。声明一维数组的语法格式为: 数据类型数组名[]; //...
  • 基本思路就是将低维数组进行等长的循环,在第次为零的情况下,需要添加个[]数组,原因是将它的基本框架搭建起来 records = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] result = [] for y in range(0, 4): for x ...
  • 维数组

    千次阅读 2019-06-02 10:05:51
    * 多维数组本质也是一维数组 * 二维数组 * 本质就是存放了一维数组的数组 * * 格式1: * 数据类型[] 数组名 = new 数据类型[数组的长度]; * 数据类型[][] 数组名 = new 数据类型[m][n]; * m: 二维数组中...
  • C语言二维数组转化为一维数组

    万次阅读 2019-11-08 12:13:50
    C语言二维数组转化为一维数组 #include <stdio.h> #include <stdlib.h> #define A 2 //行的长度 #define B 2 //列的长度 int main() { //定义一个二维数组 int array1[A][B]={1,2,3,4}; //定义一个...
  • 如何将二维数组转化为一维数组

    千次阅读 2020-03-05 00:24:16
    今天碰到一道面试题,如何将二维数组转化为一维 数组 问题是这样子的:[[0, 1], [2, 3], [4, 5]] 如何转化为 [0, 1, 2, 3, 4, 5]? 方法一:使用ES5的reduce reduce() 方法接收一个函数作为累加器(accumulator),...
  • 一维数组转换成二维数组

    千次阅读 2020-05-26 11:33:59
    按最多8个数据来创建二维数组 categoryArr() { let categorys=this.categorys; let arr=[]; let minarr=[]; categorys.forEach((item,index)=>{ if(minarr.length===8) { minarr=[]; } if(minarr....
  • 二维数组转一维数组的几个方法

    千次阅读 2020-09-07 23:12:07
    https://www.cnblogs.com/honeyJYY/p/10430716.html
  • Numpy一维数组

    千次阅读 2019-09-10 21:28:24
    我们可以通过将Python列表传递给它并使用 np.array() 来创建个NumPy数组(也就是强大的ndarray)。在这种情况下,Python创建了下面的数组个常见的错误在于使用多个数值参数调用 array 函数,而不是提供个...
  • java一维数组转为二维数组

    千次阅读 2019-10-11 21:29:02
    public class 一维数组映射为二维数组 { public static void main(String[] args) { //创建一维数组,并赋值。 int data[]=new int [50]; for(int i=0;i<50;i++) { data[i]=i+1; } ...
  • JAVA一维数组求和

    千次阅读 2019-11-06 17:47:32
    public class Main { public static void main(String[] args) { int num[]={1,2,3,4,5,6,7,8,9,10}; //定义一维数组 int sum = 0; System.out.println("一维数组中个元素之和为:"); for(int ...
  • C语言数组——一维数组实例详解

    千次阅读 多人点赞 2020-01-05 20:25:46
    所谓数组,是指将那些具有相同类型的、数量有限的若干个变量通过有序的方法组织起来的一种便于使用的形式。数组属于一种构造类型,其中的变量被称为数组的元素。...在使用一维数组的时候需要留意以下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 538,891
精华内容 215,556
关键字:

一维数组的使用