《第6章_数组课件.ppt》由会员分享,可在线阅读,更多相关《第6章_数组课件.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章_数组ppt课件(全)第第6章章 数数 组组第6章_数组ppt课件(全)第第6章章 数数 组组6.1 一维数组一维数组6.2 二维数组二维数组6.3 字符数组字符数组第6章_数组ppt课件(全) 6.1 一维数组一维数组int a,b;int c10;则则 c0,c1,c9都是变量。都是变量。6.1.1 一维数组的定义一维数组的定义 类型标识符类型标识符 数组名数组名元素个数元素个数;例如:例如: char str20;数组名为数组名为 str,有,有20个元素个元素: str0,strl,str2,.,str19第6章_数组ppt课件(全) 6.1.2 一维数组的存储形式一维数组的存储
2、形式 对于对于 int a10; 编译系统为数组编译系统为数组a分配分配10*sizeof(int) 个字节个字节的存储区域。的存储区域。a0 a1 a2 a3 a4 a5 a6 a7 a8 a9aa+1 a+2 a+3 a+4 a+5 a+6 a+7 a+8 a+9数组名表示数组的首数组名表示数组的首地址地址a+i表示表示&ai第6章_数组ppt课件(全)6.1.3 一维数组的初始化一维数组的初始化 第6章_数组ppt课件(全)6.1.4 一维数组的引用一维数组的引用数组名数组名下标下标下标可以是整型表达式。下标可以是整型表达式。例如例如: int a10; a0=5; a1=2*a3/4;
3、 a5=a3%2+a6-6; 第6章_数组ppt课件(全)6.1.5 一维数组应用举例一维数组应用举例【例【例6.1】用选择排序法对】用选择排序法对 n 个数从小到大排序。个数从小到大排序。 分析:分析:设设 n=5 a0 a1 a2 a3 a4 原序列:原序列: 8 6 3 1 2 i=0, k=3第第1遍选择:遍选择: 1 6 3 8 2 i=1, k=4第第2遍选择:遍选择: 1 2 3 8 6 i=2, k=2第第3遍选择:遍选择: 1 2 3 8 6 i=3, k=4第第4遍选择:遍选择: 1 2 3 6 8 第6章_数组ppt课件(全)#include #define N 8voi
4、d main() float aN,t; int i,j,k;for(i=0;iN;i+) scanf(%f,&ai); for(i=0;iN-1;i+) k=i; for(j=i+1;jN;j+) if(ajak) k=j; t=ak; ak=ai; ai=t; for(i=0;iN;i+) printf(%.2f ,ai);第6章_数组ppt课件(全)【例【例6.2】用冒泡排序法对】用冒泡排序法对n个数从小到大排序。个数从小到大排序。 对对5个数,从小到大排序:个数,从小到大排序: N=5第一遍选择:第一遍选择: 8 6 3 1 2第一次第一次68312第二次第二次63812第三次第三次6
5、3182第四次第四次63128结果结果第6章_数组ppt课件(全) 6 3 1 1 3 1 2 2 1 2 3 3 2 6 6 6 8 8 8 8 第一遍第一遍 第二遍第二遍 第三遍第三遍 第四遍第四遍第6章_数组ppt课件(全)#include #define N 8void main() float aN ,t; int i,j,k; printf(input %d numbers:n,N); for(i=0;iN;i+) scanf(%f,&ai); for(i=0;iN-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1 ; aj+1=t; printf(the so
6、rted numbers:n); for(i=0;iN;i+) printf(%.2f ,ai);第6章_数组ppt课件(全)6.2 二维数组二维数组6.2.1 二维数组的定义二维数组的定义 类型标识符类型标识符 数组名数组名常量表达式常量表达式常量表达式常量表达式;例如:例如: float a34;定义定义a为为3行行4列的数组,共有列的数组,共有12个元素,即:个元素,即:a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23第6章_数组ppt课件(全)6.2.2 二维数组的存储形式二维数组的存储形式二维数组在内存中二维数组在内存中按行存放按行存放。 i
7、nt a32;a00 a01a10 a11a20 a21a01a10a11a20a21a00第6章_数组ppt课件(全) (1)全部元素赋初值全部元素赋初值 int a34= 1,2,3,4, 5,6,7,8, 9,10,11,12 ; int a34= l,2,3,4,5,6,7,8,9,10, 11,12;(2) 部分元素赋初值。部分元素赋初值。 int a34=l,5,9; int a34=1,5,9,4;(3)一维的长度可不指定。一维的长度可不指定。 int a 41,2,3,4,5,6,7,8,9,10,11,12;6.2.3 二维数组的初始化二维数组的初始化第6章_数组ppt课件(
8、全)6.2.4 二维数组的引用二维数组的引用数组名数组名下标下标下标下标如:如:int x23;x00=3;x12=x00+5;x12 +;第6章_数组ppt课件(全) 6.2.5 二维数组应用举例二维数组应用举例【例【例6.4】 输入一个输入一个44的整数矩阵,分别求的整数矩阵,分别求两对角线上元素之和。两对角线上元素之和。m00 m01 m02 m03m10 m11 m12 m13m20 m21 m22 m23m30 m31 m32 m33分析:分析:当当 i=j 时,时, mij 在主对角线上在主对角线上 当当 i+j=3 时,时,mij 在次对角线上在次对角线上第6章_数组ppt课件(
9、全)#define N 4 #includevoid main()int mNN; int i, j, r1=0, r2=0; for( i=0;iN;i+) printf(one line:); for(j=0;jj。第6章_数组ppt课件(全)#include #define N 4void main() int aNN, temp; int i,j; for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&aij); for(i=0;iN;i+) for(j=0;ji;j+) temp=aij;aij=aji;aji=temp; for(i=0;iN;i+) fo
10、r(j=0;jN;j+) printf(%8d,aij); printf(n); 第6章_数组ppt课件(全)【例【例6.6】有一个】有一个34的矩阵,要求编程序求出其中值的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。最大的那个元素的值,以及其所在的行号和列号。分析:分析: int a34,max, row,colum,i,j;对数组对数组a输入数据;输入数据; max=a00; row=0; colum=0; 对所有对所有i,j,如果,如果maxaij, 则则 max=aij; row=i; colum=j;第6章_数组ppt课件(全)main() int i,j,
11、row,colum,max; 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,colum=%dn, max,row+1,colum+1); 第6章_数组ppt课件(全) 6.3 字符数组字符数组 6.3.1 字符数组的定义字符数组的定义 char c5; c0= a; c1= ; c2= b; c3= o; c4= y; 在内存中的状态如下:在内存中的状态如下:a boycc+1c+2c+3c+4
12、第6章_数组ppt课件(全)char c7I, , a, m;在内存中的状态如下:在内存中的状态如下:I am000第6章_数组ppt课件(全)6.3.2 字符数组的初始化字符数组的初始化例如例如 char c = “a boy”; char c =“a boy”; char c =a, , b,o,y,0;三者等价。三者等价。数组数组c在内存中的状态:在内存中的状态: a boy0第6章_数组ppt课件(全)注意:注意:数组名是常量。数组名是常量。如如 char a10; a=“abcde”;是错的。是错的。 但但 char a10=“abcde”;是对的。是对的。6.3.3 字符数组的输入
13、字符数组的输入/输出输出1. 逐个字符的输入、输出逐个字符的输入、输出函数函数 getchar和和putchar,函数函数scanf和和printf的的%c。第6章_数组ppt课件(全)【例【例6.7】输入一行字符,将其中的小写字母转输入一行字符,将其中的小写字母转换成大写字母,其余不变。如输入换成大写字母,其余不变。如输入“ab”#include void main() char c81; int i; for( i=0; (ci=getchar() !=n; i+ ); ci=0; for(i=0;ci!=0;i+) if ( ci=a&ci=z ) ci-=32; printf(%c,c
14、i); ab 0第6章_数组ppt课件(全)2. 整个字符串的输入整个字符串的输入/输出输出将例将例6.7修改如下:修改如下:#include void main() char c81; int i; scanf(%s,c); for(i=0;ci!=0;i+) if(ci=a&ci=z) ci-=32; printf(%s,c); 遇到空格、遇到空格、Tab符、回车符终符、回车符终止,并写入止,并写入 0第6章_数组ppt课件(全)5.3.4 常用字符串处理函数常用字符串处理函数1字符串输出函数字符串输出函数puts函数原型:函数原型:int puts (char *str);使用方法:使用
15、方法:puts(str);例如:例如:char s =” BeijingnChina”;puts(s);输出:输出:BeijingChina第6章_数组ppt课件(全)2. 字符串输入函数字符串输入函数gets函数原型:函数原型: char *gets (char *str);使用方法:使用方法:gets(str);例如:例如:char str81;gets(str);从键盘输入:从键盘输入:Computer Science gets函数和函数和puts函数的头文件为函数的头文件为stdio.h。第6章_数组ppt课件(全)3字符串连接函数字符串连接函数strcat函数原型:函数原型: cha
16、r * strcat (char *str1, char *str2);使用方法:使用方法:strcat(str1,str2);例如:例如:char str115=”Beijing ”; char str2 =”China”;printf(“%s”, strcat(str1,str2);输出:输出:Beijing China第6章_数组ppt课件(全)4字符串拷贝函数字符串拷贝函数strcpy函数原型:函数原型: char * strcpy (char *str1, char *str2);使用方法:使用方法: strcpy(str1,str2);例如:例如: char str110=”012
17、345678”, str2 =”China”; strcpy(str1,str2); 0 1 2 3 4 5 6 7 8 0C h in a0 6 7 8 0第6章_数组ppt课件(全) 5字符串比较函数字符串比较函数strcmp函数原型:函数原型:int strcmp (char *str1, char *str2);使用方法:使用方法:strcmp(str1,str2);例如:例如:strcmp(“abc”,”abc”)的返回值为的返回值为0(即(即0-0的值);的值);strcmp(“abc”,”abcd”)的返回值为的返回值为-100(即(即0-d的值);的值);strcmp(“abc
18、”,”aBef”)的返回值为的返回值为32(即(即b-B的值)。的值)。第6章_数组ppt课件(全)6求字符串长度函数求字符串长度函数strlen函数原型:函数原型:int strlen (char *str);使用方法:使用方法:strlen(str);例如:例如:char str10=”China”;printf(“%d”,strlen(str);输出结果为输出结果为5。第6章_数组ppt课件(全)6.3.5 二维字符数组二维字符数组char str310=“China”,”Holland”,”America”;str0 China00000str1 Holland000str2 Amer
19、ica000第6章_数组ppt课件(全)【例【例6.8】有三个字符串,】有三个字符串, 要求找出最大者。要求找出最大者。#include #include void main() char string20, str320; int i; for(i=0;i0)strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0) strcpy(string,str2); printf(n the largest string is: n%sn,string);str0 China 0 0 0 0 0str1 H olla
20、nd 0 0 0第6章_数组ppt课件(全)6.3.6字符串应用举例字符串应用举例【例【例6.9】将字符数组中的字符串按逆序存放。】将字符数组中的字符串按逆序存放。abc0cba0第6章_数组ppt课件(全)#include #include void main() char s81,t; int i,j; gets(s); for( j=0; sj!=0; j+); for( i=0,j-; ij; i+,j- ) t=si;si=sj;sj=t; printf(the reverse string:%sn,s); abcde0i=0 i=1j第6章_数组ppt课件(全)#include #include void main() char s81,ch; int i; printf(input string: ); gets(s); printf(delete character: ); ch=getchar(); for(i=0;si!=0; ) if(si=ch) strcpy(s+i,s+i+1); else i+; puts(s);【例【例6.10】从输入的字符串中删除一指定字符。】从输入的字符串中删除一指定字符。ABCDC0CABDC00ABD000