精华内容
下载资源
问答
  • 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’在内
    在这里插入图片描述

    展开全文
  • 讲到判断数组的维度,不得不提count( )函数。下面请看实例: count()函数 定义和用法: count() 函数返回数组元素的数目。...不对多维数组中的所有元素进行计数 1 - 递归地计数数组元素的数目(计算

    讲到判断数组的维度,不得不提count( )函数。下面请看实例:

    count()函数

    定义和用法:

    count() 函数返回数组中元素的数目。


    语法:

    count(array,mode);

    参数描述
    array必需。规定数组。
    mode可选。规定模式。可能的值:0 - 默认。不对多维数组中的所有元素进行计数 1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素)
        if(count($arr)==count($arr,1)){
             echo "是一维数组";
        }else{
            echo "不是一维数组";
        }

    讲到这里我想讲一些题外话,其实这种利用不相等,看似有些自相矛盾的原理来判断一个数组是否是一维数组。其思想的延伸可以追溯到矛盾论与阴阳哲学;

    好了不瞎扯。

    展开全文
  • C语言练习7—一维数组删除指定位置元素

    万次阅读 多人点赞 2019-05-10 09:07:45
    在一维数组删除指定位置元素,现定义第一个元素位置为1,一维数组元素个数不确定,需要动态输入,并返回删除元素后的数组以及被删除的元素。 例如输入数组个数为n = 4;将要删除的数组元素位置是2; 在这里插入...

    题目
    在一维数组删除指定位置元素,现定义第一个元素位置为1,一维数组元素个数不确定,需要动态输入,并返回删除元素后的数组以及被删除的元素。
    例如输入数组个数为n = 4;将要删除的数组元素位置是2;

    #include <stdio.h>
    #include <string.h>
    #define MAXN 20
    void delete_arr(int *a, int M, int *val, int *n);   /*删除指定位置的元素*/
    int main(void){
        int N, M;             //N是数组个数
        int i;
        int a[MAXN];
        int val;              //val是用来存储被删除的元素
        printf("请输入数组个数:");
        scanf("%d", &N);
        printf("请输入将要删除元素的位置(1-%d):", N);
        scanf("%d", &M);      //M是待删除的元素的位置,第一个元素位置为1;
        if(M < 1 || M > N)
            return 0;
        printf("输入数组%d个元素:", N);
        for(i = 0;i < N; i++){
            scanf("%d", &a[i]);
        }
        delete_arr(a, M, &val, &N);
    
        printf("删除的元素是:%d\n", val);
        printf("输出删除元素后的数组:");
        for(i = 0;i < N; i++){
            printf("%d ", a[i]);
        }
        printf("\n");
        return 0;
    }
    
    void delete_arr(int *a, int M, int *val, int *n){  //M是位置,val是被删除的值,n是数组个数
        *val = a[M - 1];
        for(int i = M; i < *n; i++){
            a[i - 1] = a[i];
        }
        *n = *n - 1;
    }
    

    输出结果如下:
    在这里插入图片描述

    展开全文
  • 定义一个一维数组二维数组如下 $fruit=array('apple','orange'); $products = array( array('name'=>'apple','price'=>23.4), array('name'=>'orange','price'=>45.3), array('name'=>'biscuit','number'=>5...

    定义一个一维数组一个二维数组如下

    $fruit=array('apple','orange');

    $products = array( array('name'=>'apple','price'=>23.4),
    array('name'=>'orange','price'=>45.3),
    array('name'=>'biscuit','number'=>5,'price'=>34)
    );

    需要实现从$products数组中查找元素是否和数组$fruit元素有交集,如果有的话保留,否则删除.

    实现方法为

    foreach($products as $key=>$value)

    {

          if(!in_array($value["name"],$fruit))

           unset($products[$key]);

    }

    array_values($products);  //使用unset()销毁数组元素时候应注意索引问题最好使用array_values()给数组重新排序

     

    展开全文
  • PHP统计二维数组元素个数的方法

    千次阅读 2014-03-05 06:37:12
    数据表里面的字段 content 存储了个以逗号分割的字符串,最大有20个数,最大数字为40。 比如3,24,33,40类似字样的数字序列。 其实就是个保存了多项投票结果的字段啦。 现在需要统计每个数字的个数,也就是每...
  • 指针与一维数组 指针移动方式访问数组元素: int a[5], *p; // a存放了数组的首地址 p=a; // 数组首地址赋给p p++; // 向下移动4字节 指针与数组名都是地址,因此可以混合使用访问数组元素。...
  • 一维数组实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组。本文将重点介绍一维数组的创建、初始化和使用。 创建一维数组 为了在程序中使用一数组,必须声明一引用该数组的变量,并指明整个变量...
  • 定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数,叉乘加法
  • 在C99标准中,新增的项功能就是允许在C语言中使用变长数组。然而,C99定义的这种变长数组的使用是有限制的,不能像在C++等语言中一样自由使用。 1、变长数组必须在程序块的范围内定义,不能在文件范围内定义变长...
  • 【问题描述】编写一程序,将两个元素从小到大有序的一维数组归并成一有序的一维数组。 【输入形式】用户在第一行输入第一有序数组的元素数目,以回车结束此输入。然后在第二行按照刚才输入的元素数目依次输入...
  • Numpy学习之 一维数组元素选取

    万次阅读 2015-12-07 16:55:01
    ndarray的一维数组元素选取与Python列表的切片操作很相似,与列表不同的时,获取的数据组成一新数组但与原有的数组共享一内存存储空间,即数据更改获取得到的数据中某个元素的值,原有数组也会产生相应变化。
  • 如何计算数组元素个数

    千次阅读 多人点赞 2021-01-24 10:35:03
    我们所说的数组元素个数是指总元素个数 例如: arr[10]中有10个元素 arr[3][4]中有3X4=12个元素 那么怎么能求出这个个数给计算机呢? 对于一维数组 #include <stdio.h> int main() { int arr[10] = { 0 }; ...
  • 维数组元素表示方法

    千次阅读 2018-12-04 15:27:30
    维数组元素表示方法 a // 数组首行的地址 a[0] //元素a[0][0]的地址。 二维数组可以看成是一维数组的数组,a[0] 可以认为是数组名,数组名代表数组首元素的地址 a[0] 代表 a[0][0]的地址 *(a+0) //元素...
  • C语言求一维数组元素个数

    千次阅读 2012-08-02 21:36:42
    、char 数组  运用strlen函数 strlen(char a[])  注意:需要添加#include "string.h" 二、int数组    这样就能得到int数组的长度了。
  • Java 数组 之 一维数组 追加 元素

    万次阅读 2018-05-29 09:22:34
    1. 一维数组 1.1 一维数组的定义和初始化 1.2 对一维数组的操作, 遍历,添加,插入,修改,删除,排序,查找 2. 二维数组 2.1 二维数组的定义和初始化 2.2 二维数组的遍历 3. 多维数组 4. 增强for循环 */ public ...
  • 一、用指针指向一维数组的元素二、用指针遍历数组元素三、指针与数组的总结四、数组、指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这变量。数组及其数组...
  • 一维数组b[n],数组b最多存储m=x*y个元素。 令x=3,y=4则:m=12 此时,数组a中元素的位置序号(i j)为: 00 01 02 03 10 11 12 13 20 21 22 23 数组b中元素的位置序号(n)为: 0 1 2 3 4 5 6 7 8 9 10 11 ...
  • 一维数组元素添加到二维数组

    千次阅读 2016-12-27 18:47:49
    数组下的元素分别添加到另一个数组
  • 维数组元素的地址

    万次阅读 多人点赞 2017-08-17 10:18:24
    一维数组元素的地址大家都比较容易理解,但对于二维数组,就很容易搞混了.今天我又被这问题给弄糊涂了,翻了翻老谭的书本,对这问题有了更深的认识.  首先给出一二维数组a,它的定义为:  int a[3][4] = ...
  • Python输入数组(一维数组、二维数组)

    万次阅读 多人点赞 2018-08-09 20:14:34
    ) //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空格键隔开做成数组 print(num) //打印数组 一维数组输入输出示例:    二维数组: (以n*n的二维数组为...
  • matlab有强大的矩阵操作,对于c++,若要实现matlab的矩阵功能,我发现只有 ...结构体与指针里面存储一个一维数组。 举例,下面是一指针容器,可以直接在容器里添加一数组。 #include #include using names
  • 一维数组 数组的第一个元素与最后一个元素交换位置 public class Demo { public static void main(String[] args) { int[] abc= {20,90,48,92}; int sum=abc[0]; abc[0]=abc[3]; abc[3]=sum; for(int ...
  • 、两维数组的合并 $a=Array(0 => Array("id" => 66,"class_name" => "www.iiwnet.com"),1 => Array("id" => 67,"class_name" => "linux" )); $b=Array(0 => Array("class_count"=> 8),1 => Array("class_count...
  • 1.写一函数去输出一个一维数组的所有的数组元素。 # include <stdio.h> //f函数可以输出任何一个一维数组的内容 void f(int * pArr, int len) { //*pArr //表示a[0] //*(pArr+1) //表示a[1] int i; ...
  • 维数组数组元素存储地址的计算

    万次阅读 多人点赞 2019-01-31 08:55:59
    关于二维数组数组元素的存储地址,有同学问出了好问题。  在我的课件中,出现了下面的讲解:  a[i][j]的地址是p+(i*col+j)*d(d是数组元素所占的字节)。  同学编程序进行验证,出问题了:  地球停止...
  • 二维数组转为一维数组

    千次阅读 2016-11-12 11:28:21
    二维数组转一维数组
  • 代码设计思路: 先定义一个数组a,利用for循环逐个输入数据...再定义一个数组b用于存放数组a中每个元素与平均值的差值的绝对值,找出数组b中最小的元素,并记录其下标,输出数组a中该元素。 以下是程序代码: ...
  • #include&lt;stdio.h&gt;int main(){ int a[10],t,i; for(i=0;i&lt;...//输入数组的10个元素 for(i=0;i&lt;5;i++)//将对称位置的元素对调位置 { t=a[i]; a[i]=a[9-i]; a...
  • 一维数组转化为二维数组 使用场景举例:接口返回一个...同时通过设定的长度,决定二维数组中的元素个数,但是一维数组的长度由总个数和设定的长度共同决定的。 Math.floor floor() 方法返回小于等于x的最大整数。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 277,640
精华内容 111,056
关键字:

一维数组元素个数