zoukankan      html  css  js  c++  java
  • IOS开发学习笔记005-数组

    数组

    数组故名思议就是一组数据的集合。

    int a[10];//可以存储10个整数

    char  c[8];//可以存储8个字符‘

    一般格式:数组类型 数组名[元素个数];

    数组元素的访问:下标,a[2],a[0],a[4];//下标是从0开始的

    下面是示例

     1 #include<stdio.h>
     2 
     3 
     4 
     5 //数组作为函数参数
     6 void show(int a[],int n);
     7 //逆序输出数组
     8 void reverseArray(int a[],int n);
     9 //输出最大值
    10 int returnMax(int a[],int n );
    11 //求数组元素的和
    12 int returnSum(int a[],int n);
    13 int main()
    14 {
    15     int a[3];//定义
    16     int nArray[] = {0,1,2,3,4,5,6,7,8,9};//定义并初始化
    17     
    18     printf("%lu
    ",sizeof(a));//数组的大小 = 数组类型*元素个数
    19     
    20     //逐个赋值
    21     a[0] = 11;
    22     a[1] = 22;
    23     a[2] = 33;
    24     
    25     //数组的使用,注意数组越界问题
    26     int arrayLenght = sizeof(nArray)/sizeof(int);
    27     int i = 0;
    28     while( i ++ < arrayLenght)//while循环实现遍历
    29     {
    30         printf("%d ",nArray[i]);
    31     }
    32     printf("
    ");
    33     show(a,3);
    34     reverseArray(a,3);
    35     printf("max :%d
    ",returnMax(a,3));
    36     printf("sum:%d
    ",returnSum(a,3));
    37     
    38     return 0;
    39 }
    40 //数组作为函数参数,在形参列表中,int a[10] 实际意义是int *a;
    41 void show(int a[],int n)//a是数组,n是元素个数
    42 {
    43     //不要再函数中对函数参数数组进行sizeof,因为,数组再函数参数中传递的实际是一个指针,即数组的首地址
    44     // sizeof on array function parameter will return sizeof 'int *' instead of 'int []'
    45     //printf("函数参数:%lu
    ",sizeof(a));//数组的大小 = 数组类型*元素个数
    46     for (int i = 0; i < n; i ++)//for循环实现遍历
    47     {
    48         printf("%d ",a[i]);
    49     }
    50     printf("
    ");
    51 }
    52 
    53 //逆序输出数组
    54 void reverseArray(int a[],int n)
    55 {
    56     while (n-- > 0 ) {
    57          printf("%d ",a[n]);
    58     }
    59      printf("
    ");
    60 }
    61 
    62 //输出最大值
    63 int returnMax(int a[],int n )
    64 {
    65     int max = 0;
    66     for (int i = 0; i < n; i ++)//for循环实现遍历
    67     {
    68         if (max < a[i])
    69         {
    70             max = a[i];//取得最大值
    71         }
    72     }
    73     return max;
    74 }
    75 //求数组元素的和
    76 int returnSum(int a[],int n)
    77 {
    78     int sum = 0;
    79     for (int i = 0; i < n; i ++)//for循环实现遍历
    80     {
    81         sum += a[i];//累计求和
    82     }
    83     return sum;
    84 }

    二维数组以及多维数组

    二位数组是一种特殊的一维数组:它的元素是一维数组。

    二位数组就相当于一个表格,有行有列。

    int a[3][2];//两行三列,如下图所示

    a[0][0] a[0][1]
    a[1][0] a[1][2]
    a[2][0] a[2][2]

     

     

     

    下标也是从零开始,数组名就是数组的地址,也就是第一个元素的地址a[0][0]

    可以理解为三个一维数组:a[0],a[1],a[2].

      其中a[0] 包括a[0][0],a[0][1],

        a[1] 包括a[1][0],a[1][1],

        a[2] 包括a[2][0],a[2][1]

    二维数组示例

     1 #include <stdio.h>
     2 
     3 //二维数组练习
     4 
     5 void show(int a[][2],int h,int l);
     6 int main()
     7 {
     8     
     9     //定义
    10     int a[3][2];
    11     //for循环初始化
    12     for (int i= 0; i < 3; i++)
    13     {
    14         for (int j = 0; j< 2; j ++)
    15         {
    16             a[i][j] = i+j;
    17         }
    18     }
    19     printf("length: %lu
    ",sizeof(a));
    20     //数组存储顺序,先行后列
    21     printf("数组存储顺序
    a[0]: %p
    ",&a[0]);
    22     printf("a[1]: %p
    ",&a[1]);
    23     printf("a[2]: %p
    ",&a[2]);
    24     show(a,3,2);
    25     
    26     return 0;
    27 }
    28 
    29 void show(int a[][2],int h,int l)
    30 {
    31     //数组名也是当做一个指针传进来的,int (*)[2];
    32     //sizeof on array function parameter will return size of 'int (*)[2]' instead of 'int [3][2]'
    33    // printf("%lu
    ",sizeof(a));
    34 
    35     //遍历数组,循环嵌套
    36     for (int i= 0; i < h; i++)
    37     {
    38         for (int j = 0; j< l; j ++)
    39         {
    40             printf("%p	",&a[i][j]);//数组存储顺序,先行后列
    41             //printf("%d ",a[i][j]);
    42         }
    43         printf("
    ");
    44         
    45     }
    46     printf("
    ");
    47     
    48 }

    字符串

     "hello" //这就是一个字符串,由多个字符组成,以字符结束,字符不可见。

    字符串输出时用 %s。

    字符串的长度:strlen函数获取字符处的长度,不包括字符

     1 #include <stdio.h>
     2 #include <string.h>//strlen 函数头文件
     3 
     4 //是否包含字符c,有得话返回,否则返回1
     5 char containC(char str[],int n);
     6 
     7 //字符串
     8 int main()
     9 {
    10     char c1[] = "jkhasdjkfhnkcdfdf";//系统自动添加结束字符 
    11     char c2[] = {'1','2','3',''};//这样赋值的话,要自己加上结束字符 
    12     printf("%s	 %s
    ",c1,c2);
    13     printf("%lu	 %lu
    ",strlen(c1),sizeof(c1));//strlen获得字符串长度,不包括
    14     
    15     printf("%c
    ",containC(c1,strlen(c1)));
    16     
    17     return 0;
    18 }
    19 
    20 //是否包含字符c,有得话返回,否则返回1
    21 char containC(char str[],int n)
    22 {
    23     //循环遍历字符串
    24     for (int i = 0; i < n ; i ++)
    25     {
    26         if (str[i] == 'c')
    27         {
    28             return '1';//找到返回1
    29         }
    30     }
    31     return '0';//找不到返回0
    32 }

    2015-4-11 今日如此,明日依旧。

     

     

     

  • 相关阅读:
    线段树
    5709 01背包
    JavaEE Tutorials (19)
    洛谷 P3385 【模板】负环
    洛谷 P3388 【模板】割点(割顶)
    洛谷 P3387 【模板】缩点
    洛谷 P3386 【模板】二分图匹配
    洛谷 P3371 【模板】单源最短路径
    洛谷 P3370 【模板】字符串哈希
    洛谷 P3366 【模板】最小生成树
  • 原文地址:https://www.cnblogs.com/songliquan/p/4417957.html
Copyright © 2011-2022 走看看