C语言第8章—数组和字符串2009.ppt
文本预览下载声明
第8章 数组与字符串;第8章 数组与字符串; 整型
基本类型: 实型
字符型 、 枚举类型
数组类型
构造类型: 结构体类型
公用体类型
指针类型
空类型;;什么构造类型?
所谓构造类型是指由基本类型数据按一定的规则组成的,是用户自己按规则定义的。数组是构造类型之一。
在数学中我们学过数列、矩阵的概念,
数列通常表示为:a1 、a2 、a3、….、an
矩阵通常表示为:
;在C语言中表示数组和矩阵的方法是:
数组:a[0]、a[1]、a[2]、a[3]、a[4]、a[5]
其中 a :称为数组名。
方括号中的数:称为下标
下标是一个数时,也就是数列,称为一维数组。
下标是两个数时,也就是矩阵,称为二维数组。还有三维数组、四维数组等。 ;第8章 数组与字符串;;8.1 一维数组;???下数组定义是正确的:
#define N 10
……
float score1[N], score2[N];
int num[10+N];
char c[26];;数组在内存的存放;8.1.2 数组元素的引用;8.1.2 数组元素的引用(续);8.1.2 数组元素的引用(续);合法标识符;;8.1.3 一维数组的初始化;8.1.4 一维数组应用举例;【例8.2】用数组求Fibonacci数列前20个数;;【例8.4】冒泡法排序(从小到大)。;例;冒泡法排序 (续);#include stdio.h
main()
{ int a[11],i,j,t;
printf(Input 10 numbers:\n);
for(i=1;i11;i++)
scanf(%d,a[i]);
printf(\n);
for(j=1;j=9;j++)
for(i=1;i=10-j;i++)
if(a[i]a[i+1])
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
printf(The sorted numbers:\n);
for(i=1;i11;i++)
printf(%d ,a[i]);
};以6个数:3、7、5、6、8、0为例。
思路:
第一趟:将第一个数依次和后面的数比较,如果后面的某数小于第一个数,则两个数交换,比较结束后,第一个数则是最小的数。
第二趟:将第二个数依次和后面的数比较,如果后面的某数小于第二个数,则两个数交换,比较结束后,第二个数则是次小的数;…… 。;【例8.5】选择法排序(续);#define N 5
main( )
{ int a[N];
int i,j,t;
for (i=0; iN; i++)
scanf(%d,a[i]);
printf(\n);
for (j=0; jN-1; j++) /*确定基准位置 */
for(i=j+1; iN; i++)
if (a[j]a[i])
{ t=a[j];a[j]=a[i];a[i]=t; }
printf(The sorted numbers: \n);
…
} ;8.2 二维数组;x[0][0]
x[0][1]
x[0][2]
x[1][0]
x[1][1]
x[1][2];例 int a[3][4];
;x[0]是数组名,是元素x[0][0]的地址;a[3][4]=3; /* 下标越界 */
a[1,2]=1; /* 应写成 a[1][2]=1; */;8.2.3 二维数组的初始化;8.2.3 二维数组的初始化(续);下面对二维数组的定义都是错误的:;8.2.4 二维数组应用举例;二维数组元素的引用
形式: 数组名[下标][下标]
二维数组元素的初始化
分行初始化:;
程序举例;8.2.4 二维数组应用举例(续);#include math.h
#define N 4
#define M 5
main( )
{ int i,j,row,colum,max,a[N][M];
… … /* 输入数据 */
max=a[0][0]; row=colum=0;
for (i=0; iN; i++)
for (j=0; jM; j++)
if (abs(a[i][
显示全部