C程序设计语言课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C程序设计语言课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 课件
- 资源描述:
-
1、1C+程序设计语言程序设计语言林桂明24.1、数、数 组组4.2、指针和引用、指针和引用4.3、动态存储分配、动态存储分配34.1 数组一、数组一、数组根据数组的维数,分为一维数组、二维数组和多维数组,常用的是一维和二维数组。有一个下标是一维数组;有两个下标是二维数组。有一个下标是一维数组;有两个下标是二维数组。(1)一维数组)一维数组的定义:的定义:数据类型数据类型 数组名数组名 数组长度数组长度n说明:说明:n数组名为用户定义的标识符。数组名为用户定义的标识符。n数据类型为数组元素的数据类型。数据类型为数组元素的数据类型。n数组长度指定数组中元素的个数,为正整数,不能是变量。数组长度指定数
2、组中元素的个数,为正整数,不能是变量。n数组元素是通过下标进行访问的,其作用相当于简单变量。数组元素是通过下标进行访问的,其作用相当于简单变量。n数组元素的下标从数组元素的下标从0 0开始到开始到“数组长度数组长度”1 1。n数组名代表的是数组在内存中的首地址。数组名代表的是数组在内存中的首地址。n同一个数组中的元素在内存中是按顺序连续存放的。同一个数组中的元素在内存中是按顺序连续存放的。数组是数目固定、类数组是数目固定、类型相同的多个数据的型相同的多个数据的有序排列。有序排列。例:例:int a 5;数组数组a的数组元素为:的数组元素为:a0,a1,a2,a3,a4a0的值a1的值a2的值a
3、3的值a4的值a44.1 数组(2)一维数组)一维数组的初始化:的初始化:语法格式为:类型类型 数组名数组名 数组长度数组长度 =元素元素1,元素,元素2,元素,元素3,例:例:int a 5 =1,2,3,4,5;int b 7 =1,2,3,4;/对前面连续的元素部分初始化数组对前面连续的元素部分初始化数组。这时这时b0=1,b1=2,b2=3,b3=4,b4=0float c =1.5,2.0,3.2,4.5;/没有给出数组的大小,则大没有给出数组的大小,则大小由元素个数确定小由元素个数确定。数组。数组c的大小为的大小为4。(3)访问一维数组元素)访问一维数组元素 数组不能整体使用,只能
4、逐个引用数组元素。数组元素的表示形数组不能整体使用,只能逐个引用数组元素。数组元素的表示形式:式:数组名数组名 下标下标例:例:int a3=1,2,3;int x=a 0 +a 1;cout a 2 endl;下标可以是整型常数、下标可以是整型常数、整型变量和整型表达整型变量和整型表达式,其起始值为式,其起始值为0。54.1 数组n例4.2:有5个元素的数组,在定义时初始化,要求计算这些值的平均数,并找出最大值和最小值。#include void main()int a5=13,44,-12,39,2;int i,avg,max,min;min=max=a0;avg=a0;for(i=1;i
5、 max)max=ai;if(ai min)min=aiavg/=5.0;cout “平均值是:”avg endl;cout “最小值是:”min endl;cout “最大值是:”max endl;6#include using namespace std;void main()int a10,t,i,j;cout请输入10个整数:endl;for(i=0;iai;for(i=1;i10;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;i10;i+)coutai,;coutendl;例4.3冒泡排序法P817作业:P116第18题84.1 数组(4)
6、二维数组)二维数组的定义:的定义:n一般格式:一般格式:数据类型数据类型 数组名数组名 表达式表达式1 表达式表达式2 n例如,三个学生四门课程成绩数据如下:n 85 87 93 88n 86 90 95 89n 78 91 82 95n利用二维数组存放这些数据更能表现数据之间相互联系的特征。每一行数据表示该学生的各门课程的成绩,而每一列数据表示该门课程各学生的成绩。该数组定义为:n int a34;其中:其中:“表达式表达式1”用来指定数组中行的数目,用来指定数组中行的数目,“表达式表达式2”用来指用来指定数组中列的数目。整个二维数组的大小是定数组中列的数目。整个二维数组的大小是表达式表达式
7、1*表达式表达式2(即(即行数行数*列数列数)n可以把二维数组看作是一种特殊的一维数组:它的元素又是一个可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如:一维数组。例如:int a34;可以把;可以把a看作是一个一维数组,它看作是一个一维数组,它有三个元素:有三个元素:a0、a1、a2,每个元素又是一个包含,每个元素又是一个包含4个元素个元素的一维数组。可以把的一维数组。可以把a0、a1、a2看作是一维数组的名字。看作是一维数组的名字。a0 a00 a01 a02 a03a1 a10 a11 a12 a13a3 a20 a21 a22 a2394.1 数组n逻辑结构:n
8、二维数组恰似一张表格(或矩阵)。数组元素中的第一个下标值表示该元素在表格中的行号,第二个下标为列号。M33具有如下逻辑结构:n M00 M01 M02n M10 M11 M12n M20 M21 M22n存贮结构:n 二维数组在内存中按一维数组存放、占据一片连续的存贮单元;是“按行顺序”在内存中分配存贮单元。数组在内存中排列如下:m00 m01 m02 m10 m11 m12 m20 m21 m22104.1 数组(5)二维数组的初始化:)二维数组的初始化:可以用下面的方法对二维数组初始化:可以用下面的方法对二维数组初始化:1)分行初绐化)分行初绐化int a25=1,3,5,7,9,2,4,
9、6,8,10;这种赋值方法比较直观,把第一个花括号内的数据给第一行的元素,第二个这种赋值方法比较直观,把第一个花括号内的数据给第一行的元素,第二个花括号内的数据给第二行的元素,花括号内的数据给第二行的元素,2)不分行初始化)不分行初始化可以将所有数据写在一个花括号内,按数组排列的顺序对每个元素赋初值。可以将所有数据写在一个花括号内,按数组排列的顺序对每个元素赋初值。如:如:int a25=1,3,5,7,9,2,4,6,8,10;3)部分初始化)部分初始化int a25=1,3,5,2,4,6;其余元素值自动为其余元素值自动为0。赋初值后数组各元素为:。赋初值后数组各元素为:4)省略行数)省略
10、行数对数组中的全体元素都赋初值时,二维数组的定义中第一维的长度也可以省对数组中的全体元素都赋初值时,二维数组的定义中第一维的长度也可以省略,但二维的长度不能省略。如:略,但二维的长度不能省略。如:int a23=1,3,5,7,9,11;等价于:等价于:int a 3=1,3,5,7,9,11;但不能写成:但不能写成:int a2=1,3,5,7,9,11;114.1 数组(6)访问二维数组元素)访问二维数组元素数组名下标1下标2其中的下标为整型表达式其中的下标为整型表达式,但不得越界。但不得越界。与一维数组元素一样与一维数组元素一样,二维数组元素相当于同类型的简二维数组元素相当于同类型的简单
11、变量。单变量。例如:a11=3;a21=a11;124.1 数组例 有一个3*4的矩阵,求出其中值最大的那个元素的值,以及其所在行号和列号。#include void main()int i,j,row,colum,max;int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;row=0;colum=0;for(i=0;i3;i+)for(j=0;jmax)max=aij;row=i;colum=j;cout “最大数是:”max “,行号是:”row;cout “,列号是:”colum endl;134.1 数组例:输入一个4行4列(4*4)的二维整型数组,
12、并将该数组输出,然后按行求元素之和、按列求元素之和、按对角线求元素之和。作业:P117第21题144.1 数组(7)string 类型类型在在ANSI/ISO标准标准C+颁布之前,标准颁布之前,标准C+库并不提供库并不提供string数数据类型。据类型。String由由C+标准库来支持,而不是标准库来支持,而不是C+语言本身语言本身的一部分。在使用的一部分。在使用string数据类型之前,需要在程序中包含数据类型之前,需要在程序中包含头文件头文件string并声明其所在的名字空间并声明其所在的名字空间std:#include using namespace std;n直接用直接用string声
13、明的变量:声明的变量:n变量可直接赋值。变量可直接赋值。n可用可用“+”号连接字符串,不必用号连接字符串,不必用strcatn可直接用可直接用“=”“=”“=”逻辑比较,不必用逻辑比较,不必用strcmpn可直接用可直接用“=”“+=”进行传值,不必用进行传值,不必用strcpyn可直接用可直接用“”进行字符串的流输入、输出。进行字符串的流输入、输出。例:定义一个例:定义一个string型变量:型变量:string st;cinst;st=st+”123”;coutstname;coutchar name10;cinname;coutname;name;注意字符数组和字符串这两个术语的区别。字
14、符串存放在字符数组中,但字符数组与字符串可以不等长。字符串以0作为结束标记。字符串是由若干字符组成的字符序列,字符串是由若干字符组成的字符序列,并且最后一个字符必须是结束符并且最后一个字符必须是结束符0174.1 数组例:例:#include void main()int i,j;char a 5=B,A,S,I,C,d,B,A,S,E ;for(i=0;i=1;i+)for(j=0;j=4;j+)coutaij;coutn;#include void main()int I,j;char a 6=“BASIC”,”dBASE”for(I=0;I2;I+)coutaIendl;184.1 数组
15、n例:编写程序实现将一个字符串s1中的小写字母转换成大写字母、大写字母保持不变,将结果存入另一个字符串s2中。#include void main()char s1=“tHiS Is a stRinG”;char s250;int i=0;while(s1i!=0)if(s1i=a&s1i=z)s2i=s1i-32;else s2i=s1i;i+;s2i=0;/一个字符串的结束标志是一个字符串的结束标志是0。couts1endl;couts2endl;194.1 数组练习:编写一个程序,该程序提示用户输入学生姓名及考试分数。练习:编写一个程序,该程序提示用户输入学生姓名及考试分数。该程序输出(
16、假定每个班级中最多有学生该程序输出(假定每个班级中最多有学生30人):人):(1)班级平均分;()班级平均分;(2)考试分数低于班级平均分的学生姓名;)考试分数低于班级平均分的学生姓名;(3)最高分以及最高分的学生姓名。)最高分以及最高分的学生姓名。#include /#includeusing namespace std;void main()char a306;/string a30;int b30;int n,i,avg=0;coutn;for(i=0;in;i+)coutaibi;coutendl;avg=avg+bi;avg=avg/n;cout班级平均分为班级平均分为avgendl
17、;int max=0,j;cout低于平均分的学生是:;for(i=0;in;i+)if(biavg)coutaiendl;if(maxbi)max=bi;j=i;cout最高分为:max姓名为:ajendl;204.1 数组(12)常用字符串函数)常用字符串函数C+提供了一系列字符串操作的函数,这些函数都包含在头文件提供了一系列字符串操作的函数,这些函数都包含在头文件cstring中。中。需要添加需要添加#include n常用的字符串函数有:常用的字符串函数有:(1)字符串拷贝:)字符串拷贝:char*strcpy(char*s1,char*s2):s2拷贝到拷贝到s1中,返回中,返回s1
18、的首地址的首地址;(2)字符串连接:)字符串连接:char*strcat(char*s1,char*s2):s2添加到添加到s1的末端,返回的末端,返回s1的首地址的首地址;(3)字符串比较:)字符串比较:int strcmp(char*s1,char*s2):如果:如果s1小于小于s2,返回一个负数,返回一个负数,s1等于等于s2,返,返回回0,s1大于大于s2,返回一个正数,返回一个正数;(4)求字符串长度:)求字符串长度:int strlen(char*s):返回字符串:返回字符串s的有效长度,末尾的空字符不计算在内的有效长度,末尾的空字符不计算在内;(5)查找字符串:)查找字符串:ch
19、ar*strstr(char*s1,char*s2):在字符串:在字符串s1中查找另一个字符串中查找另一个字符串s2,若查找,若查找成功则返回成功则返回s2在在s1中首次出现的位置,否则返回中首次出现的位置,否则返回NULL。214.1 数组(12)字符串处理函数)字符串处理函数C+提供丰富的提供丰富的字符串字符串处理处理函数,函数,在调用字符串处理函数时在调用字符串处理函数时则应包含头文件则应包含头文件。下面介绍几个最常用的字符串函数。下面介绍几个最常用的字符串函数。1、字符串拷贝函数字符串拷贝函数 strcpy()格式:格式:strcpy(字符数组名字符数组名1,字符数组名,字符数组名2)
20、或或 strcpy(字符字符指针指针1,字符,字符指针指针2)功能:把字符数组功能:把字符数组2中的字符串拷贝到字符数组中的字符串拷贝到字符数组1中。串结束标志中。串结束标志“0”也一同拷贝。也一同拷贝。字符数名字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。符数组。例:例:#include#include using namespace std;void main()char st115,st2=C Language;strcpy(st1,st2);coutst1endl;strncpy(字符数组名字符数组
21、名1,字符数组名字符数组名2,整数整数n)或或 strncpy(字符字符指针指针1,字符字符指针指针2,整数整数n)将字符串将字符串2的前的前n个字符复个字符复制到字符数组制到字符数组1中中224.1 数组2、字符串连接函数字符串连接函数 strcat()格式:格式:strcatstrcat(字符数组名字符数组名1,1,字符数组名字符数组名2)2)或或strcatstrcat(字符指针字符指针1,1,字符指针字符指针2)2)功能:把字符数组功能:把字符数组2 2中的字符串连接到字符数组中的字符串连接到字符数组1 1中字符串的后面,并中字符串的后面,并在最后加一个在最后加一个“0”0”。连接后新
22、的字符串存放在字符数组。连接后新的字符串存放在字符数组1 1中,因中,因此字符数组此字符数组1 1必须定义的足够大。必须定义的足够大。例例#include iostream#include#include cstring#include using namespace std;using namespace std;void main()void main()char st130=“char st130=“我的名字是我的名字是;char st210char st210;coutcout“st2st2;strcat(st1,st2)strcat(st1,st2);coutst1endlcouts
23、t1endl;234.1 数组3、字符串比较函数字符串比较函数 strcmp()格式为:格式为:strcmp(字符数组名字符数组名1,字符数组名字符数组名2)或或 strcmp(字符指针字符指针1,字符指针字符指针2)其返回值如下:其返回值如下:(1)当当str1串等于串等于str2串时,返回值串时,返回值0;(2)当当str1串大于串大于str2串时,返回一个正值;串时,返回一个正值;(3)当当str1串小于串小于str2串时,返回一个负值。串时,返回一个负值。strncmp(字符数组名(字符数组名1,字符数组名,字符数组名2,整数,整数n););将两个字符将两个字符串进行比较。串进行比较。
24、只对两个字符串的只对两个字符串的前前n个字符比较,个字符比较,后面的不比较。后面的不比较。例:例:#include#include#include cstring#include using namespace std;using namespace std;void main()void main()char str110=hello;char str110=hello;char str210=hello;char str210=hello;if(strcmp(str1,str2)=0)if(strcmp(str1,str2)=0)coutcout“相等相等n”;n”;elseelsecou
25、tcout“不相等不相等n;n;244.1 数组4、字符串长度函数字符串长度函数 strlen()格式为:格式为:strlenstrlen(字符数组字符数组名名)函数返回值:函数返回值:字符串中的实际字符个数。字符串中的实际字符个数。参数还可以参数还可以是字符指针是字符指针或字符串常或字符串常量。量。例:#include#include#include cstring#include using namespace std;using namespace std;void main()void main()char str150;char str150;cin cinstr1;str1;int
展开阅读全文