C语言经典指针与数组课件

上传人:我*** 文档编号:144986034 上传时间:2020-09-15 格式:PPT 页数:78 大小:864.50KB
返回 下载 相关 举报
C语言经典指针与数组课件_第1页
第1页 / 共78页
C语言经典指针与数组课件_第2页
第2页 / 共78页
C语言经典指针与数组课件_第3页
第3页 / 共78页
C语言经典指针与数组课件_第4页
第4页 / 共78页
C语言经典指针与数组课件_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《C语言经典指针与数组课件》由会员分享,可在线阅读,更多相关《C语言经典指针与数组课件(78页珍藏版)》请在金锄头文库上搜索。

1、数组,课程目标,掌握数组的使用 了解多维数组的使用 掌握指针的概念和使用 了解多级指针的概念,www.embedu.org,数组,数组 构造数据类型之一 数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。 数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的。 在科学计算中,许多重要的应用都是基于数组的。,www.embedu.org,一维数组,定义 所谓一维数组是指只有一个下标的数组。它在计算机的内存中是连续存储的。 C语言中,一维数组的说明一般形式如下: ;,www.embedu.org,例 int a6;,编译时分配连续内存 内存

2、字节数=数组维数* sizeof(元素数据类型),数组名表示内存首地址, 是地址常量,例 int data5; data5=10; /C语言对数组不作越界检查,使用时要注意,例 int i=15; int datai; (不能用变量定义数组维数),一维数组,www.embedu.org,一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名下标 其中:下标可以是常量或整型表达式,例 int a10; printf(“%d”,a); () 必须 for(j=0;j10;j+) printf(“%dt”,aj); (),www.embedu.

3、org,一维数组的初始化 初始化方式,在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值),int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,www.embedu.org,如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),static int a5; 等价于:a0=0; a1=0; a2=0; a3=0; a4=0;,int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组维数,一维数组的初始化,www.embedu.org,程序

4、举例,例: 计算Fibonacci数列前10项并逆序给出结果。 int main() int i, data10; data0= data1=1; for(i=2;i=0;i-) printf(“%dn”,datai); 运行结果: 55 34 21 13 8 5 3 2 1 1,www.embedu.org,冒泡法排序,排序过程: (1)比较第一个数与第二个数,若为逆序a0a1,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置

5、 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,www.embedu.org,int main() int a11,i,j,t; printf(Input 10 numbers:n); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(The sorted numbers:n); for(i=1;i11;i+) printf(%d ,ai); ,冒泡法排序,www.embedu.org,简单选择法排序,排序过程: (1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再

6、通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束,www.embedu.org,简单选择法排序,int main() int a11,i,j,k,x; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d,if(i!=k) x=ai; ai=ak; ak=x; printf(The sortednumbers:n); for(i=1;i11;i+) printf(%d ,ai); ,www.embedu.org,二维数组及多维数组 二维数组的定义

7、定义方式: 数据类型数组名常量表达式常量表达式;,例 int a34; float b25; int c234; int a3,4; (),www.embedu.org,数组元素的存放顺序 原因:内存是一维的 二维数组:按行序优先,www.embedu.org,二维数组理解,每个元素ai由包含4个元素 的一维数组组成,二维数组a是由3个元素组成,www.embedu.org,二维数组元素的引用 形式: 数组名下标下标 二维数组元素的初始化 分行初始化:,按元素排列顺序初始化,www.embedu.org,字符数组和字符串 字符数组是元素的数据类型为字符类型的数组,它既具有普通数组的一般性质,又

8、具有某些特殊性质。 定义,字符数组的初始化 逐个字符赋值 用字符串常量 字符数组的引用,例 char c10, ch34;,www.embedu.org,字符数组初始化,www.embedu.org,字符数组初始化,www.embedu.org,字符串 无字符串变量,用字符数组处理字符串 字符串结束标志:0,www.embedu.org,字符串的输入输出 逐个字符I/O: %c 整个字符串I/O: %s,例 用%c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, ,www.embedu.org,例 main( ) char a5=H,e,

9、l,l,o; printf(“%s”,a); ,例 main( ) char a =“Hello”; printf(“%s”,a); ,结果:Hello#-=*,结果:Hello,用“%s”输出时, 遇0结束,字符串的输出,www.embedu.org,main() char a=h,e,l,0,l,o,0; printf(%s,a); ,例,输出:hel,数组中有多个0时, 遇第一个结束,字符串的输出,www.embedu.org,main() int i; char a5; scanf(%s,a); for(i=0;i5;i+) printf(%d,ai); ,运行情况: (1)若输入 h

10、el , 正常 (2)若输入 hell , 正常 (3)若输入 hello , 用%s 输出时,会出现问题,输入字符串长度数组维数,字符串的输出,www.embedu.org,运行情况: 输入:How are you?,#include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a); ,运行情况: 输入:How are you? 输出:a=How b=are c=you? 输入:How are you? 输出:a=How,scanf中

11、%s输入时,遇空格或回车结束,字符串的输出,www.embedu.org,例 : 若准备将字符串“This is a string.”记录下 来,错误的输入语句为: (A)scanf(“%20s”,s); (B)for(k=0;k17;k+) sk=getchar(); (C)while(c=getchar()!=n) sk+=c;,字符串的输入,www.embedu.org,示例程序,输入一个字符串,然后将其逆序输出。 int main() char instring50 = Please Input a String : , outstring50; int i=0, len=0; pri

12、ntf(“%sn”,instring) ; scanf(“%s”,instring); for(i=0; instringi != 0 ; i+) len+; for(i=0; i len; i+) outstringi=instringlen-i-1; outstringlen= 0 ; printf(“%sn”,outstring); 运行结果: Please Input a String :understand The reversed String is dnatsrednu,www.embedu.org,字符串连接函数strcat 格式:strcat(字符数组1,字符数组2) 功能:

13、把字符数组2连到字符数组1后面 返值:返回字符数组1的首地址 说明:字符数组1必须足够大 连接前,两串均以0结束;连接后,串1的0取消, 新串最后加0,字符串拷贝函数strcpy 格式:strcpy(字符数组1,字符串2) 功能:将字符串2,拷贝到字符数组1中去 返值:返回字符数组1的首地址 说明:字符数组1必须足够大 拷贝时0一同拷贝 不能使用赋值语句为一个字符数组赋值,例 char str120,str220; str1=“Hello!”; () str2=str1; (),字符串函数,www.embedu.org,例 strcpy与strcat举例,#include #include v

14、oid main() char destination25; char blank = , c= C+, turbo = Turbo; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); printf(%sn, destination); ,Turbo C+,字符串函数,www.embedu.org,字符串比较函数strcmp 格式:strcmp(字符串1,字符串2) 功能:比较两个字符串 比较规则:对两串从左向右逐个字符比较(ASCII码), 直到遇到不同字符或0为止 返值:返回int

15、型整数,a. 若字符串1 字符串2, 返回正整数 c. 若字符串1= 字符串2, 返回零 说明:字符串比较不能用“=”,必须用strcmp,字符串函数,www.embedu.org,字符串长度函数strlen 格式:strlen(字符数组) 功能:计算字符串长度 返值:返回字符串实际长度,不包括0在内,例 对于以下字符串,strlen(s)的值为: (1)char s10=A,0,B,C,0,D; (2)char s =“tv0willn”; (3)char s =“x69082n”;,答案:1 3 1,字符串函数,www.embedu.org,多维数组,具有两个或两个以上下标的数组称为多维数组。 其说明的一般形式如下: ; 多维数组与一维数组的说明相比只是增加了多个下标,其它特性基本与一维数组相同。 例如: int a23 ; /定义了一个二维整型数组a double b345; /定义了一个三维双精度实型数组b,www.embedu.org,注: 二维数组的初始化基本与一维数组类似,主要有以下几种方式: 降维给二维数组赋初值。每一组的初值都用大括号 括起来; 按线性存储形式给二维数组赋值; 可以省略左边下标范围的方式给二维数组赋初值。,多维数组,www.embedu.org,指针,指针 C程序设计中使用指针可以: 使程序简

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

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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