c语言电子教案7课件

上传人:文**** 文档编号:240603980 上传时间:2024-04-24 格式:PPTX 页数:39 大小:636.71KB
返回 下载 相关 举报
c语言电子教案7课件_第1页
第1页 / 共39页
c语言电子教案7课件_第2页
第2页 / 共39页
c语言电子教案7课件_第3页
第3页 / 共39页
点击查看更多>>
资源描述
UNIX C编程编程yyyy-M-1age *知识点知识点:&一维数组的定义和引用一维数组的定义和引用&二维数组的定义和引用二维数组的定义和引用&字符数组字符数组重点:重点:数组的组成和特点数组的组成和特点 一维数组和二维的定义、赋值一维数组和二维的定义、赋值 字符串与字符数组的关系字符串与字符数组的关系 数组在程序中的使用数组在程序中的使用难点:难点:s数组元素存储格式对程序设计的使用数组元素存储格式对程序设计的使用s字符串在数组中的组成以及字符串操作语句的使用字符串在数组中的组成以及字符串操作语句的使用第第7章章 数数 组组UNIX C编程编程yyyy-M-2age *char,int,float,double等在等在C语言中称为基本数据类型。语言中称为基本数据类型。由基本数据类型导出的各种数据类型,如由基本数据类型导出的各种数据类型,如数组数组、结构、联合等、结构、联合等称为构造数据类型。称为构造数据类型。什么是数组?什么是数组?数组是有序数据的集合。数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。用一个统一的数组名和下标来唯一地确定数组中的元素。通过访问同一数组名的不同下标来操作不同的变量。通过访问同一数组名的不同下标来操作不同的变量。数组在内存中一定是连续存储的。数组在内存中一定是连续存储的。第第7章章 数数 组组UNIX C编程编程yyyy-M-3age *7.1 一维数组的定义和引用一维数组的定义和引用 一维数组的定义一维数组的定义 定义方式:定义方式:类型类型说明符说明符 数组名数组名常量表达式常量表达式;例如:例如:int a10;它表示数组名为它表示数组名为a,此数组有,此数组有10个元素。个元素。说明说明 数组名定名规则和变量名相同,遵循标识符定名规则。数组名定名规则和变量名相同,遵循标识符定名规则。数组名后是用数组名后是用方括弧方括弧括起来的常量表达式,不能用圆括弧,下括起来的常量表达式,不能用圆括弧,下面用法不对:面用法不对:int a(10);常量表达式表示元素的个数,即数组长度。例如,在常量表达式表示元素的个数,即数组长度。例如,在a10中,中,表示表示a0 a9。注意不能使用数组元素。注意不能使用数组元素a10,C对数组不做越对数组不做越界检查。界检查。常量表达式中可以包括常量和符号常量,不能包含变量。例如:常量表达式中可以包括常量和符号常量,不能包含变量。例如:scanf(%d,&n);int an;UNIX C编程编程yyyy-M-4age *一维数组的存储方式一维数组的存储方式 数组在内存中是连续存储的,每个数组元素占有相同大小的数组在内存中是连续存储的,每个数组元素占有相同大小的空间。空间。数组占据的总的内存空间数组占据的总的内存空间=每个数组元素所占空间每个数组元素所占空间*数组元素个数数组元素个数 数组第一个元素的起始地址就是整个数组的首地址。数组第一个元素的起始地址就是整个数组的首地址。数组名表示数组的首地址,数组名是一个地址常量。数组名表示数组的首地址,数组名是一个地址常量。7.1 一维数组的定义和引用一维数组的定义和引用UNIX C编程编程yyyy-M-5age *例例 int a4;a0=10;a1=20;a2=30;a3=40;7.1 一维数组的定义和引用一维数组的定义和引用10203040a0起始地址起始地址为为1000a1起始地址起始地址为为1002a2起始地址起始地址为为1004a3起始地址起始地址为为1006 整个数组整个数组a占用的空间为占用的空间为2Bytes*4个个=8Bytes,地址,地址10001007。数组名数组名a为数组的为数组的首地址,即首地址,即1000UNIX C编程编程yyyy-M-6age *一维数组元素的引用一维数组元素的引用 数组必须先定义,然后使用。数组必须先定义,然后使用。C语言只能逐个引用数组元素,不能一次引用整个数组。语言只能逐个引用数组元素,不能一次引用整个数组。数组元素的表示形式为:数组元素的表示形式为:数组名数组名下标下标 下标可以是整型常量或整型表达式。下标可以是整型常量或整型表达式。例如例如:a0=a5+a7-a2*3 7.1 一维数组的定义和引用一维数组的定义和引用UNIX C编程编程yyyy-M-7age *main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);7.1 一维数组的定义和引用一维数组的定义和引用 9 8 7 6 5 4 3 2 1 0q 例例 数组元素的引用。数组元素的引用。UNIX C编程编程yyyy-M-8age *一维数组的初始化一维数组的初始化 数组可以在定义时赋初值,称为初始化数组可以在定义时赋初值,称为初始化 数组不初始化,其元素值为随机数数组不初始化,其元素值为随机数 对对static数组元素不初始化,系统会自动赋以数组元素不初始化,系统会自动赋以0值值 在定义数组时对数组元素赋以初值。在定义数组时对数组元素赋以初值。int a10=0,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋值。可以只给一部分元素赋值。int a10=0,1,2,3,4;其他元素为其他元素为0。在对全部数组元素赋初值时,可以不指定数组长度在对全部数组元素赋初值时,可以不指定数组长度 int a=1,2,3,4,5;元素个数为元素个数为5,即,即a5。若被定义的数组长度与提供初值的个数不相同,则数组若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。长度不能省略。int a10=1,2,3,4,5;7.1 一维数组的定义和引用一维数组的定义和引用UNIX C编程编程yyyy-M-9age *一维数组程序举例一维数组程序举例例例 用数组来处理求用数组来处理求fibonacci数列问题。数列问题。7.1 一维数组的定义和引用一维数组的定义和引用 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765main()int i,f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;ia1,则交则交换;然后比较第二个数与换;然后比较第二个数与第三个数;依次类推,直第三个数;依次类推,直至第至第n-1个数和第个数和第n个数比个数比较为止。第一趟冒泡排序,较为止。第一趟冒泡排序,结果最大的数被安置在最结果最大的数被安置在最后一个元素位置上。后一个元素位置上。q对前对前n-1个数进行第二趟冒个数进行第二趟冒泡排序,结果使次大的数泡排序,结果使次大的数被安置在第被安置在第n-1个元素位置。个元素位置。q重复上述过程,共经过重复上述过程,共经过n-1趟冒泡排趟冒泡排序后,序后,排序结束。排序结束。UNIX C编程编程yyyy-M-11age *7.1 一维数组的定义和引用一维数组的定义和引用思考?思考?如果在某趟排序后,这如果在某趟排序后,这10个数已经有序,如何结束排序,进行个数已经有序,如何结束排序,进行输出序列?输出序列?input 10 numbers:10 9 8 1 2 3 4 5 6 7j=4 the sorted numbers:1 2 3 4 5 6 7 8 9 10输入输入n个数给个数给a1到到anfor j=1 to n-1flag=1for i=1 to n-ja i a i+1 flag=0a i a i+1 假假真真flag假假真真结束结束for循环循环输出输出a1到到anUNIX C编程编程yyyy-M-12age *例例 用简单选择法对用简单选择法对10个数排序个数排序排序过程:排序过程:首先通过首先通过n-1次比较,从次比较,从n个数中找出最小的,个数中找出最小的,将它与第一将它与第一个数交换个数交换 第一趟选择排序,结果最小的数被安置在第一第一趟选择排序,结果最小的数被安置在第一个元素位置上个元素位置上 再通过再通过n-2次比较,从剩余的次比较,从剩余的n-1个数中找出次小的数,将个数中找出次小的数,将它与第二个数交换它与第二个数交换 第二趟选择排序第二趟选择排序 重复上述过程,共经过重复上述过程,共经过n-1趟排序后,排序结束趟排序后,排序结束7.1 一维数组的定义和引用一维数组的定义和引用UNIX C编程编程yyyy-M-13age *例例初始:初始:49 38 65 97 76 13 27 kji=11349一趟后:一趟后:13 38 65 97 76 49 27 i=22738二趟后:二趟后:13 27 65 97 76 49 38 三趟后三趟后:13 27 38 97 76 49 65 四趟后:四趟后:13 27 38 49 76 97 65 五趟后:五趟后:13 27 38 49 65 97 76 六趟后:六趟后:13 27 38 49 65 76 97 kkkkjjjjjjjjjj7.1 一维数组的定义和引用一维数组的定义和引用UNIX C编程编程yyyy-M-14age *7.1 一维数组的定义和引用一维数组的定义和引用输入输入n 个数给个数给a1 到到 anfor i=1 to n-1for j=i+1 to najak假假真真k=j输出输出a1 到到 ank=iaiaki!=k真真假假UNIX C编程编程yyyy-M-15age *二维数组的定义二维数组的定义二维数组定义的一般形式:二维数组定义的一般形式:类型说明符类型说明符 数组名数组名常量表达式常量表达式常量表达式常量表达式 例如:例如:int a23,b510;a为为23(2行行3列列)的数组,的数组,b为为510(5行行10列列)的数组。的数组。注意不能写成注意不能写成 int a2,3,b5,10;7.2 二维数组的定义和引用二维数组的定义和引用a00a01a02a10a11a12第第0行行第第1行行第第0列列第第1列列第第2列列UNIX C编程编程yyyy-M-16age *二维数组的存储方式二维数组的存储方式 数组在内存中是连续存储的。每个数组元素占有相同大小的数组在内存中是连续存储的。每个数组元素占有相同大小的空间。空间。数组占据的总的内存空间数组占据的总的内存空间=每个元素所占空间每个元素所占空间*下标下标1*下标下标2 数组第一个元素的起始地址就是整个数组的首地址。数组第一个元素的起始地址就是整个数组的首地址。数组名表示数组的首地址,数组名是一个地址常量。数组名表示数组的首地址,数组名是一个地址常量。数组元素按行优先顺序存储的,可以认为是由多个一维数组数组元素按行优先顺序存储的,可以认为是由多个一维数组组成,每个行是一个一维数组。组成,每个行是一个一维数组。7.2 二维数组的定义和引用二维数组的定义和引用UNIX C编程编程yyyy-M-17age *例例 int a23;7.2 二维数组的定义和引用二维数组的定义和引用起始地址起始地址1000a00a01a02a10a11a12第第0行行第第1行行起始地址起始地址1002起始地址起始地址1004起始地址起始地址1006起始地址起始地址1008起始地址起始地址1010整个数组整个数组a占用的空间为占用的空间为2*6=12Bytes,地,地址址10001011。01234567.20212223c000c001c002c003c010c011c012c013c020c021c022c023c100c101c102c103c110c111c112c113c120c121c122c123多维数组:多维数组:int c234最右下标变化最快最右下标变化最快UNIX C编程编程yyyy-M-18age *二维数组的引用二维数组的引用 二维数组的元素的表示形式为二维数组的元素的表示形式为 数组名数组名下标下标下标下标 如:如:a23。下标可以是整型表达式,如下标可以是整型表达式,如a2-12*2-1。不要写成不要写成a2,3,a2-1,2*2-1形式。形式。数组元素可出现在表达式中,如:数组元素可出现在表达式中,如:b12=a23/2 注意定义数组的下标和引用数组元素的下标。注意定义数组的下标和引用数组元素的下标。如:数组如:数组a23和元素和元素a237.2 二维数组的定义和引用二维数组的定义和引用UNIX C编程编程yyyy-M-19age *二维数组的初始化二维数组的初始化 二维数组初始化中要注意行、列的区分。二维数组初始化中要注意行、列的区分。赋初值的顺序是按照数组元素的存储顺序来进行的。赋初值的顺序是按照数组元素的存储顺序来进行的。按元素排列顺序初始化,以行优先。按元素排列顺序初始化,以行优先。数组不初始化,其元素值为随机数。数组不初始化,其元素值为随机数。在初始化时,未赋值的元素自动为在初始化时,未赋值的元素自动为0。7.2 二维数组的定义和引用二维数组的定义和引用UNIX C编程编程yyyy-M-20age *7.2 二维数组的定义和引用二维数组的定义和引用例例 int a33=1,2,3,4,5,6,7,8,9;int a33=1,2,3,4,5,6,7,8,9;a00a01a02a10a11a12123456789a20a21a22UNIX C编程编程yyyy-M-21age *7.2 二维数组的定义和引用二维数组的定义和引用a00a01a02a10a11a12123400780a20a21a22例例 int a33=1,2,3,4,7,8;UNIX C编程编程yyyy-M-22age *7.2 二维数组的定义和引用二维数组的定义和引用例例 int a 3=1,2,3,4,5,6,7,8,9;a00a01a02a10a11a12123456789a20a21a22UNIX C编程编程yyyy-M-23age *7.2 二维数组的定义和引用二维数组的定义和引用a00a01a02a10a11a12100456780a20a21a22例例 int a 3=1,4,5,6,7,8;UNIX C编程编程yyyy-M-24age *7.2 二维数组的定义和引用二维数组的定义和引用a00a01a02a10a11a12123456000a20a21a22例例 int a33=1,2,3,4,5,6;UNIX C编程编程yyyy-M-25age *二维数组程序举例二维数组程序举例例例 将一个二维数组行和列元素互换,存到另一个二维数组中。将一个二维数组行和列元素互换,存到另一个二维数组中。7.2 二维数组的定义和引用二维数组的定义和引用a=1 2 34 5 6b=1 42 53 6UNIX C编程编程yyyy-M-26age *例例 有一个有一个34的矩阵,要求编程序求出其中值最大的那个元素的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。的值,以及其所在的行号和列号。7.2 二维数组的定义和引用二维数组的定义和引用max=10,row=2,colum=1UNIX C编程编程yyyy-M-27age *字符数组的定义字符数组的定义 用来存放字符数据的数组用来存放字符数据的数组 字符数组中的一个元素存放一个字符字符数组中的一个元素存放一个字符 定义方法与数组的定义类似定义方法与数组的定义类似 例如:例如:char c10;c0=I;c1=;c2=a;c3=m;c4=;c5=h;c6=a;c7=p;c8=p;c9=y;7.3 字符数组字符数组UNIX C编程编程yyyy-M-28age *7.3 字符数组字符数组 字符数组的初始化字符数组的初始化 逐个字符赋给数组中各元素。逐个字符赋给数组中各元素。char c5=H,e,l,l,o;Hellov如果花括弧中提供的初值个数大于数组长度,则按语法错如果花括弧中提供的初值个数大于数组长度,则按语法错误处理。误处理。v 如果初值个数小于数组长度,则只将这些字符赋给数组中如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为前面那些元素,其余的元素自动定为“空字符空字符”(即即0)。char c5=G,o,o,d;Good05Bytev 如初值个数与预定长度相同,可省略数组长度,如初值个数与预定长度相同,可省略数组长度,系统会自动根据初值个数确定数组长度。系统会自动根据初值个数确定数组长度。char c=G,o,o,d,0;UNIX C编程编程yyyy-M-29age *字符串与字符串结束标志字符串与字符串结束标志 用双引号括起来的字符序列称为字符串用双引号括起来的字符序列称为字符串 字符串与字符的区别在于字符串在内存中存储时,结尾一定要字符串与字符的区别在于字符串在内存中存储时,结尾一定要加上一个加上一个0(ASCII码为码为0的字符)作为字符串的结束符。的字符)作为字符串的结束符。字符串实质上是一个以字符串实质上是一个以0为结束符的一维字符数组。为结束符的一维字符数组。字符串与字符的存储字符串与字符的存储7.3 字符数组字符数组 “a”aa02Bytesa1ByteUNIX C编程编程yyyy-M-30age *使用字符串常量对字符数组初始化使用字符串常量对字符数组初始化7.3 字符数组字符数组例例 c=Hello c=Hello例例 c10=Hello c10=HelloHello0Hello00000UNIX C编程编程yyyy-M-31age *字符数组的输入输出字符数组的输入输出 逐个字符输入输出逐个字符输入输出 char c6;for(i=0;i6;i+)scanf(%c,&ci);for(i=0;i6;i+)printf(%c,ci);将整个字符串一次输入输出将整个字符串一次输入输出 scanf(%s,c);printf(%s,c);用用scanf输入多个字符串时,中间以空格分格输入多个字符串时,中间以空格分格 char c15,c25,c35;scanf(“%s%s%s”,c1,c2,c3);输入输入how are you?7.3 字符数组字符数组UNIX C编程编程yyyy-M-32age *二维字符数组每一行可作为一个一维字符数组,即可保存二维字符数组每一行可作为一个一维字符数组,即可保存一个字符串。一个字符串。char fruit 7=Apple,Orange,Grape,Pear,Peach;7.3 字符数组字符数组Apple00Orange0Grape00Pear000Peach00fruit0fruit1fruit2fruit3fruit4UNIX C编程编程yyyy-M-33age *字符串处理函数字符串处理函数 在在c的函数库中提供了一些用来处理字符串的函数,使用方便。的函数库中提供了一些用来处理字符串的函数,使用方便。#include(可以省略)(可以省略)puts(字符数组字符数组)将一个字符串将一个字符串(以以0结束的字符序列结束的字符序列)输出到终端,将输出到终端,将0 转换为转换为n。gets(字符数组字符数组)从终端输入一个字符串到字符数组。从终端输入一个字符串到字符数组。7.3 字符数组字符数组v#include (可以省略)(可以省略)strcat(字符数组字符数组1,字符数组字符数组2)连接两个字符数组中的字符串,把字符串连接两个字符数组中的字符串,把字符串2接到字符串接到字符串1的后的后面,结果放在字符数组面,结果放在字符数组1中。中。UNIX C编程编程yyyy-M-34age *strcmp(字符串字符串1,字符串字符串2)比较字符串比较字符串1和字符串和字符串2。串。串1=串串2,值为值为0;串串1串串2,值为正值为正 strlen(字符数组字符数组)函数的值为字符串中的实际长度,不包括函数的值为字符串中的实际长度,不包括0在内。在内。7.3 字符数组字符数组v strcpy(字符数组字符数组1,字符串字符串2)将字符串将字符串2复制到字符数组复制到字符数组1中去。中去。v strlwr(字符串字符串)将字符串中大写字母换成小写字母。将字符串中大写字母换成小写字母。v strupr(字符串字符串)将字符串中小写字母换成大写字母。将字符串中小写字母换成大写字母。UNIX C编程编程yyyy-M-35age *字符数组应用举例字符数组应用举例 例例 输入一行字符,统计其中有多少个单词,单词之间用空格输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。分隔开。7.3 字符数组字符数组UNIX C编程编程yyyy-M-36age *7.3 字符数组字符数组否否0是是11是是1未未01否否0是是12否否1未未12是是1未未02否否0是是13是是1未未03否否0是是14否否1未未14否否1未未14否否1未未14例例 输入:输入:I am a boy.当前字符当前字符是否空格是否空格word原值原值新单词开始否新单词开始否word新值新值num值值 Iamaboy.UNIX C编程编程yyyy-M-37age *例例 有有3个字符串个字符串,要求找出其中最大者。要求找出其中最大者。今设一个二维的字符数组今设一个二维的字符数组str,大小为大小为320,即有即有3行行20列列,每一行可以容纳每一行可以容纳20个字符。个字符。7.3 字符数组字符数组p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over.I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!