广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    c++之一维数组

    来源:网络收集  点击:  时间:2024-04-17
    【导读】:
    当需要处理的数据比较多时,仅依靠前面的知识是不够的,即使简单的问题也可能需要比较复杂的程序来处理生的某门课程的成绩,打印出低于平均分的学生序号与成绩我们需要把一大批具有相同性质的数据组合成一个新类型的变量,可以用简单的程序(比如循环50次)对这个新变量的各个分量进行相同的处理,每个分量仍然保留单个变量的所有性质。工具/原料moreDev-c++方法/步骤1/7分步阅读

    一、为什么要使用数组

    例题:输入50个学生的某门课程的成绩,打印出低于平均分的学生序号与成绩。

    【分析】在解决这个问题时,虽然可以通过一个变量来累加读入的50个成绩求出学生的总分,进而求出平均分。但因为只有读入最后一个学生的分数后才能求得平均分,并且要求打印出低于平均分的学生序号和成绩,故必须把50个学生的成绩都保留起来,然后逐个和平均分比较,把低于平均分的成绩打印出来。如果,用简单变量a1,a2,…,a50存储这些数据,要用50个变量保存输入的数据,程序片断如下:

    cina1a2…a10;

    cina41a42…a50;

    注意,如果真正要像上面这样编写程序,则上面的所有省略号必须用完整的语句写出来。可以看出,这样的程序是多么繁琐。如果说处理的数据规模达到成千上万,上面的例子单单读入就会异常复杂,电脑的优势没有得到体现。

    从以上的讨论可以看出,如果只使用简单变量处理大量数据,就必须使用大量只能单独处理的变量,即使是简单问题也需要编写冗长的程序。

    如果能像数学中使用下标变量ai形式表示这50个数,则问题就容易实现。在C++语言中,具有下标性质的数据类型是数组。如果使用数组,上面的问题就变得十分简单、清晰。例如,读入50个学生的成绩,只需写如下语句即可:

    for (int i=1;i=50;++i)

    cina;

    在这里引用了带下标的变量(分量变量称为数组元素)a来代替a1,a2…,a50,方括号中的i称为下标,当循环变量i=1时a就是a;当i=2时a就是a……;当i=50时a就是a。输入的时候,让i从1变化到50,循环体内输入语句中的a也就分别代表了a1,a2…,a50这50个带下标的变量。这样上述问题的程序可写为:

    tot = 0; // tot存储50个学生的总分

    for (int i=1;i=50;++i) // 循环读入每一个学生的成绩,并把它累加到总分中

    {

    cina;

    tot+=a;

    }

    ave= tot/50; //计算平均分

    for (int i=1;i=50;++i)

    if (aave) coutNo. i a;

    //如果第i个同学成绩小于平均分,则将输出这个学生的序号和成绩。

    要在程序中使用下标变量,必须先说明这些下标变量的整体为数组,即数组是若干个同名(如上面的下标变量的名字都为a)下标变量的集合,这些变量的类型全部一致。

    2/7

    二、一维数组的定义

    当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组。

    数组的定义格式如下:

    类型标识符 数组名

    说明:

    ①数组名的命名规则与变量名的命名规则一致。

    ②常量表达式表示数组元素的个数。可以是常量和符号常量,但不能是变量。

    例如:

    int a; //数组a定义是合法的

    int b; //数组b定义是非法的

    3/7

    三、一组数组的引用

    通过给出的数组名称和这个元素在数组中的位置编号(即下标),程序可以引用这个数组中的任何一个元素。

    一维数组元素的引用格式:

    数组名

    例如:

    int a;

    其中,a是一维数组的数组名,该数组有10个元素,依次表示为:

    a,a,a,a,a,a,a,a,a,a。

    需要注意的是:a不属于该数组的空间范围。

    4/7

    当在说明部分定义了一个数组变量之后,C++编译程序为所定义的数组在内存空间开辟一串连续的存储单元。例如:

    上例中的a数组在内存的存储如表所示:

    5/7

    a数组共有10个元素组成,在内存中10个数组元素共占10个连续的存储单元。a数组最小下标为0,最大下标9。按定义a数组所有元素都是整型变量。

    再次提醒注意:类型和变量是两个不同概念,不能混淆。就数组而言,程序的执行部分使用的不是数组类型而是数组变量。

    说明:

    (1)下标可以是整型常量或整型表达式。如果使用表达式作为下标,就要计算表达式的值以确定下标。

    (2)C++语言中,每个数组第一个元素的下标都是0,因此第一个元素为第0个数组元素。

    (3)C++语言只能逐个引用数组元素,而不能一次引用整个数组。

    例如:int a,b; a=b;这样的写法是非法的。

    (4)数组元素可以像同类型的普通变量那样使用,对其进行赋值和运算的操作,和普通变量完全相同。

    例如: c=34;实现了给c赋值为34。

    6/7

    四、一维数组的初始化

    数组的初始化可以在定义时一并完成。格式:

    类型标识符 数组名={值1,值2,…}

    例如:

    int a={1,2,3,4,5}

    说明:

    (1)在初值列表中可以写出全部数组元素的值,也可以写出部分。例如,以下方式可以对数组进行初始化:

    int x={0,1,2,3,4};

    该方法一次仅对数组的前5个元素依次进行初始化。

    (2)对数组元素全部初始化为0,可以简写为:{0}。

    例如:

    int a={0}; 将数组a的5个元素都初始化为0。

    7/7

    五、一维数组的应用

    例5.1 输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。

    【分析】我们可定义一个数组a用以存放输入的n个数, 然后将数组a中的内容逆序输出。

    #includecstdio

    int a;

    int main()

    {

    int x,n=0;

    while(scanf(%d,x)==1) a=x; //相当{a=x;n++;}

    for (int i=n-1;i=1;--i)

    printf(%d ,a); //注意%d后面有一个空格,保证行首行尾均无空格

    printf(%d\n,a);

    return 0;

    }

    【说明】:

    语句int a声明了一个包含100个整型变量的数组,它们是:a,a,a,…,a。注意,没有a。在上述程序中,数组a被声明在main函数的外面。只有放在外面时,数组a才可以开得很大;放在main函数内时,数组稍大就会异常退出。。

    数组不能够进行赋值操作:如果声明的是int a,b,是不能赋值b=a的(Pascal语言可以的)。如果要从数组a复制k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)*k)。如果数组a和b都是浮点型的,复制时要写成memcpy(b,a,sizeof(double)*k)。如果需要把数组a全部复制到数组b中,可以写得简单一些:memcpy(b,a,sizeof(a))。使用memcpy函数要包含头文件cstring。

    注意事项

    注意一维数组的第一个元素位数是0!

    编程语言一维数组批量处理数据
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_529207.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 16:41:40  耗时:0.027
    0.0269s