




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11讲
数组的定义和使用教学目的与要求:掌握一维数组的定义和引用掌握二维数组的定义和引用教学内容提要:1.一维数组的定义和引用
2.二维数组的定义和引用教学重点:一维数组的定义和引用教学难点:二维数组的定义和引用教学进度:P139~P151教学过程:1整理ppt数学中:a1,a2,a3,···,ai,···,anC程序中:a[0],a[1],a[2],···,a[i-1],···a[n-1]数组是数目固定,类型相同的若干变量的有序集合。数组中的每一个数称为数组元素,数组中的每一个元素都属于同一个数据类型。在内存中数组占有一段连续的存储空间。2整理ppt一、一维数组1、一维数组的定义定义的格式:类型说明符数组名[整常量表达式];说明:
(1)类型说明符:表明该数组所属类型,即数组元素的类型。(2)数组名:即数组的名称,其命名方法同变量名遵循标识符定名规则。。例如:
inta[10];它表示数组名为a,此数组有10个整型元素。3整理ppt(3)[]:下标运算符,可通过该运算符的个数反映出数组的维数。不能用圆括弧,下面用法不对:inta(10);(4)常量表达式:表示元素的个数,即数组长度。常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,c不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:特点:数组元素的个数必须是确定的数组元素的类型必须一致4整理ppt下面是合法的数组定义:①charstr[20];/*定义一个有20个元素的字符型数组str*/②floatscore[8];/*定义一个有8个元素的浮点型数组score*/③#defineN5
longdata[N];/*定义一个有5个元素的长整型数组data*/
shortz[4*N];/*定义了一个有20个元素的短整型数组z*/其中③的数组长度使用的是符号常量
下面的定义是非法的:
intn=10;charc[n];/*数组长度不能使用变量*/charstr[];/*数组长度不确定*/5整理ppt例:试判断下列数组定义是否合法:
intstudent[35]; charname[20]; floatscore[35];#definestudent35 floatn_student[student]; intscore_student[student*3];intperson(10);intn=10,a[n];6整理ppt一维数组在内存中的存放方式:数组定义以后,编译系统(计算机)将在内存中开辟一块连续的存储单元用于存放数组元素(数组元素按数组下标从小到大连续存放)。数组名表示存储单元的首地址,存储单元的大小由数组的类型和数组的大小决定。例如
inta[5];inta[4]a[3]a[2]a[1]a[0]2字节2字节2字节2字节2字节7整理ppt
a代表首地址(数组起始地址),每个元素字节数相同,因此,根据数组元素序号可以求得数组各元素在内存的地址,并可对数组元素进行随机存取。
数组元素地址=
数组名+下标即:数组元素地址=数组首地址+元素下标*sizeof(数组类型)
设a的首地址为1000,数组a存储示意图如右图所示1006a[0]a[1]a[2]a[3]a[4]aa+1a+2a+3a+4内存1000a[3]的地址=a+3即:a[3]的地址=1000+3×2=10068整理ppt引用方式:数组名[下标]2、一维数组元素的引用说明:下界≤下标≤上界;下界=0;上界=整常量表达式-1。下标为整型表达式;
若有定义:inta[5];则数组a的元素分别为:
a[0]、a[1]、a[2]、a[3]、a[4];但a[5]不是。9整理ppt一维数组元素引用的规定:数组必须先定义后使用。数组元素只能逐个被引用,不能一次引用整个数组。对数组中所有元素逐个引用时,通常可使用循环结构。一个数组元素实质是一个变量,代表内存中的一个存储单元。引用后的数组变量也称下标变量。如:a[0]=5;a[3]=a[1]+4;a[’D’-’B’]=3;scanf(“%d”,&a[4]);10整理ppt例1:输入10个整数,分别按顺序和逆序输出。#include<stdio.h>voidmain(){inti,a[10];
printf("input10numbers:\n");
for(i=0;i<10;i++)scanf("%d",&a[i]);
printf("\n");for(i=0;i<=9;i++)printf("%d",a[i]);printf("\n");
for(i=9;i>=0;i--)printf("%d",a[i]);}程序的运行情况:input10numbers:12345678910↙1234567891010987654321注意:
1.循环控制变量的初值、终值及控制条件。
2.不能整体输入/出数组如:printf(“%d”,a);学会如何对数组进行输入输出11整理ppt数组初始化:指定义数组时对数组元素赋以初值。3、一维数组的初始化格式:类型符数组名[表达式]={初值表};说明:给全部元素赋初值。inta[5]={0,1,2,3,4};给部分元素赋初值。intb[5]={1,2,3};给全部元素赋初值时可不指定数组的长度。
inta[]={1,2,3};但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成inta[10]={1,2,3,4,5};只初始化前5个元素,后5个元素为默认值。
12整理ppt例2、数组初始化与未初始化比较#include<stdio.h>main(){inti,a[5]={3,4,5},b[5];printf(“\narrayais:”)for(i=0;i<5;i++)printf(“%6d”,a[i]);printf(“\narraybis:”)for(i=0;i<5;i++)printf(“%6d”,b[i]);}
运行结果:
arrayais:34500arraybis:-321398401170454考虑:数组b
的值的含义?13整理ppt程序如下:
main(){
inti;intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%12d",f[i]);}}运行结果如下:
11235813213455891442333776109871597258441816765例1、用数组来处理求fibonacci数列问题。4、一维数组程序举例14整理ppt#defineN5#include<stdio.h>main(){inti,j,k,max,min;staticinta[5];for(i=0;i<5;i++)scanf("%d",&a[i]);max=min=a[0];/*假定第一个元素既是最大的,也是最小的*/j=k=0;/*对分别记录最大,最小元素下标的变量j,k初始化*/
for(i=0;i<5;i++){if(max<a[i]){max=a[i];j=i;}/*把当前最大值送max,下标送j*/elseif(min>a[i]){min=a[i];k=i;}}printf("max:a[%d]=%d,min:a[%d]=%d",j,max,k,min);}例2、从键盘上输入5个数,输出最大、最小的元素以及它们的下标若输入:823120-10↙输出为:max:a[2]=312,min:a[4]=-1015整理ppt例3、
将10个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分数段的人数存到b数组中:成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[1],成绩为80到89的人数存到b[2],成绩为90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到b[5]中。
16整理pptvoidmain(){inti,a[10];staticintb[6];printf("enterthescore:\n");for(i=0;i<10;i++){scanf(“%d”,&a[i]);switch(a[i]/10) {case6:b[0]++;break;case7:b[1]++;break;case8:b[2]++;break;case9:b[3]++;break;case10:b[4]++;break;default:b[5]++;}}printf("theresultis:");for(i=0;i<6;i++)printf("%d\t",b[i]);}17整理ppt二、二维数组1、二维数组的定义和引用1)二维数组的定义格式:类型说明符数组名[整常量表达式1][整常量表达式2]
例:floata[3][4],b[5][10];
2)存储方式:二维数组可看作特殊的一维数组;
在计算机中二维数组的元素按行顺序存放。例:inta[2][3];它在内存情况:18整理ppt3)二维数组的引用格式:数组名[下标1][下标2]注意:0≤下标1≤常量表达式1-1;0≤下标2≤常量表达式2-1。例:a[1][2]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]19整理ppt说明:给全部元素赋初值。
(1)分行初始化。如:
staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)按数组排列的顺序将所有数据写在一个花括号内,如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};2、二维数组的初始化二维数组初始化通常是按行进行的。格式:类型符数组名[表达式1][表达式2]={初值表};20整理ppt说明:给部分元素赋初值。staticinta[3][4]={{,1},{0,6},{0,0,11}};0100060000110给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
21整理ppt例1、用如下的3×3矩阵初始化数组a[3][3],求矩阵的转置矩阵。 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9转置矩阵:是将原矩阵元素按行列互换形成的矩阵方法1:转置矩阵是将原矩阵元素按行列互换形成的。 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9方法2:沿主对角线将对称位置元素互换即可。主对角线22整理ppt#include<stdio.h>main(){intj,k;inta[3][3]={1,2,3,4,5,6,7,8,9},b[3][3];for(j=0;j<3;j++) for(k=0;k<3;k++)b[j][k]=a[k][j];for(j=0;j<3;j++){for(k=0;k<3;k++) printf(“%6d”,b[j][k]); printf(“\n”);}} 23整理ppt例2:在N行M列的二维数组x中,找出数组的最大值以及此最大值所在的行、列下标。#defineN2#defineM3#include"stdio.h"voidmain(){inti,j,x[N][M],max,line,col;printf("inputarraynumbers:\n");for(i=0;i<N;i++)for(j=0;j<M;j++) scanf("%d",&x[i][j]);max=x[0][0];line=col=0;for(i=0;i<N;i++)for(j=0;j<M;j++)if(max<x[i][j]){max=x[i][j];line=i;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人力资源社会保障部劳动合同示范文本(终稿)2篇
- 奶茶店用工协议书7篇
- 二手房协议书范本6篇
- 赡养子女协议书6篇
- 租赁物业场地合同范本
- 珍爱网婚介合同范本
- 人参采购合同范本
- 班班通维修合同范本
- 中日合资协议合同范本
- 出售农村别墅合同范本
- 第4课《乡愁》课件-2025-2026学年统编版语文九年级上册
- 第六届山东省无人机技术与应用职业技能竞赛(无人机测绘操控员)题库(含答案)
- 第1章三角形单元测试2025-2026学年苏科版八年级数学上册
- 2025年高级养老护理员职业技能考试笔试试题(附答案)
- PWC平安集团互联网企业预算管理体系介绍
- 2025-2026学年人教版小学数学四年级上册教学计划及进度表
- 高中语文课本中的作文素材(选必上)
- 2025年中国互联网金融协会招聘面试预测题及答案
- 水泥路施工安全知识培训课件
- 2025年秋季学期(统编版)二年级上册语文教学工作计划及教学进度表
- 2025年浙江省医疗器械专业技术资格考试(医疗器械专业知识与技能)历年参考题库含答案详解(5卷)
评论
0/150
提交评论