• 【笔记】第六章 利用数组处理批量数据


    主要内容

    掌握一维、二维数组的定义和引用方法、存储结构和初始化方法

    掌握有关一维数组的有关算法。

    掌握数组的运算。

    6.1 一维数组的定义和引用

    6.2 二维数组的定义和引用

    6.3 字符数组

    6.1 一维数组的定义和引用

    1、数组:

      是一组具有相同数据类型的数据的有序集合。

    1、定义格式:

      类型说明符 数组名[常量表达式];

      类型说明符 数组名[常量表达式][常量表达式];

      常量表达式中可以包括常量符号常量,但不能包含变量。(没有vector!

    2、一维数组在内存中的存放

    (1)数组是一种引用数据类型。

      数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。

        数组引用变量只是一个引用,这个引用变量可以指向任何有效的内存,只有当该引用指向有效内存后,才可通过该数组变量来访问数组元素。

        与所有引用变量相同的是,引用变量是访问真实对象的根本方式。也就是说,如果我们希望在程序中访问数组,则只能通过这个数组的引用变量来访问它。

        实际的数组元素被存储在堆(heap)内存中;数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中。

    (2)一维数组在内存中的存储示意图:

    图4.2 数组在内存中的存储示意图

    (3)二维数组中的元素在内存中的存放

      排列顺序是:按行存放,即先顺序存放第一行的元素,再存放第二行的元素…

    4、引用方式:

      数组名[下标]

      数组名[下标][下标] 

        下标可以是整型常量或整型表达式。

    5、一维数组 元素初始化 实现方法:

    (1)在定义数组时对数组元素赋以初值。

      int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值依次放在一对花括弧内。

      int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

    (2)可以只给一部分元素赋值。

      int a[10]={0,1,2,3,4};

      int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

      int a[3][4]={{1},{5},{9}};

    (3)全部元素值为0

      int a[10]={0,0,0,0,0,0,0,0, 0,0};    或  int a[10]={0};

    (4)一维数组

      在对全部数组元素赋初值时,可以不指定数组长度。

        例如: int a[]={1,2,3,4,5}; 

    (5)二维数组  

      如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

      int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

      int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

    (6)字符数组

      除了以上方法外,还有“用字符串常量来使字符数组初始化”

        char c[]={″I  am  happy″};

        char c[]=“I am happy″; 它与下面的数组初始化等价

      若未进行初始化,则各元素的值不可预料。

      系统也可以按照初始化个数,确定数组长度(末尾无空字符)

    6、字符数组

    (1)字符串结束标志

      以字符′\0′作为字符串结束标志。′\0′代表ASCII码为0的字符,不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。

      用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。

      如果有一个字符串,前面9个字符都不是空字符(即′\0′) ,而第10个字符是′\0′,则此字符串的有效字符为9个。

      系统对字符串常量也自动加一个′\0′作为结束符。

    (2)若初始个数小于长度,则其余元素自动定为'\0'

      字符数组并不要求它的最后一个字符为′\0′,甚至可以不包含′\0′。

    (3)想用一个新的字符串代替原有的字符串,需要添加′\0′

    (4)输入输出:

      ①逐个字符输入输出。用格式符“%c”输入或输出一个字符。

      ②将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。 

      如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。

    (5)scanf:遇到空格或者换行暂停输入

      不用加地址符&,因为在C语言中数组名代表该数组的起始地址

      正确写法:scanf(″%s″,str);

    (6)printf(″%d″,c); 输出数组c的起始地址

    7、字符串处理函数

    #include <string.h>
    
    puts(str)---输出字符串 //与 printf("%s",str); 作用相同 
    gets(str)---输入字符串
    strlen(p) -取字符串长度
    
    strcpy(p, p1)-复制字符串 
    strncpy(p, p1, n)-复制指定长度字符串  
    strcat(p, p1)-附加字符串 
    strncat(p, p1, n)-附加指定长度字符串 
    //“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是一个字符串常量。如strcpy(str1,″China″); 
    //不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如下面两行都是不合法的:
    //str1=″China″;
    //str1=str2;    
    
    strcmp(p, p1)-比较字符串 
    //如果字符串1=字符串2,函数值为0。
    //如果字符串1>字符串2,函数值为一正整数。
    
    strlwr(str)----转换为小写
    strupr(str)----转换为大写

     其他知识点总结:

    (1)

      %5d 表示所有数据右对齐,不足五位则空格补全

      %-5d 表示右对齐

     (2)四大排序

      1.冒泡排序

        for(j=0;j<n;j++)
            for(i=0;i<n-j;i++)
                if (a[i]>a[i+1]) swap(a[i],a[i+1]);

    几种常见的排序方法 - 一y样 - 博客园 (cnblogs.com)

    若未进行初始化,则各元素的值不可预料。

  • 相关阅读:
    Linux 常用命令之df du
    Liunx 命令之链接操作
    1、SpringBoot bean,list,map Json返回
    Echarts 柱状图配置详解
    layui table数据表格reload where参数保留问题
    Mac休眠后解决卡死转圈问题
    5、Storm集成Kafka
    使用OData技术遇到的问题及解决办法
    我的柔情你永远不懂...
    如果你知道时间的默认值...
  • 原文地址:https://www.cnblogs.com/xwww666666/p/16113222.html
Copyright © 2020-2023  润新知