第18讲数组的定义及一维数组初始化和使用(2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C++程序设计基础TheBaseofC++Programming长春工程学院软件学院-2-2020/1/21知识回顾一、C++的语句类型(5类)1、说明语句2、控制语句3、表达式语句4、空语句5、复合语句(语句块)-3-2020/1/21知识回顾二、分支语句1、if语句(1)双分支(3)多分支(4)if嵌套(2)单分支if(表达式)语句1else语句2if(表达式)语句if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……else语句n+1if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4-4-2020/1/21二、分支语句2、switch语句(开关语句)知识回顾switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;[default:语句n+1;]}-5-2020/1/21知识回顾三、循环语句1、循环结构的组成(1)循环初始化(2)循环体(3)循环变量/条件的修改(4)判断循环结束2、三种循环语句while(表达式)循环体语句do{循环体语句}while(表达式);for(表达式1;表达式2;表达式3)循环体语句-6-2020/1/21知识回顾三、循环语句3、三种循环语句的比较循环语句循环类型适用于while语句前测试型条件循环do-while语句后测试型条件循环for语句前测试型定数循环-7-2020/1/21知识回顾四、转向控制语句1、break语句作用:终止当前循环或跳出switch语句。2、continue语句作用:结束本次循环-8-2020/1/21C++程序设计基础第1章程序设计概述第2章算法及其描述第3章基本数据类型与表达式第4章程序结构与流程控制语句第5章数组第6章函数-9-2020/1/21第5章数组5.1数组基本概念5.2一维数组5.3字符数组-10-2020/1/215.1数组基本概念一、问题的提出【例5-1-1】从键盘输入5个整数,逆序输出这5个数。#includeiostream.hvoidmain(){intn0,n1,n2,n3,n4;cinn0n1n2n3n4;coutn4n3n2n1n0endl;}如果是100个数呢?能否用循环实现呢?-11-2020/1/215.1数组基本概念一、问题的提出【例5-1-1】从键盘输入100个整数,逆序输出这100个数。#includeiostream.hvoidmain(){intn0,n1,...,n99;inti;for(i=0;i=99;i++)cinni;for(i=99;i=0;i--)coutni;}ni是一个确定的变量名,不能变化为n0、n1、…、n99。怎么能让ni变化?数组?该例中5(或100)个变量的特点:具有相同的数据类型-12-2020/1/215.1数组基本概念一、问题的提出【例5-1-1】从键盘输入100个整数,逆序输出这100个数。#includeiostream.hvoidmain(){intn[100];inti;for(i=0;i=99;i++)cinn[i];for(i=99;i=0;i--)coutn[i];}该例中5(或100)个变量的特点:具有相同的数据类型声明了包含100个整型变量的数组n。每个整型变量都称为这个数组的元素。程序中可以用n[i]来指定数组中的元素,其中i称为下标,代表数组元素的顺序号。-13-2020/1/215.1数组基本概念二、什么是数组?数组是一组变量,满足下列条件:(1)具有相同的名字(2)具有相同的数据类型(3)在存储器中连续存放每个变量名字相同(数组名)、下标不同,称为“数组元素”。“数组名”代表整个数组,其值是数组的首地址。数组要先声明后使用。数组名不能与相同作用域的其他变量名重名。声明一个数组,相当于声明了一批变量,更重要的是,这批变量是“有组织”的。-14-2020/1/215.1数组基本概念二、什么是数组?【例】intscore[100];/*定义一个有100个整型元素的一维数组,相当于定义100个独立的整型变量。*/以一当百!-15-2020/1/21第5章数组5.1数组基本概念5.2一维数组5.3字符数组-16-2020/1/215.2一维数组一、声明一维数组一般格式:类型说明符数组名[数组长度];注意:数组的空间分配是静态分配。数组长度只能是常量,长度不能在程序运行过程中发生变化。数组元素的数据类型用户自定义的标识符是一个常量表达式N,表示数组元素的个数。下标范围是0~N-1。例如,intscore[5];score[0]score[1]score[2]score[3]score[4]数组元素在内存中的存储score-17-2020/1/21inta[];intn=10;charc[n];#defineSIZE100floatb[SIZE];int2a[10];错误,没有指明数组的大小inta[10];正确,SIZE是常量,相当于floatb[100];错误,数组的大小不能是变量,应为charc[10];错误,数组名2a不符合标识符的命名规则-18-2020/1/215.2一维数组二、数组元素的引用数组元素的引用形式:数组名[下标表达式]【例】要存放100个职工的工资,且工资以实数形式表示,那么声明如下:floatsalary[100];salary[2]=880;cinsalary[0];coutsalary[1];floatt=salary[99];//将值880存入数组salary的第3个元素中//通过键盘给第1个数组元素赋值//输出第2个数组元素的值//读出最后一个元素的值,存入变量t中-19-2020/1/21【例】floatscore[10];inti;for(i=0;i10;i++)cinscore[i];for(i=0;i10;i++)cinscore;整型和实型数组的赋值只能对数组元素单独操作,不能对数组整体操作。//正确//错误-20-2020/1/215.2一维数组二、数组元素的引用数组元素的引用形式:说明:①数组元素是由下标来区分的。②对整型和实型数组不能进行整体引用,一次只能访问一个数组元素。③每个数组元素都相当于一个相应类型的变量。数组名[下标表达式]-21-2020/1/21【例】floatscore[100];inta=5,b;floatf=3.0;score[a+1]=90.0;score[a+f]=100.0;score[b]=87;score[100]=90;C++编译器不对数组元素的下标进行越界检查。//正确//错误,下标值必须是正整数//错误,下标越界//错误,下标值必须是确定的-22-2020/1/215.2一维数组二、数组元素的引用数组元素的引用形式:说明:①数组元素是由下标来区分的。②对整型和实型数组不能进行整体引用,一次只能访问一个数组元素。③每个数组元素都相当于一个相应类型的变量。④下标可以是整型常量、变量或表达式。⑤下标从0开始,且不能越界使用,否则可能覆盖其他数据,造成严重后果。数组名[下标表达式]-23-2020/1/21示范实例【例18-5-1】定义一个含10个整数,以array命名的数组,用100~109对数组元素赋值,并对其求和。分析:①数组array[10],用于存放10个整数。②变量sum,用于存放和。③应使用循环结构。④输出和。-24-2020/1/21定义数组array[10],初始化变量sum,i开始输出sumTi10?给array[i]赋值累加和循环变量i自增结束F#includeiostream.hvoidmain(){inti,sum=0;intarray[10];for(i=0;i10;i++){array[i]=100+i;sum=sum+array[i];}cout“sum=”sumendl;}-25-2020/1/215.2一维数组三、数组初始化定义数组之后,与普通变量一样,数组是没有初始值的,各存储单元的值都是不确定的。数组的初始化:声明数组的同时给部分或全部元素赋初值。有两种方法初始化数组元素:方法一:在定义数组时初始化方法二:在程序中对数组进行初始化(先声明数组,然后初始化数组元素。)-26-2020/1/215.2一维数组三、数组初始化【例】初始化数组元素方法一:intscore[5]={90,80,70,60,50};方法二:intscore[5];inti;for(i=0;i5;i++)cinscore[i];-27-2020/1/215.2一维数组三、数组初始化方法一注意事项:(1)用作初始化的值放在一个大括号{}中。例如:intarray[3]={1,2,3};floatprice[5]={28.5,30.0,49,50.3,17.5};-28-2020/1/215.2一维数组三、数组初始化方法一注意事项:(1)用作初始化的值放在一个大括号{}中。(2)全部元素初始化时,可以不用说明元素个数。例如:intarray[]={1,2,3,4,5,6,7,8,9,10};//默认有10个元素intarray[10]={1,2,3,4,5,6,7,8,9,10};//与上面的定义等价-29-2020/1/215.2一维数组数组的大小数组的大小可用以下公式计算:数组大小=sizeof(数组名)/sizeof(数组类型)sizeof计算出的存储空间大小的单位为字节-30-2020/1/21示范实例【例18-5-2】下面代码用sizeof确定数组的大小-31-2020/1/215.2一维数组三、数组初始化方法一注意事项:(1)用作初始化的值放在一个大括号{}中。(2)全部元素初始化时,可以不用说明元素个数。(3)初始化值的个数可以少于数组元素个数。没有被初始化的元素将赋值为0。例如:ints[4]={3};ints[4]={3,0,0,0};//二者等价-32-2020/1/215.2一维数组三、数组初始化方法一注意事项:(1)用作初始化的值放在一个大括号{}中。(2)全部元素初始化时,可以不用说明元素个数。(3)初始化值的个数可以少于数组元素个数。没有被初始化的元素将赋值为0。(4)初始化值的个数不能多于数组元素个数。也不能使用逗号来省略对部分元素的初始化。例如:intarray1[4]={1,2,3,4,5};intarray2[4]={1,,3,};intarray3[4]={};//以上定义都是错误的-33-2020/1/21示范实例【例18-5-3】有10位学生的成绩:67,34,88,55,74,95,82,43,90,要求编写程序找出其中的最高分,及其在这批数据中的位置。分析:①数组score[11],用于存放10个成绩,从下标1开始使用。②变量max,用于存放“目前的最高成绩”。初值为第1个数据。③变量max_index,用于存放最高成绩在数组中的位置。初值为1。④使用循环结构。每处理一个数据时,都要判断这个数据是否比max中的值高,如果高于max,就改写max和max_index。⑤输出最高分及其位置。-34-2020/1/21开始声明数组score和变量max,max_index,i=2输入10个成绩→数组scoremax←score[1]max_index←1i=10?score[i]max?max←score[i]max_index←ii←i+1输出max和max_index结束YYNN-35-2020/1/21如何获得最后一个最高分?(score[i]=max)-36-2020/1/21示范实例【例18-5-4】编程实现:对一个包含10个成绩的无序成绩表进行排序,使其成为降序排列的成绩表,最后输出结果。6734908855

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功