当前位置:文档之家› 《C语言程序设计教程》课件第6章

《C语言程序设计教程》课件第6章

《C语言程序设计教程》课件第6章
《C语言程序设计教程》课件第6章

本文由792037130zd贡献

ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

C 语言程序设计

第6章

数 组

第6章 数组

本章重点介绍 : 6.1 一维数组 6.2 二维数组 6.3 字符数组与字符串

2010-9-25

第6章 数组

一个人N门课的成绩怎样存储和处理? 一个人 门课的成绩怎样存储和处理? 门课的成绩怎样存储和处理 一个班N门课的成绩怎样存储和处理 门课的成绩怎样存储和处理? 一个班 门课的成绩怎样存储和处理?…… 这些数据的特点:具有相同的数据类型。 这些数据的特点:具有相同的数据类型。 为了方便地使用这些数据, 为了方便地使用这些数据,C语言提供了一 构造数据类型:数组。 种构造数据类型:数组。 例如:存储学生成绩用实型数组 例如:存储学生成绩用实型数组 score[5] 其中:score是数组名 该数组可以存放5个成绩, 是数组名。 其中:score是数组名。该数组可以存放5个成绩, 分别用下标变量表示: 分别用下标变量表示: score[0],score[1],…score[4]。 score[0],score[1],…score[4]。 下标变量也称为数组元素。 也称为数组元素 下标变量也称为数组元素。

2010-9-25

6.1 一维数组

6.1.1 一维数组的定义 数组名[常量表达式 常量表达式]; 数据类型 数组名 常量表达式

例如: 例如: int a[10]; float score[5]; score[5]; “数据类型”: 是数组元素的数据类型。 数据类型” 是数组元素的数据类型。 “数组名”: 数组名”: 遵循C语言标识符规则 标识符规则。 遵循C语言标识符规则。 常量表达式” 表示数组中有多少个元素, “常量表达式”:表示数组中有多少个元素,即数 组的长度。它可以是整型常量、 组的长度。它可以是整型常量、整型常量表达式 或符号常量。 或符号常量。

2010-9-25

6.1.1 一维数组的定义(续) 一维数组的定义(

以下数组定义是正确的: 以下数组定义是正确的: #define N 10 …… float score1[N], score2[N]; int num[10+N]; char c[26]; 以下数组定义是不正确的: 以下数组定义是不正确的: int array(10); int n; float score[n]; double b['a'.. 'd']; char str[ ];

2010-9-25

数组在内存的存放

数组下标从0开始。 数组下标从0开始。 一维数组的数组元素 低地址 在内存里按顺序存放。 按顺序存放 在内存里按顺序存放。 数组名代表数组的首 地址, score的值 地址,即score的值 与score[0] 的地址 值相同。 值相同。 高地址

score数组

91.5 34.5 67.5 72.0

84.0

score[0] score[1] score[2] score[3] score[4]

2010-9-25

6.1.2 数组元素的引用

格式: 格式:

数组名[下标表达式] 数组名[下标表达式]

例如: 例如:输入学生成绩 for(i=0;i<5 for(i=0;i<5;i++) scanf( %f" &score[i]); scanf("%f",&score[i]); 例如:fib[n]=fib[n-1]+fib[n-2]; 例如:fib[n]=fib[n-1]+fib[n下标表达式的值必须是整型表达式。 下标表达式的值必须是整型表达式。 的值必须是整型表达式

2010-9-25

6.1.2 数组元素的引用(续) 数组元素的引用(

说明: 说明:

下标从0开始 下界为0), 开始( ),数组的最大下标 ① 下标从 开始(下界为 ),数组的最大下标 上界)是数组长度减1。 (上界)是数组长度减 。 例如: 例如: int a[10]; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查,如果引用的数组元素 编译系统不做越界检查, 编译系统不做越界检查 超出数组范围会破坏其他变量的值。 超出数组范围会破坏其他变量的值。

2010-9-25

6.1.2 数组元素的引用(续) 数组元素的引用(

② [ ]是下标运算符, 是下标运算符, 引用数组元素时, 引用数组元素时 数组元素 根据数组的首地址 根据数组的首地址 下标数 和下标数,计算出 该元素的实际地址, 该元素的实际地址, 取出该地址的内容 取出该地址的内容 进行操作。 进行操作。 如引用 score[2]: (1)计算 2000+2*4=2008 计算 (2)取出 取出2008的内容 取出 的内容 2000H 2004H 2008H 200CH 218CH 91.5 34.5 67.5 72.0

84.0

score[0] score[1] score[2] score[3] score[4]

2010-9-25

6.1.3 一维数组的初始化

初始化:在定义数组时给数组元素赋初值。 初始化:在定义数组时给数组元素赋初值。

1.在定义数组时,对全部数组元素赋初值 .在定义数组时, 例如: 例如:int a[5]={0,1,2,3,4}; 此时可以省略数组长度,例如: 此时可以省略数组长度,例如:int a[ ]={0,1,2,3,4}; 2.在定义数组时,对部分数组元素赋初值 .在定义数组时, 例如: 例如:int a[5]={1,2,3};系统为其余元素赋 0 。 系统为其余元素赋 3.当初值的个数多于数组元素的个数时,编译出错 .当初值的个数多于数组元素的个数时, 例如: 例如: int a[5]={0,1,2,3,4,5};

10

2010-9-25

6.1.4 一维数组应用举例

11

【例6.1】将10个人的成绩输入计算机后按逆序显示。 6.1】 10个人的成绩输入计算机后按逆序显示。 个人的成绩输入计算机后按逆序显示 #define N 10 main( ) { int i;float score[N]; for (i=0; i<N; i++) scanf("%f",&score[i]); for (i=N-1; i>=0; i--) printf("%6.1f",score[i]); } 运行情况如下: 运行情况如下: 67 74 89 92 34 67 83 95 73 78 78.0 73.0 95.0 83.0 67.0 34.0 92.0 89.0 74.0 67.0

2010-9-25

12

2010-9-25

13

2010-9-25

【例6.4】冒泡法排序(从小到大)。 6.4】冒泡法排序(从小到大)。

以6个数:3、7、5、6、8、0为例。 个数: 为例。 第一趟排序情况如下: 第一趟排序情况如下: 375680 比较, 第一次 3和7比较,不交换 3 7 5 6 8 0 和 比较 比较, 357680 第二次 7和5比较,交换 和 比较 比较, 356780 第三次 7和6比较,交换 和 比较 比较, 第四次 7和8比较,不交换 3 5 6 7 8 0 和 比较 比较, 356708 第五次 8和0比较,交换 和 比较 在第一趟排序中, 个数比较了 个数比较了5次 在第一趟排序中,6个数比较了 次,把6个数中 个数中 的最大数8排在最后 排在最后。 的最大数 排在最后。

14

2010-9-25

冒泡法排序 (续)

第二趟排序情况如下: 第二趟排序情况如下:

356708 比较, 第一次 3和5比较,不交换 3 5 6 7 0 8 比较, 第二次 5和6比较,不交换 3 5 6 7 0 8 比较, 第三次 6和7比较,不交换 3 5 6 7 0 8 比较, 356078 第四次 7和0比较,交换 在第二趟排序中,最大数8不用参加比较,其余的5 在第二趟排序中,最大数8不用参加比较,其余的5个数比 较了4 把其中的最大数7排在最后,排出7 8。 较了4次,把其中的最大数7排在最后,排出7 8。 以此类推: 以此类推: 第三趟比较3 第三趟比较3次,排出 6 7 8 第四趟比较2 第四趟比较2次,排出 5 6 7 8 第五趟比较1 第五趟比较1次,排出 3 5 6 7 8 最后还剩下1个数0 不需再比较,得到排序结果: 最后还剩下1个数0,不需再比较,得到排序结果: 035678 15

2010-9-25

冒泡法排序 (续)

从上述过程可以看到: 个数要比较n 从上述过程可以看到:n个数要比较n-1趟,而 在第j趟比较中,要进行n 次两两比较。 在第j趟比较中,要进行n-j次两两比较。 for (i=0; i<N; i++) 输入a[i] 输入 for (j=1;j<N; j++) for (i=0; i<N-j; i++) a[i]>a[i+1] T a[i]与a[i+1]交换 与 交换 输出a[0] ̄a[N-1] 输出

冒泡法排序

16

2010-9-25

17

#define N 6 main( ) { int a[N]; 程序运行情况如下: 程序运行情况如下: 3 7 5 6 8 0 int i,j,t; 0 3 5 6 7 8 for (i=0; i<N; i++) scanf("%d",&a[i]); for (j=1; j<=N-1; j++) /*控制比较的趟数 */ j<=N控制比较的趟数 for (i=0; i<N-j; i++) /*两两比较的次数 */ i<N两两比较的次数 if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; } printf("The sorted numbers: \n"); …… }

2010-9-25

【例6.5】选择法排序(从小到大)。 6.5】选择法排序(从小到大)。

以6个数:3、7、5、6、8、0为例。 个数: 为例。

思路: 思路: 第一趟: 第一个数依次和后面的数比较 依次和后面的数比较, 第一趟:将第一个数依次和后面的数比较,如 果后面的某数小于第一个数 则两个数交换, 第一个数, 果后面的某数小于第一个数,则两个数交换,比较 结束后,第一个数则是最小的数 则是最小的数。 结束后,第一个数则是最小的数。 第二趟: 第二个数依次和后面的数比较, 第二趟:将第二个数依次和后面的数比较,如 依次和后面的数比较 果后面的某数小于第二个数 则两个数交换, 第二个数, 果后面的某数小于第二个数,则两个数交换,比较 结束后,第二个数则是次小的数 则是次小的数; 结束后,第二个数则是次小的数;…… 。

18

2010-9-25

【例6.5】选择法排序(续) 6.5】选择法排序(

for (i=0; i<N; i++) 输入a[i] for (j=0; j<N-1; j++) for (i=j+1; i<N; i++) a[j]>a[i] T F a[j]与a[i]交换 输出a[0] ̄a[N-1] 图6.3 选择法排序

19

2010-9-25

#define N 5 main( ) { int a[N]; 程序运行情况如下: int i,j,t; 96 78 65 86 40 for (i=0; i<N; i++) The sorted numbers: scanf("%d",&a[i]); 40 65 78 86 96 printf("\ printf("\n"); for (j=0; j<N-1; j++) /*确定基准位置 */ 确定基准位置 for(i=j+1; i<N; i++) if (a[j]>a[i]) { t=a[j];a[j]=a[i];a[i]=t; } printf("The sorted numbers: \n"); … }

20

2010-9-25

6.2 二维数组

6.2.1 二维数组的定义 二维数组的定义

21

数组名[常量表达式1][常量表达式2]; ][常量表达式 数据类型 数组名[常量表达式 ][常量表达式 ];

例如: 例如: float x[2][3];

X[0][0] X[0][1] X[0][2] X[1][0] X[1][1] X[1][2] int a[3,4],b(3,4),c[ ][ ],d(3)(4); a[3,4],b(3,4),c[ ],d(3)(4);

2010-9-25

二维数组元素在内存中 排列顺序: 二维数组元素在内存中的排列顺序:按行存放 元素在内存中的 地址

2000H 2004H 2008H 200cH 2010H 2014H

22

数组元素

x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2]

2010-9-25

二维数组可看作是一种特殊的一维数组

23

例如,可以把x数组看作是包含二个元素的一维数组, 例如,可以把x数组看作是包含二个元素的一维数组, 每个元素又是一个含有三个元素一维数组。 每个元素又是一个含有三个元素一维数组。 x[0]x[0] x[0][0],x[0][1],x[0][2] x[0]是数组名,是元素x[0][0]的地址 是数组名,是元素 是数组名 的地址 x[1]x[1] x[1][0],x[1][1],x[1][2] x[1]是数组名, 是元素 是数组名, 是元素x[1][0]的地址 是数组名 的地址

2010-9-25

6.2.2 二维数组元素的引用

数组元素的表示形式 :

数组名[行下标表达式][列下标表达式] 数组名[行下标表达式][列下标表达式] ][列下标表达式 例:int a[3][4]; a[0][0]=3; a[0][1]=a[0][0]+10; a[3][4]=3; /* 下标越界 */

24

a[1,2]=1; /* 应写成 a[1][2]=1; */ ;

2010-9-25

6.2.3 二维数组的初始化

1.按行赋初值 例:int a[2][3]={{1,2,3},{4,5,6}}; 初始化后结果: 初始化后结果: 1 2 3 4 5 6 2.按数组元素在内存中排列的顺序对各元素赋初值 例:int a[2][3]={1,2,3,4,5,6}; 3.给部分元素赋初值 例:int a[2][3]={{1},{4}}; 初始化后结果: 初始化后结果: 1 0 0 4 0 0

25

2010-9-25

6.2.3 二维数组的初始化(续) 二维数组的初始化(

4.数组初始化时,行长度可省,列长度不能省 数组初始化时,行长度可省, 例如: a[][3]={1,2,3,4,5,6,7 ,7}; 例如:int a[][3]={1,2,3,4,5,6,7}; int b[][4]={{1},{4,5}}; 初始化结果: 初始化结果: a 结果: 结果: a[0]: 1 2 3 a[1]: 4 5 6 a[2]: 7 0 0 b 结果: 结果: b[0]: 1 0 0 0 b[1]: 4 5 0 0

26

2010-9-25

6.2.3 二维数组的初始化(续) 二维数组的初始化(

下面对二维数组的定义都是错误的: 下面对二维数组的定义都是错误的: int a[ ][ ],b[ ][2],c[3][ ]; float x[3][ ]={1.0,2.0,3.0,4.0,5.0,6.0}; int m[2][4]={1,2,3,4,5,6,7,8,9};

/* 编译出错,初值个数多于数组元素的个数 */ 编译出错,

27

2010-9-25

6.2.4 二维数组应用举例

28

【例6.6】给一个4行3列的二维数组输入/出数据。 6.6】给一个4 列的二维数组输入/出数据。 main( ) { int a[4][3],i,j,k; 程序运行情况如下: 程序运行情况如下: for (i=0; i<4; i++) 1 2 3 for (j=0; j<3; j++) 4 5 6 scanf("%d",&a[i][j]); 7 8 9 10 11 12 for (i=0; i<4; i++) 1 2 3 { printf("\n"); 4 5 6 for (j=0; j<3; j++) 7 8 9 printf("%d\t ",a[i][j]); 10 11 12 } printf("\n"); } 2010-9-25

6.2.4 二维数组应用举例(续) 二维数组应用举例(

【例6.7】有一个N×M矩阵,编程序求出其中绝对 6.7】有一个N 矩阵, 值最大的那个元素的值及其所在的行、列位置。 值最大的那个元素的值及其所在的行、列位置。 max=|a[0][0]|,row=0,colum=0 for (i=0; i<N; i++) for (j=0; j<M; j++) |a[i][j]|>max T F max=|a[i][j]| row=i colum=j 输出绝对值最大的元素及行列下标 输出绝对值最大的元素及行列下标

图6.4 查找最大元素

29

2010-9-25

#include "math.h" #define N 4 #define M 5 main( ) { int i,j,row,colum,max,a[N][M];

… … /* 输入数据 */

30

max=a[0][0]; row=colum=0; for (i=0; i<N; i++) for (j=0; j<M; j++) if (abs(a[i][j])>max) { max=abs(a[i][j]); row=i; colum=j; }

… … /* 输出数据 */

程序运行情况如下: 程序运行情况如下: 34 56 12 67 23 12 67 43 98 54 65 45 66 16 24 37 83 25 64 19 max=98,row=1,colum=3

2010-9-25

6.3 字符数组与字符串

6.3.1 基本概念

字符数组: 字符数组: 可以存放若干个字符 也可以存放字符串 字符, 字符串。 可以存放若干个字符,也可以存放字符串。

31

字符串: 字符串: 字符串的末尾必须有’ 0’字符 它的ASCII码值为 字符, 码值为0 字符串的末尾必须有’\0’字符,它的ASCII码值为0。 C 是字符 串 不是字符串

2010-9-25

h C

i h

n i

a n

\0 a

6.3.2 字符数组的定义

例如: 例如: char s[10]; s数组是一维字符数组,它可以存放10个字符或 数组是一维字符数组,它可以存放10个字符或 一个长度不大于9的字符串。 一个长度不大于9的字符串。 再例如: 再例如: char a[3][5]; a数组是一个二维的字符数组,可以存放15个字 数组是一个二维的字符数组,可以存放15个字 符或3个长度不大于4的字符串。 符或3个长度不大于4的字符串。

32

注意:字符串只能存放在字符数组中。 注意:字符串只能存放在字符数组中。 2010-9-25

6.3.3 字符数组的初始化

1.用字符常量赋初值 例如: 例如:char c[5]={'C','h', 'i', 'n', 'a' }; C h i n a 不是字符串

33

再例如: 再例如: char c[6]={'C','h', 'i', 'n', 'a' , '\0'}; '\ C h i n a \0

是字符串

2010-9-25

6.3.3 字符数组的初始化(续) 字符数组的初始化(

34

2.用字符串常量赋初值 例如: 例如: char str[10]= {"a string"}; 或char str[10]= "a string"; a s t r i n g \0 \0 再例如: 再例如: char a[3][10]={"basic","pascal","c"}; b p c a a \0 s s \0 i c \0 c a \0 \0 l \0 \0 \0 \0 \0 \0 \0 是字符串吗? 是字符串吗?

\0 \0 \0

\0 \0 \0

2010-9-25

6.3.3 字符数组的初始化(续) 字符数组的初始化(

3.初始化时长度的省略 例如: 例如:char s1[ ]= "Good morning!"; G o o d m o r n i n g !

b[0]

35

\0

b[13]

例如: 例如:char s2[ ]={ 's', 't', 'r', 'i', 'n', 'g'}; s t r i n g 例如: 例如:char s3[7]={ 's', 't', 'r', 'i', 'n', 'g'}; s t r i n g \0

思考: 思考:哪个数组存放的是字符串

2010-9-25

6.3.4 字符数组的引用

1.对字符数组元素的引用 可以为数组元素赋值,也可以输入/输出元 可以为数组元素赋值,也可以输入/输出元 数组元素赋值 素的值。 素的值。 【例6.8】对字符数组 赋 '0'~'9',对字符 】对字符数组c1赋 ~ , 数组c2赋 数组 赋 'A'~'Z',然后输出 和c2数组中 ~ ,然后输出c1和 数组中 的数据。 的数据。

36

2010-9-25

程序如下: 程序如下:

main( ) { char c1[10],c2[26]; int i; for (i=0; i<10; i++) c1[i]=i+48; for (i=0; i<26; i++) c2[i]=i+'A'; for (i=0; i<10; i++) printf("%c ",c1[i]); printf("\n"); for (i=0; i<26; i++) printf("%c ",c2[i]); printf("\n"); } 37

2010-9-25

2.对字符数组的整体引用

⑴ 输出字符串

例如: 例如: char c[ ]= "China"; printf("%s",c); ("%s",c 输出结果为: 输出结果为: China

38

C是数组首地址 是数组首地址

再例如: 再例如: char c[ ]="pascal\0basic"; ]="pascal\ printf("%s",c); printf("%s",c); 输出结果为: 输出结果为: 输出时遇 '\0' 为止 pascal

2010-9-25

2.对字符数组的整体引用(续) 对字符数组的整体引用(

39

⑵ 输入字符串 例如: 例如: b e i j i n g \0 char c[10]; scanf("%s",c); scanf("%s",c); 输入:不可以为数组整体赋值,例如: 输入:不可以为数组整体赋值,例如: 注意: 注意 beijing char c[10]; c="beijing" ; c="beijing" 因为c是数组首地址,是常量! 因为c是数组首地址,是常量! 再例如: 再例如: char str1[10],str2[10],str3[10]; scanf( "%s%s%s",str1,str2,str3); 输入: 输入: 三个字符串用空格隔开, 三个字符串用空格隔开,分别赋 pascal basic c str1、str2、str3三个数组 三个数组。 给str1、str2、str3三个数组。

2010-9-25

6.3.5 字符串处理函数

40

说明: 说明: 程序中如果调用下面介绍的8个字符串处理函数, ① 程序中如果调用下面介绍的8个字符串处理函数, 在程序的开始应该写: 在程序的开始应该写: #include "stdio.h" 或 #include "string.h" 预处理命令,但在Turbo C中可以省略 中可以省略。 预处理命令,但在Turbo C中可以省略。 在字符串处理函数中, ② 在字符串处理函数中,凡是用数组名或字符串首 地址作参数的地方,都可以用指针变量作参数。 地址作参数的地方,都可以用指针变量作参数。 指针变量的概念在第8章介绍。 指针变量的概念在第8章介绍。

2010-9-25

1.字符串输出函数puts( ) .字符串输出函数

41

调用格式: 调用格式:puts(str) 功能:输出一个字符串,输出后自动换行。 功能:输出一个字符串,输出后自动换行。 说明:str可以是字符数组名或字符串常量 可以是字符数组名或字符串常量。 说明:str可以是字符数组名或字符串常量。 例如:

char str1[ ]= "China"; char str2[ ]= "Beijing"; puts(str1); puts(str2); 输出结果: 输出结果: China Beijing

2010-9-25

2.字符串输入函数gets( ) 字符串输入函数gets(

42

调用格式:gets(str) 从键盘读入一个字符串存入str数组中 数组中, 功能:从键盘读入一个字符串存入 数组中,并且

得到一个函数值,该函数值是 数组的首地址 数组的首地址。 得到一个函数值,该函数值是str数组的首地址。

说明:str是数组名。 str是数组名 是数组名。 例如:

main( ) { char c1[20],c2[20]; gets(c1); gets(c2); puts(c1); puts(c2);

 } 程序运行情况如下: 程序运行情况如下: How are you? Fine thank you. How are you? Fine thank you.

2010-9-25

3.字符串连接函数 strcat( )

调用格式:strcat(str1,str2) 调用格式: 功能: str2中的字符串连接到str1字符串的后 中的字符串连接到str1 功能:把str2中的字符串连接到str1字符串的后 例如: 例如:

char str1[21]="beijing and "; char str2[ ]="shanghai"; printf("%s",strcat(str1,str2)); 输出结果: 输出结果: beijing and shanghai

b e i j i n g a n d

43

面,结果放在str1数组中,函数值是str1的值。 结果放在str1数组中,函数值是str1的值。 str1数组中 str1的值

必须 足够大

s h a n g h a i \0

2010-9-25

4.字符串复制函数 strcpy( )

调用格式:strcpy(str1,str2) 调用格式: 功能: str2中的字符串复制到str1数组中 中的字符串复制到str1数组中。 功能:将str2中的字符串复制到str1数组中。 例如: 例如:

char s1[10],s2[ ]= "Beijing"; strcpy(s1,s2); 或:strcpy(s1,"Beijing");

s1的结果 的结果

44

s1必须 足够大 g \0

思考:这样赋值 s1="Beijing" ;或 s1=s2;可以吗?为什么?

2010-9-25

5.字符串比较函数 strcmp( )

调用格式:strcmp(str1,str2) 调用格式:

str1 str2 str1 str2 str1 str2

45

a a a a a A

b b b b b b

c c c c c c

d d \0 d d d

e e

\0

strcmp(str1,str2)==0

\0

strcmp(str1,str2)<0

e \0 e

\0

strcmp(str1,str2)>0

\0

2010-9-25

例如:比较两个字符串的大小。 例如:比较两个字符串的大小。

main( ) { char s1[ ]= "aBC",s2[ ]= "abc"; if (strcmp(s1,s2)==0) printf("s1=s2"); else if (strcmp(s1,s2)>0) printf("s1>s2"); else printf("s112)?month[0]:month[m]); } 程序运行情况如下: 程序运行情况如下: Input month:10 month:10 10: October

2010-9-25

6.3.6 字符数组应用举例(续) 字符数组应用举例(

【例6.11】将N个国家名按字母顺序排序后输出。 6.11】 个国家名按字母顺序排序后输出。

54

思路:从键盘输入N 思路:从键盘输入N个国家名称存放到一个二维

字符数组中,然后用选择法对这N个字符串排序。 字符数组中,然后用选择法对这N个字符串排序。 选择法对这 排序 程序如下: #define N 5 #define M 10 #include "stdio.h" main( )

{char s[N][M],str[M]; int i,j;

2010-9-25

6.3.6 字符数组应用举例(续) 字符数组应用举例(

for(i=0;i<N;i++) gets(s[i]); for(i=0;i<Nfor(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if(strcmp(s[i],s[j])>0) { strcpy(str,s[i]); strcpy(s[i],s[j]); strcpy(s[j],str); } for(i=0;i<N;i++) puts(s[i]); }

55

选择法排序

2010-9-25

56

第六章 结束

2010-9-25

相关主题
相关文档 最新文档