C语言数组第七章.ppt

上传人:s9****2 文档编号:570164937 上传时间:2024-08-02 格式:PPT 页数:34 大小:313KB
返回 下载 相关 举报
C语言数组第七章.ppt_第1页
第1页 / 共34页
C语言数组第七章.ppt_第2页
第2页 / 共34页
C语言数组第七章.ppt_第3页
第3页 / 共34页
C语言数组第七章.ppt_第4页
第4页 / 共34页
C语言数组第七章.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《C语言数组第七章.ppt》由会员分享,可在线阅读,更多相关《C语言数组第七章.ppt(34页珍藏版)》请在金锄头文库上搜索。

1、C C程序设计程序设计谭浩强谭浩强 著著清华大学出版社清华大学出版社 第七章第七章 数组数组1. 一维数组的定义和引用一维数组的定义和引用 2.2. 二维数组的定义和引用二维数组的定义和引用 3.3. 字符数组字符数组 C C程序设计程序设计 第七章第七章 数组数组7.1 一维数组的定义和引用一维数组的定义和引用 C C程序设计程序设计 第七章第七章 数组数组n 一维数组的定义n 一维数组元素的引用n 一维数组的初始化n 一维数组程序举例返回主菜单 C C程序设计程序设计 第七章第七章 数组数组7.2 二维数组的定义和引用二维数组的定义和引用 n 二维数组的定义n 二维数组的引用n 二维数组的

2、初始化n 二维数组程序举例返回主菜单7.3 字符数组字符数组 C C程序设计程序设计 第七章第七章 数组数组n 字符数组的定义n 字符数组的初始化n 字符数组的引用n 字符和字符串结束标志n 字符数组的输入输出n 字符串处理函数n 字符数组应用举例返回主菜单 C C程序设计程序设计 第七章第七章 数组数组7.1.1 一维数组的定义一维数组的定义 类型说明符类型说明符 数组名数组名 常量表达式常量表达式; 定义:任一种基本数据类型或构造数据类型 数据元素的个数 用户定义的数组标识符 例如:int a10; 说明整型数组a,有10个元素。 float b10; 说明实型数组b,有10个元素。 ch

3、ar ch20; 说明字符数组ch,有20个元素。 说明一维数组定义的几点说明1)数组的类型实际上是指数组元素的取值类型。)数组的类型实际上是指数组元素的取值类型。 2)数组名的书写规则应符合标识符的书写规定。)数组名的书写规则应符合标识符的书写规定。3)数组名不能与其它变量名相同。)数组名不能与其它变量名相同。例如:例如:main ( ) int a; float a10; 4)数组元素的)数组元素的 下标从下标从0开始。开始。a5的的5个元素分别为个元素分别为a0, a1, a2, a3, a4。 5)不能在方括号中用变量来表示元素的个数,)不能在方括号中用变量来表示元素的个数, 但是可以

4、是符号常数或常量表达式。但是可以是符号常数或常量表达式。 int a3+2 ; int n=5; int an; 6)允许在同一个类型说明中,说明多个数组和多个变量。)允许在同一个类型说明中,说明多个数组和多个变量。例如:例如:int a,b,c,d,k110,k220; 7.1.2 一维数组元素的引用一维数组元素的引用 C C程序设计程序设计 第七章第七章 数组数组数组元素的一般形式为 数组名数组名下标下标 下标可以为整型常量或整型表达式 ,例如 a0=a5+a7-a2*3例7.1例例7.1 数组元素的引用数组元素的引用main() int i,a10; for(i=0;i=0;i-) pr

5、intf(%d ,ai);运行程序运行结果:9 8 7 6 5 4 3 2 1 0 C C程序设计程序设计 第七章第七章 数组数组 C C程序设计程序设计 第七章第七章 数组数组7.1.3 一维数组的初始化一维数组的初始化初始化赋值的一般形式为 类型说明符 数组名常量表达式=值,值,值; 几点规定:1)可以只给部分元素赋初值。2)只能给元素逐个赋值,不能给数组整体赋值。3)如给全部元素赋值,则在数组说明中可以不给出数组元素的个数。例如:int a10=0,1,2,3,4; 例如给十个元素全部赋1值 ,只能写为:int a10=1,1,1,1,1,1,1,1,1,1;而不能写为:int a10=

6、1;例如:int a5=1,2,3,4,5;可写为: int a=1,2,3,4,5; C C程序设计程序设计 第七章第七章 数组数组7.1.4 一维数组程序举例一维数组程序举例例7.3例7.2 例例7.2 用数组来处理求用数组来处理求Fibonacci数列问题数列问题main()int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0)printf(n); printf(%12d,fi);运行程序运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610987 1

7、597 2584 4181 6765 C C程序设计程序设计 第七章第七章 数组数组 例例7.3 用起泡法对用起泡法对10个数排序个数排序 main() int a11; int i,j,t; printf(input 10 numbers :n); for(i=1;i11;i+) scanf(%d,&ai); printf(n); for(j=1;j=9;j+) for(i=1;iai+1) t=ai;ai=i+1;ai+1=t; printf(the sorted numbers :n); for(i=1;i int a4=1,2,3,4,5,6,7,8,9,10,11,12;例如:例如:

8、int a33=1,2,3;是对每一行的第一列元素赋值,未赋值的元素是对每一行的第一列元素赋值,未赋值的元素取取0值。值。 赋值后各元素的值为:赋值后各元素的值为: 1 0 0 2 0 0 3 0 0 C C程序设计程序设计 第七章第七章 数组数组7.2.4 二维数组程序举例二维数组程序举例例7.4例7.5例例例例7.47.4 将一个二维数组行和列元素互换将一个二维数组行和列元素互换将一个二维数组行和列元素互换将一个二维数组行和列元素互换, , , ,存到另一个二维数组中。存到另一个二维数组中。存到另一个二维数组中。存到另一个二维数组中。 main() static int a23=1,2,3

9、,4,5,6; static int b32,i,j; printf(array a : n); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(“n”); printf(array b:n); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(“%5d”,bij); printf(n); 运行程序 C C程序设计程序设计 第七章第七章 数组数组运行结果: array a: 1 2 3 4 5 6 array b: 1 4 2 5 3 6例例例例7.57.5有一个有一个有一个有一个3*

10、43*43*43*4的矩阵的矩阵的矩阵的矩阵, , , ,求出其中值最大的那个元素的值求出其中值最大的那个元素的值求出其中值最大的那个元素的值求出其中值最大的那个元素的值, , , ,以及其所在的行号和列号以及其所在的行号和列号以及其所在的行号和列号以及其所在的行号和列号。 main()int i,j,row=0,colum=0,max;static int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i=2;i+) for(j=0;jmax) max=aij; row=i; colum=j; printf(max=%d,row=%d,col

11、lum=%n,max,row,colum); 运行程序 C C程序设计程序设计 第七章第七章 数组数组运行结果:max=10,row=2,colum=1 C C程序设计程序设计 第七章第七章 数组数组7.3.1 字符数组的定义字符数组的定义 类型说明符类型说明符 数组名数组名 常量表达式常量表达式; 定义:例如:char c10; =int c10; C C程序设计程序设计 第七章第七章 数组数组7.3.2 字符数组的初始化字符数组的初始化1)逐个字符赋给数组中各元素。逐个字符赋给数组中各元素。2)如果花括号中提供的初值个数大于数组长度如果花括号中提供的初值个数大于数组长度, ,则语法错误;如

12、果初值个数小于数组长度则语法错误;如果初值个数小于数组长度, ,只将这只将这些字符赋给数组中前面那些元素些字符赋给数组中前面那些元素, ,其余为其余为00。3)如果提供的初值个数与预定的数组长度相同如果提供的初值个数与预定的数组长度相同, ,在定义时可以省略各数组长度在定义时可以省略各数组长度, ,系统会自动根据初系统会自动根据初值个数确定数组长度。值个数确定数组长度。4)可以定义二维数组。)可以定义二维数组。例如:例如:char c10=I, , a, m, , h, a, p, p, y例如:例如:char c10=c, , p, r, o , g, r, a, m ;则则c0=c; c1

13、= ; c2=p; c3=r; c4=o; c5=g; c6=r; c7=a; c8=m; c9=0; char c=c, , p, r, o , g, r, a, mchar diamond55= , , *, , *, , *,*, , , *, , *, , *, , , *; C C程序设计程序设计 第七章第七章 数组数组7.3.3 字符数组的引用字符数组的引用例7.6例7.7例例7.6 输出一个字符串输出一个字符串。main() char c10=I, ,a,m,a,b,o,y;int i ;for(i=0;i10;i+)printf(%c,ci);printf(n);运行程序 C

14、C程序设计程序设计 第七章第七章 数组数组运行结果:I am a boy例例7.7 输出一个钻石图形输出一个钻石图形。 main() char diamond5=,*,*,*,*,*,*,*,*; int i,j; for(i=0;i5;i+) for(j=0;j char c=I, , a, m, , h, a, p, p, y, 0;用字符串常量使字符用字符串常量使字符数组初始化数组初始化 C C程序设计程序设计 第七章第七章 数组数组7.3.5 字符数组的输入输出字符数组的输入输出1)逐个字符输入输出逐个字符输入输出, ,用格式符用格式符% %c c输入或输出一个字符。输入或输出一个字符

15、。2)将整个字符串一次输入输出,用将整个字符串一次输入输出,用% %s s格式符。格式符。3)如果数组长度大于字符串实际长度,只输出到遇)如果数组长度大于字符串实际长度,只输出到遇0结束。结束。4)如果一个字符数组中包含一个以上)如果一个字符数组中包含一个以上0,则遇第,则遇第一个一个0时输出就结束。时输出就结束。例如例如: char c=“China”; printf(“%s”,c);例如:例如:char c10=“China”printf(“%s”,c只输出只输出“China”5个字符个字符例如:例如:char str13; scanf(“%s”,str);如输入以下如输入以下12个字符:

16、个字符:How are you? 则则str数组状态为数组状态为How0000000000字符串拷贝函数,将字符串字符串拷贝函数,将字符串2拷贝到字拷贝到字符数组符数组1中。中。 char str110,str2=“China”; strcpy(str1,str2); C C程序设计程序设计 第七章第七章 数组数组7.3.6 字符串处理函数字符串处理函数puts(字符数组字符数组)gets(字符数组字符数组)strcpy(字符数组字符数组1,字符串字符串2)例如:例如: char str=“Chinan Beijing”; puts(str); 输出结果为输出结果为China Beijing例

17、如:例如:gets(str)从键盘输入:从键盘输入:Computer 则将则将“Computer”送给字符数组送给字符数组str连接两个字符数组中的字符串连接两个字符数组中的字符串,把字符串把字符串2接到字接到字符串符串1的后面的后面,结果放在字符数组结果放在字符数组1中中,函数调用后函数调用后得到一个函数值得到一个函数值-字符数组字符数组1的地址的地址. char str130=“Peoples Republic of ”; char str2=“China”; printf(“%s”,strcat(str1,str2); 输出输出: Peoples Republic of China C

18、C程序设计程序设计 第七章第七章 数组数组7.3.6 字符串处理函数字符串处理函数strcat(字符数组字符数组1,字符数组字符数组2)字符串拷贝函数,将字符串字符串拷贝函数,将字符串2拷贝到字拷贝到字符数组符数组1中。中。 char str110,str2=“China”; strcpy(str1,str2);对两个字符串自左到右逐个字符比较对两个字符串自左到右逐个字符比较(按按ASCII码大小比较码大小比较),直到出现不同的字符或遇直到出现不同的字符或遇0为止为止 比较结果比较结果: 串串1=串串2 函数值为函数值为0 串串1串串2 函数值为整数函数值为整数 串串1串串2 函数值为负整数函

19、数值为负整数 if (str1=str2) printf(“yes”); if (strcmp(str1,str2)=0) printf(“yes”); C C程序设计程序设计 第七章第七章 数组数组7.3.6 字符串处理函数字符串处理函数strcpy(字符数组字符数组1,字符串字符串2)strcmp(字符串字符串1,字符串字符串2) C C程序设计程序设计 第七章第七章 数组数组7.3.6 字符串处理函数字符串处理函数strlen(字符数组字符数组)strlwr(字符串字符串)strupr(字符串字符串)测试字符串长度的函数。函数值为字符串中实际长度测试字符串长度的函数。函数值为字符串中实际

20、长度,不包不包括括0在内在内 char str10=“China”; printf(“%d”,strlen(str); 结果为结果为5将大写字母转换为小写字母将大写字母转换为小写字母将小写字母转换为大将小写字母转换为大写字母写字母 C C程序设计程序设计 第七章第七章 数组数组7.3.7 字符数组应用举例字符数组应用举例例7.8例7.9 C C程序设计程序设计 第七章第七章 数组数组例例7.8 输入一行字符输入一行字符, ,统计其中有多少个单词统计其中有多少个单词, ,单词之间用空格分隔开单词之间用空格分隔开。#include stdio.hmain() char string81; int

21、i,nu=0,word=0; char c; gets(string); for(i=0;(c=stringi!=0;i+) if(c=)word=0; else if(word=0) word=1; num+; printf(there are %d words in the line.n,num); 运行程序运行结果: I am a boy. There are 4 words in the line. C C程序设计程序设计 第七章第七章 数组数组 例例7.9 有三个字符串有三个字符串, ,要求找出其中最大者要求找出其中最大者。main() char steing20; char ste320; int i; for(i=0;i0) strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0) xtrcpy(string,str2); printf(n the largest string is :n%sn,string); 运行结果:CHINAHOLLANDAMERICAthe largest string is:HOLLAND 运行程序The end

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号