您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 二级考试C语言程序设计3
第4章数组本章主要知识点(1)一维数组的定义和引用。Inta[100];a[0]a[1]a[2]a[99](2)二维数组的定义和引用。(3)字符数组与字符串的应用。第4章数组4.2一维数组的定义和引用4.3二维数组的定义和引用4.5综合实训4.4字符数组与字符串4.1数组应用的C程序实例2.C程序实例11.C程序实例14.1数组应用的C程序实例数组是若干具有相同数据类型且按一定存储顺序排列的一组变量。数组中的变量称数组元素。每一个元素通过数组名和存储位置(下标)来确定。根据确定数组的一个元素所需要的下标数把数组分为一维数组、二维数组、三维数组等,二维以上的数组也称为多维数组。4.1.1C程序实例(1)1.C程序实例1【例4.1】应用一维数组,实现从键盘输入10个整数,输出其中的最小数。程序名为l4_1.cpp。#includestdio.hmain(){inta[10],i,min;/*定义一维整型数组a及整型变量i和min,数组a有10个元素*/for(i=0;i10;i++)/*循环输入数组a的10个元素*/scanf(%d,&a[i]);min=a[0];/*设a[0]元素为最小值min的初值*/for(i=1;i10;i++)/*逐个元素与min比较,找出最小值*/if(mina[i])min=a[i];printf(MIN=%d\n,min);/*输出找到的最小值min*/}[例4.1]程序结果在【例4.1】程序实例中,输入10个整型数12,34,56,9,21,-12,34,0,-3,1分别存放在一维数组a的10个元素中。故程序运行结果见下图所示。输入数据输出结果4.1.1C程序实例(2)2.C程序实例2【例4.2】应用二维数组,实现从键盘为23数组输入值,并输出数组所有元素之和。程序名为l4_2.cpp。#includestdio.hmain(){inta[2][3],i,j,sum=0;/*定义二维整型数组a及整型变量i,j和sum,数组a有2行3列6个元素*/for(i=0;i2;i++)/*按行向数组a输入6个元素,并将元素值送入sum进行累加求和*/for(j=0;j3;j++){scanf(%d,&a[i][j]);sum+=a[i][j];}printf(Sum=%d\n,sum);/*输出和值sum*/}[例4.2]程序结果在【例4.2】程序实例中,输入6个整型数23,12,45,-12,-34,35分别存放在二维数组a两行三列的6个元素中。故程序运行结果见下图所示。输入数据输出结果4.2.2一维数组元素的引用4.2.1一维数组的定义4.2一维数组的定义和引用4.2.3一维数组的初始化定义数组时,应该注意以下几点:(1)常量表达式的值必须是一个正的整数值。(2)数组定义后,数组的长度就不能再改变。(3)定义时,可用一个类型说明符来定义多个相同类型的数组和变量,相互之间用逗号分隔。如【例4.1】程序实例中“inta[10],i,min;”定义了一维整型数组a和整型变量i及min。4.2.1一维数组的定义一维数组定义的一般格式为:类型说明符数组名[常量表达式];在【例4.1】实例中“inta[10];”表示数组名是a,数组元素是整型,数组有10个元素。故定义了一个10个元素的整型数组a。(1)类型说明符可以是int、char和float等,指明该数组的类型,即数组中每个元素的类型;(2)数组名的命名规则遵循标识符的命名规则,它代表数组存储时的首地址;(3)常量表达式是指数组的长度,即数组元素的个数。【例4.1】程序实例中“inta[10]”定义了一个10元素的整型数组a,则数组的10个元素分别是a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],通过for(i=0;i10;i++)scanf(%d,&a[i]);语句完成数组元素赋值,即输入给10个元素a[0]到a[9]。min=a[0];功能是假设a[0]元素为最小元素,将其值赋给记录最小值的变量min。语句for(i=1;i10;i++)if(mina[i])min=a[i];完成从a[1]到a[9]逐个元素与min比较,并将较小的元素值赋给min。最后循环结束后,min存储的是最小元素的值。输出语句printf(MIN=%d\n,min);执行后,输出结果为:MIN=-12。注意:在一维数组引用过程中要防止下标越界问题。如“inta[10]”定义的数组a,数组a中不包括a[10]元素,下标为10已经越界。对于数组下标越界问题,C语言编译系统不进行检测,即不进行错误报告,只是会造成程序运行结果的错误。4.2.2一维数组元素的引用数组的使用仍然遵从“先定义,后使用”的原则。数组使用是通过数组元素引用实现的,而不能直接使用整个数组,每一个数组元素就是一个简单变量。一维数组的数组元素表示形式为:数组名[下标]下标是一个整型常量或整型表达式。一维数组元素的下标从0开始,如果数组长度为n,则元素的最大下标为n-1。4.2.3一维数组的初始化类型说明符数组名[常量表达式]={初始值表};一维数组初始化时,要注意以下两点:(1)当初始化,初始值表给出全部元素值时,则数组长度可缺省。如,前例造价于inta[]={12,-3,4,0,367};(2)给数组中的部分元素赋初始值。如,inta[5]={1,2,3};则按照下标递增的顺序依次赋值,后两个元素系统自动赋0值。即a[0]=1,a[1]=2,a[2]=3,而a[3]和a[4系统自动赋值为0。(3)数组中的全部元素赋初值为0。如,inta[5]={0};在定义一维数组同时给数组元素赋初始值,称为一维数组的初始化。一般格式为:初始值表中数据与数组元素依次对应,初始值表中的数据用逗号(,)分隔。如,inta[5]={12,-3,4,0,367};则数组a的5个元素依次取得初始值。对输入的10个整数,完成以下任务:1、输出其中的最大值和最小值;2、输出他们的平均值以及比平均值大的数;#includestdio.hmain(){inti;floatscore[10],aver=0.0;printf(Pleaseinputscoresof10students:);for(i=0;i10;i++)/*输入10位学生成绩并累加和*/{scanf(%f,&score[i]);aver+=score[i];}aver/=10;/*求出10位学生的平均成绩*/printf(Theaveragescoreis:%.2f\n,aver);printf(Theyare:);for(i=0;i10;i++)/*输出高于平均成绩的学生成绩*/if(score[i]aver)printf(%6.2f,score[i]);}4.5综合实训(1【例4.5】)【例4.5】输入10位学生的成绩,求出平均分,并输出高于平均分的同学成绩。程序名为l4_5.cpp。4.5综合实训(1【例4.5】结果)运行结果输出平均成绩输出高于平均分成绩输入10个成绩从键盘上任意输入10个整形数据存到数组a中,编程求出a中相邻两元素之和,并将这些和存放在数组b中,按每行3个元素的形式输出。4.3.2二维数组元素的引用4.3.1二维数组的定义4.3二维数组的定义和引用4.3.3二维数组的初始化二维数组被定义后,编译系统将为该数组在内存中分配一片连续的存储空间,按行的顺序连续存储数组中的各个元素。即先顺序存储第一行元素,从a[0][0]到a[0][2],再存储第二行的元素,从a[1][0]到a[1][2]。数组名a仍然代表数组的起始地址。4.3.1二维数组的定义二维数组定义的一般格式为:类型说明符数组名[常量表达式1][常量表达式2];(1)类型说明符和数组名含义均与一维数组相同。(2)二维数组区别于一维数组的根本在于数组名后有两个常量表达式。常量表达式1表示行数,而常量表达式2表示列数。也就是他们分别指出数组的行长度和列长度。在【例4.2】实例中“inta[2][3];”表示数组名是a,数组元素是整型,数组有2行3列,共计6(23)个元素。即定义了一个2行3列的整型数组a。二维数组的行列下标也是从0开始。则数组a的6个元素是:a[0][0],a[0][1],a[0][2]a[1][0],a[1][1],a[1][2]for(i=0;i2;i++)/*按行向数组a输入6个元素,并将元素值送入sum进行累加求和*/for(j=0;j3;j++){scanf(%d,&a[i][j]);sum+=a[i][j];}外循环中变量i指示行下标,内循环中变量j指示列下标,从而完成6次输入,即231245-12-3435CR,输入6个元素值,并将值依次送入sum变量累加求和。循环结束后,由输出语句printf(Sum=%d\n,sum);完成累加和sum的输出,结果为:Sum=694.3.2二维数组元素的引用二维数组元素的引用形式为:数组名[行下标][列下标]行(列)下标表达式可以是整型常量、整型变量及表达式,表示二维数组的行(列)长度。下标值仍然从0开始,到行(列)长度减1。在【例4.2】程序实例中“inta[2][3];”,定义了一个2行3列的二维整型数组a,则在内存中依次连续存储的数组元素为a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],通过循环嵌套语句给数组a的各个元素输入值。如下:(1)数组的全部元素都赋初值时,则定义数组时对第一维长度可以缺省。如,inta[][3]={1,2,3,4,5,6};等价于inta[2][3]={1,2,3,4,5,6};(2)在分行赋值时),可以在定义时省略第一维的长度。如,inta[][3]={{0},{0,3}};赋值后数组a的元素分别为:000030定义二维数组时,给数组元素赋初值称为二维数组初始化。二维数组初始化时要注意二维数组的元素排列顺序。初始值的排列顺序必须与数组元素在内存的存储顺序完全一致。具体的方法如下:1.分行给二维数组赋初值。2.按数组排列顺序对各元素赋初值。3.对部分元素赋初值。4.赋初值时,有些情况可缺省第一维长度,但第二维长度不能缺省。如,inta[2][3]={1,2,3,4,5,6};此方法数据所处的行列位置不直观,尤其是数据多时,数据存储所在的行列需要仔细定位,容易出现错误。4.3.3二维数组的初始化如,inta[2][3]={{1,2,3},{4,5,6}};按行赋初值的方法直观。如,inta[2][3]={{1},{0,4}};此法对数组中各行部分元素赋初值,其余元素值自动为0。即赋值后数组a的各元素为:1000404.4.2字符数组的初始化4.4.3字符数组的引用4.4.1字符数组的定义4.4字符数组与字符串4.4.4字符数组的输入输出4.4.5字符串处理函数4.4.1字符数组的定义字符数组是用来存放字符数据的数组,即数组的数据类型是字符型(char)的数组称为字符数组。字符数组的每个元素存放一个字符。字符数组的定义形式为:一维字符数组定义:二维字符数组定义:如,charc[10];/*定义了一个10个元素的一维字符数组c*/charc[2][10];/*定义了一个2行10列的二维字符数组c*/由于字符型与整型是互相通用的,因此上面的定义也可改为:intc[10];intc[2][10];但是,此种方法定义会浪费存储空间。char数组名[常量表达式];char数组名[常量表达式1][常量表达式2];字符串是用双引号括起来的字符序列,在C语言中,字符串是利用字符数组来存放和处理的。(1)用字符串常量初始化一维字符数组。如,charc[]={“Howareyou”};也写成:charc[]=“Howareyou”;相当于:charc[]={‘H’,’o’,’w’,’‘,’a’,’r’,’e’,’‘,’y’,’o’,’u’,’\0’}(2)二维数组初始化时,也可以使
本文标题:二级考试C语言程序设计3
链接地址:https://www.777doc.com/doc-7027370 .html