C++课件 一维数组,二维数组_第1页
C++课件 一维数组,二维数组_第2页
C++课件 一维数组,二维数组_第3页
C++课件 一维数组,二维数组_第4页
C++课件 一维数组,二维数组_第5页
已阅读5页,还剩29页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9讲一维数组,二维数组数组数组:一组有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。一维数组的定义和引用1.一维数组的定义类型说明符数组名[常量表达式];说明:1)数组名命名规则与变量名相同;

2)常量表达式不能含变量,不能用圆括弧;

3)下标从0开始计算。2.一维数组元素的引用

数组必须先定义后引用,并且只能引用数组元素而不能一次引用整个数组。数组元素的表示形式为:

数组名[下标]下标可以是整型常量或整型表达式。如:

a[0]=a[5]+a[2*3]main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;/*数组元素赋值*/for(i=9;i>=0;i--)

printf(“%d”,a[i]);/*逆序输出各数组元素*/

printf("\n");}例题:输出数组元素运行结果:98765432103.一维数组的初始化1).定义数组时初始化数组元素。如:

staticinta[10]={0,1,2,…,9};2).可以只给部分元素赋初值。如:

staticinta[10]={0,1,2,3,4};对static数组,未赋初值则系统默认为0。3).对全部数组元素赋初值时,可以不指定数组长度。如:

staticinta[]={1,2,3,4,5};自动定义长度为5。注意:数组长度与提供的初值个数不相等时,不能省略数组长度。4.一维数组程序举例main(){inti;static

intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];

例题1:数组处理Fibonacci数列

for(i=0;i<20;i++){if(i%5==0)printf(“\n”);printf("%12d",f[i]);}

printf("\n");}起泡法思路:

将相邻两个数比较,将小的调到前头。经过1轮比较后,最大的数已调到最后一个位置。所以n个数要比较n-1趟,在第j趟中要进行n-j次比较。例题2:起泡法对10个整数按由小到大排序

第1次第2次第3次第4次第5次结果main(){inta[11];

inti,j,t;

printf("input10numbers:\n");for(i=1;i<11;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=1;j<=9;j++)/*10个数比较9趟*/for(i=1;i<=10-j;i++)/*每趟比较10-j次*/ if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t; }

printf("thesortednumbers:\n");for(i=1;i<11;i++)

printf("%d",a[i]);

printf("\n");}输入:10481265–76100–45123输出:-76–4501481265100123main(){inta[11]={21,14,63,19,3,16,7,28,34,100};

inttemp1,i,j;

printf("初始数组如下:\n");for(i=0;i<10;i++) printf("%5d",a[i]);

printf("\n");

例题3:将一组十个数按由小到大顺序排列.(交换法)

for(i=0;i<10;i++)for(j=i+1;j<11;j++)

if(a[j]>a[i]){temp1=a[j];a[j]=a[i];

a[i]=temp1;}for(i=0;i<11;i++) printf("%6d",a[i]);}二维数组的定义和引用1二维数组的定义类型说明符数组名[常量表达式][常量表达式]

floata[3][4],b[5][10];注意:不能写成floata[3,4],b[5,10];

C语言这种定义二维数组的方式,使得可以把二维数组看成一种特殊的一维数组。如:

a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23

即把a看成包含3个元素的一维数组,而每个元素又是一个包含4个元素的一维数组。

a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23

即把a看成包含3个元素的一维数组,而每个元素又是一个包含4个元素的一维数组。二维数组中元素的排列顺序为:按行存放。存放顺序:1,2,3行。

a[3][4]C语言允许使用多维数组,其基础为二维数组。如:语句inta[2][3][2];定义一个12个元素的3维数组。下标变化顺序:3,2,1。

1)对二维数组a[m][n],元素a[i][j]在数组中的排列位置计算公式为:

i*n+j+1对数组a[3][4],a[2][1]的位置为:

2*4+1+1=10表示它是第10个元素。

2)对二维数组a[m][n],元素a[i][j]在数组中的顺序号计算公式为:

i*n+j对数组a[3][4],a[2][1]的顺序号为:

2*4+1=9表示它前面有9个元素。2二维数组的引用

数组必须“先定义,后引用”。二维数组元素的表示形式:数组名[下标][下标]下标可以是整型表达式。

数组元素可以出现在表达式中,也可以被赋值。如:

b[1][2]=a[2][3]/2;注意:下标值的范围。常见错误:

inta[3][4];

| a[3][4]=3;a[3][4]指数组以外的某一存储单元。main(){inti,j,k,a[2][3][2];for(i=0;i<2;i++) for(j=0;j<3;j++) for(k=0;k<2;k++)

scanf("%d",&a[i][j][k]);for(i=0;i<2;i++)for(j=0;j<3;j++) for(k=0;k<2;k++)printf("a[%d][%d][%d]=%d",i,j,k,a[i][j][k]);}向3维数组赋值并输出其全部元素。3二维数组的初始化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};

3).也可对部分元素赋初值。如staticinta[3][4]={{1},{5},{9}};其结果为:

100050009000staticinta[3][4]={{1},{0,6},{0,0,11}};

其结果为:

1000060000110

staticinta[3][4]={{1},{5,6}};其结果为:

100056000000也可以对第二行不赋初值:如staticinta[3][4]={{1},{},{9}};

4).若对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};等价于staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

若定义时省略第一维的长度并部分赋初值,则应采用分行赋初值的方法。如:staticinta[][4]={{0,0,3},{},{0,10}};结果为

0030000001000例题3:把由键盘输入的数列按相反的顺序输出。#include“stdio.h”main(){

intj,i=0,a[100];

printf("inputsomeintergers(<=100):\n");

printf("endmark--Ctrl+z\n");while(scanf("%d",&a[i])!=EOF)i++;for(j=0,i=i-1;i>=0;j++,i--){if(j%3==0)printf("\n");

printf("%d\t",a[i]);}}输入:357输出:753例题4:将下列数列(杨辉三角形)延长到55个。1,1,1,1,2,1,1,3,3,1,1,4,6,4,1……main(){inta[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论