版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编辑课件编辑课件 第一个问题是:输入第一个问题是:输入100个学生的个学生的“C程序设计程序设计”课程的成绩,将这课程的成绩,将这100个分数从个分数从小到大输出。小到大输出。 第二个问题是输入第二个问题是输入100个学生的个学生的“C程程序设计序设计”课程的期中和期末成绩,算出总评课程的期中和期末成绩,算出总评成绩,总评成绩为成绩,总评成绩为“30%期中成绩期中成绩+70%期末成绩期末成绩”,计算总评成绩的分数,计算总评成绩的分数段情况。段情况。编辑课件6.2.1 一维数组的定义一维数组的定义 从概念上来说,数组是一组变量,这从概念上来说,数组是一组变量,这组变量应该满足下列条件:组变量应该
2、满足下列条件:(1) 具有有相同的名字具有有相同的名字(2) 具有相同的数据类型具有相同的数据类型(3) 在存储器中连续存放在存储器中连续存放编辑课件 每个变量称为数组的一个每个变量称为数组的一个“数组单数组单元元”,保存在其中的数据值称为,保存在其中的数据值称为“数组元数组元素素”,不论是数组单元,还是数组元素,不论是数组单元,还是数组元素,在不引起混淆的情况下,可以简称为在不引起混淆的情况下,可以简称为元元素素。数组对象的整体有一个名称,这个。数组对象的整体有一个名称,这个名称表示整个数组。名称表示整个数组。编辑课件 每个数组在使用之前都需要定义。每个数组在使用之前都需要定义。定义数组的语
3、法是:定义数组的语法是: 数据类型说明符数据类型说明符 数组名数组名数组长度数组长度; 数据类型说明符数据类型说明符是是C语言提供的任何语言提供的任何一种基本数据类型或构造数据类型。一种基本数据类型或构造数据类型。 数组名数组名是用户定义的标识符。是用户定义的标识符。 方括号中的方括号中的数组长度数组长度是一个常量表达是一个常量表达式,它表示了数组单元的个数。注意:数式,它表示了数组单元的个数。注意:数组长度只能是常量。组长度只能是常量。 编辑课件例如:例如:int data5; 说明整型数组说明整型数组a,有,有5个元素。个元素。float b10,c20; 说明单精度浮点型数组说明单精度浮
4、点型数组b,有,有10个元素;单个元素;单精度浮点型数组精度浮点型数组c,有,有20个元素。个元素。char string20; 说明字符型数组说明字符型数组string,有,有20个元素。个元素。 编辑课件注意注意(1) 数组的数据类型定义的是每个数组数组的数据类型定义的是每个数组元素的取值类型。对于一个数组来说,所元素的取值类型。对于一个数组来说,所有数组元素的数据类型应该都是相同的。有数组元素的数据类型应该都是相同的。(2) 数组名要符合用户定义字的书写规数组名要符合用户定义字的书写规则,也就是与普通变量一样。则,也就是与普通变量一样。(3) 在在C语言的一个函数中,数组名不能语言的一个
5、函数中,数组名不能与本函数的其它变量名同名。与本函数的其它变量名同名。(4)数组长度不能是变量,也不能是或包含变)数组长度不能是变量,也不能是或包含变量的表达式,可以是常量或常量表达式。并且量的表达式,可以是常量或常量表达式。并且常量表达式应是整型数,不能是小数常量表达式应是整型数,不能是小数 。编辑课件程序段一:程序段一:#define Size 5main() int aSize,bSize+10; /*正确正确 */ 程序段二:程序段二:main() int n=5; int datan; /*错误错误 */编辑课件6.2.2 一维数组的引用一维数组的引用 引用数组单元的一般形式为:引用
6、数组单元的一般形式为: 数组名数组名 下标下标 数组下标可以是整型变量或整型表达式,数组下标可以是整型变量或整型表达式,但不能是浮点型的变量或浮点型表达式;并且但不能是浮点型的变量或浮点型表达式;并且下标不能大于下标不能大于 数组长度数组长度-1-1,因为超过部分没,因为超过部分没有被定义过,是不能正确使用的。有被定义过,是不能正确使用的。 图。图。 例如:例如:data4、datai+j、datai+都是都是合法的引用方式。合法的引用方式。 编辑课件例例6.1用数组方式读入用数组方式读入5个整数,并求和。个整数,并求和。/* sum of 5 interger */#include stdi
7、o.hvoid main() int i,data5,sum=0; printf(nPlease enter 5 integer:); for (i=0;i5;i+) scanf(%d,&datai); for (i=0;i5;i+) sum=sum+datai; printf(Sum is %dn,sum);编辑课件 在语言中只能逐个地使用每个数组单元在语言中只能逐个地使用每个数组单元进行操作,而不能一次引用整个数组。进行操作,而不能一次引用整个数组。 例如,不能用例如,不能用printf(“%d”,data);来代替下来代替下面的语句:面的语句: for(i=0; i=4; i+)
8、 printf(%d,datai); 因为,因为,C语言规定数组名本身代表数组的首语言规定数组名本身代表数组的首地址。地址。printf(“%u”,data);语句输出的是数组的语句输出的是数组的首地址,而不是数组单元的内容。首地址,而不是数组单元的内容。 编辑课件 6.2.3 一维数组的初始化一维数组的初始化 初始化是指在数组定义时给数组元素赋予初始化是指在数组定义时给数组元素赋予初值。需要注意的是,数组初始化是在编译阶初值。需要注意的是,数组初始化是在编译阶段进行的,而不是在程序开始运行以后,由可段进行的,而不是在程序开始运行以后,由可执行语句完成的,因此不能将初始化的执行语句完成的,因此
9、不能将初始化的“=”与与赋值号混淆。赋值号混淆。 一维数组初始化的一般形式是:一维数组初始化的一般形式是:数据类型说明符数据类型说明符 数组名数组名数组长度数组长度=数值,数数值,数值,值,. 数值数值; 编辑课件 int data5=1,2,3,4,5; 注意注意(1) 允许初始化一部分元素,而不是全部。允许初始化一部分元素,而不是全部。 int data5=1,2;(2) 初始化数组时,允许省略数组的长度。初始化数组时,允许省略数组的长度。 int data=1,2,3,4,5; 与与int data5=1,2,3,4,5;是完全等价的。是完全等价的。(3) 初始化数组时,不能对整个数组初
10、始化。初始化数组时,不能对整个数组初始化。 例如,例如,int data5=1; 编辑课件6.2.4 程序举例程序举例 例例6.2用数组方式解决用数组方式解决Fibonacci数列问题,求出数列问题,求出Fibonacci数列的前数列的前20项存储在数组中,并将数项存储在数组中,并将数组内容输出。组内容输出。编辑课件#include stdio.hvoid main() int i,fib20=1,1; /*初始化初始化 */ printf(n); for (i=2;i20;i+) fibi=fibi-1+fibi-2; for (i=1;i=20;i+) printf(%10d,fibi-1
11、); if (i%5=0) printf(n); /*换行,每行输出换行,每行输出5个个 */ 编辑课件例例6.3 输入输入100个整数,求出最小的数以及第一个个整数,求出最小的数以及第一个最小的数在数组中的下标。最小的数在数组中的下标。例例6.4 输入输入100个整数,从小到大排列并输出个整数,从小到大排列并输出 。 选择排序选择排序 例例6.5 输入输入100个学生的个学生的“C程序设计程序设计”课程的期课程的期中和期末成绩,算出总评成绩,总评成绩为中和期末成绩,算出总评成绩,总评成绩为“30%期中成绩期中成绩+70%期末成绩期末成绩”,计算总,计算总评评成绩的分数段情况。成绩的分数段情况
12、。 本题要使用三个平行的数组才能解决问题。本题要使用三个平行的数组才能解决问题。这三个数组的第这三个数组的第i个元素记录了一个学生的期中个元素记录了一个学生的期中成绩、期末成绩和总评成绩。成绩、期末成绩和总评成绩。 编辑课件 如果一维数组的数组单元不是一个变如果一维数组的数组单元不是一个变量,而是另一个一维数组,就构成了二维量,而是另一个一维数组,就构成了二维数组。数组。 图。图。 e_score是一个一维数组,它的每个数是一个一维数组,它的每个数组单元是一个变量,分别是组单元是一个变量,分别是e_score0、e_score1、e_score2、e_score3、e_score4。而。而st
13、u_score的每个数组单元不的每个数组单元不是一个变量,而是一个有三个变量的一维数是一个变量,而是一个有三个变量的一维数组,这就构成了二维数组。组,这就构成了二维数组。 编辑课件 80 70 80 88 99 90 80 60 69 78 87 77 66 75 84 stu_ score 80 90 87 70 80 77 80 60 66 . stu_ score0 stu_ score1 stu_ score2 1000 1002 1004 1008 1010 1012 1014 1016 1018 10200 编辑课件 stu_score有有5个数组单元,每个数个数组单元,每个数组单
14、元又有组单元又有3个元素,我们称个元素,我们称stu_score是是一个一个53的二维数组,该二维数组行的的二维数组,该二维数组行的个数是个数是5,列的个数是,列的个数是3。6.3.1 二维数组的定义二维数组的定义定义二维数组的语法是:定义二维数组的语法是: 数据类型说明符数据类型说明符 数组名数组名行数行数列数列数编辑课件例如:例如:int data53; 说明整型数组说明整型数组a,有,有5行行3列共列共15个整型个整型变量。变量。float b1020; 说明单精度浮点型数组说明单精度浮点型数组b,有,有10行行20列共列共200个单精度浮点型变量。个单精度浮点型变量。char stri
15、ng2050; 说明字符型数组说明字符型数组string,有,有20行行50列共列共1000个字符型变量。个字符型变量。 编辑课件 地址二维数组在概念上是二维的,可以说地址二维数组在概念上是二维的,可以说是数组的数组,二维数组的下标在行和列两个方是数组的数组,二维数组的下标在行和列两个方向变化。但是,计算机的内存是连续编址的,也向变化。但是,计算机的内存是连续编址的,也就是说存储器单元是按一维线性排列的。那么,就是说存储器单元是按一维线性排列的。那么,如何按照地址的顺序存放二维数组呢?一般有两如何按照地址的顺序存放二维数组呢?一般有两种方式来存储二维数组,第一种称为按行排列,种方式来存储二维数
16、组,第一种称为按行排列,方法是先存储完第一行中的每个元素,再存放下方法是先存储完第一行中的每个元素,再存放下一行的每个元素;第二种称为按列排列,方法是一行的每个元素;第二种称为按列排列,方法是先存储完第一列中的每个元素,再存放下一列的先存储完第一列中的每个元素,再存放下一列的每个元素。每个元素。C语言的编译系统采用按行排列。语言的编译系统采用按行排列。编辑课件 6.3.2 二维数组的引用二维数组的引用引用二维数组的一般形式为:引用二维数组的一般形式为: 数组名数组名行下标行下标列下标列下标 行下标不能大于行下标不能大于行数行数-1,列下标不,列下标不能大于能大于列数列数-1。 如果有如果有in
17、t stu_score53;stu_score00、stu_score12、stu_score31都是正确的引用方式,但都是正确的引用方式,但是是stu_score33是不正确的。是不正确的。编辑课件例例6.7判断下面程序的运行结果:判断下面程序的运行结果:#include stdio.hvoid main() int i,j,a32; /* 定义定义 */ for (i=0;i3;i+) /* 赋值赋值 */ for (j=0;j2;j+) aij=i+j; for (i=0;i3;i+) for (j=0;j=0;i-) /*从最后一个字符开始逆向输出从最后一个字符开始逆向输出 */ pu
18、tchar(ci); 编辑课件6.4.2 字符串变量字符串变量 C语言的字符串变量不是真正的字符串类型。语言的字符串变量不是真正的字符串类型。 C语言的字符串变量从形式上还是定义一个语言的字符串变量从形式上还是定义一个字符数组,但是,在概念上,字符串是带有字字符数组,但是,在概念上,字符串是带有字符串结束符符串结束符0的一组字符,不论它是常量还的一组字符,不论它是常量还是变量。是变量。 有了有了0标志以后,在处理字符数据时,标志以后,在处理字符数据时,就不必再用数组的长度来控制对字符数组的操就不必再用数组的长度来控制对字符数组的操作,而是用作,而是用0来判断字符串的结束位置。来判断字符串的结束
19、位置。 这是字符串变量与其它类型的数组(包括一这是字符串变量与其它类型的数组(包括一般的字符数组)在操作上的根本区别。般的字符数组)在操作上的根本区别。编辑课件 字符串变量需要用字符串常量对其进行初始字符串变量需要用字符串常量对其进行初始化。化。 例如:例如:char str=Hello;或或char str=Hello; 用上面两种方式初始化用上面两种方式初始化str以后,以后,str字符串字符串变量所占的内存空间是变量所占的内存空间是6字节,最后一个字节是字节,最后一个字节是字符串结束标志字符串结束标志0。编辑课件 6.4.3 字符串变量的输入与输出字符串变量的输入与输出 1、使用、使用p
20、rintf函数输出字符串变量的方式是:使函数输出字符串变量的方式是:使用转换字符序列用转换字符序列“%s”。例例6.11使用使用printf函数输出字符串变量。函数输出字符串变量。#include stdio.hvoid main() char str=Hello; printf(%s,str);运行结果:运行结果:Hello编辑课件例例6.12请判断下面程序的运行结果:请判断下面程序的运行结果:#include stdio.hvoid main() char str10= H, e, l, l, o, !,0, !; printf(%s,str);运行结果:运行结果:?编辑课件2、使用、使用
21、scanf函数输入字符串给字符串变量也使函数输入字符串给字符串变量也使用转换字符序列用转换字符序列“%s”。例例6.13 使用使用scanf函数输入字符串给字符串变量。函数输入字符串给字符串变量。#include stdio.hvoid main() char str10; scanf(%s,str); printf(%s,str);编辑课件2、使用、使用scanf函数输入字符串给字符串变量也使函数输入字符串给字符串变量也使用转换字符序列用转换字符序列“%s”。例例6.13 使用使用scanf函数输入字符串给字符串变量。函数输入字符串给字符串变量。#include stdio.hvoid ma
22、in() char str10; scanf(%s,str); printf(%s,str);运行结果:运行结果:Welcome you ?编辑课件3、puts()是字符串输出函数,其调用格式为:是字符串输出函数,其调用格式为: puts (字符串变量字符串变量); 它的功能是把字符串变量的内容(一定要它的功能是把字符串变量的内容(一定要有有0结束符)显示在屏幕上。结束符)显示在屏幕上。例例6.14 使用使用puts()字符串输出函数。字符串输出函数。#include stdio.hvoid main() char str=Hello; puts(str);运行结果:运行结果:Hello编辑课
23、件#include stdio.hvoid main() char str=Hello; printf(%s,str); printf(%s,str);运行结果运行结果? 编辑课件#include stdio.hvoid main() char str=Hello; puts(str); puts(str);运行结果:运行结果:? 编辑课件4、gets()是字符串输入函数,其调用格式为:是字符串输入函数,其调用格式为:gets (字符串变量字符串变量);它的功能是:从标准输入设备键盘上输入一个字它的功能是:从标准输入设备键盘上输入一个字符串。符串。例例6.15 使用使用gets()字符串输入函
24、数。字符串输入函数。#include stdio.hvoid main() char str20; gets(str); puts(str); 若输入为若输入为 Welcome you 输出?输出?编辑课件6.4.4 字符串函数字符串函数 1. 字符串连接函数字符串连接函数strcat 其调用格式为:其调用格式为: strcat (字符串变量字符串变量1,字符串,字符串2) 它的功能是:将字符串它的功能是:将字符串2的字符串连接的字符串连接到字符串变量到字符串变量2中的字符串的后面,并删去字符中的字符串的后面,并删去字符串变量串变量1中的字符串结束符中的字符串结束符0。strcat的返回值的返
25、回值是字符串变量是字符串变量1的首地址。的首地址。 字符串变量字符串变量1应定义足够的长度,以便能装应定义足够的长度,以便能装入连接以后的字符串。入连接以后的字符串。编辑课件例例6.16 字符串连接函数的使用。字符串连接函数的使用。#include stdio.h#includestring.hvoid main() char str130=I am ; char str210= a student; strcat(str1,str2); puts(str1);运行结果:运行结果:I am a student编辑课件2. 字符串拷贝函数字符串拷贝函数strcpy 其调用格式为:其调用格式为:
26、strcpy (字符串变量字符串变量1,字符串,字符串2) 它的功能是:将字符串它的功能是:将字符串2的字符串复制到的字符串复制到到字符变量到字符变量1中。字符串结束符中。字符串结束符0 也一起复制。也一起复制。字符串字符串2既可以是字符串常量也可以是字符串变既可以是字符串常量也可以是字符串变量。量。 strcpy函数要求字符串变量函数要求字符串变量1有足够的长有足够的长度,以便能装入要复制的字符串。度,以便能装入要复制的字符串。编辑课件例例6.17使用函数使用函数strcpy将一个字符串的内容拷贝到将一个字符串的内容拷贝到另一个字符串中。另一个字符串中。#include stdio.h#in
27、cludestring.hvoid main() char str130=I am ; char str210= a student; strcpy(str1,str2); puts(str1);运行结果:运行结果:a student编辑课件3. 字符串比较函数字符串比较函数strcmp 其调用格式为:其调用格式为: strcmp(字符串字符串1,字符串,字符串2) 它的功能是:按照它的功能是:按照ASCII码顺序比较两个码顺序比较两个数组中的字符串,并由函数返回值返回比较结数组中的字符串,并由函数返回值返回比较结果。果。若字符串若字符串1字符串字符串2,返回值为,返回值为0;若字符串若字符串1 字符串字符串2,返回值为一正整数;,返回值为一正整数;若字符串若字符串1 字符串字符串2,返回值为一负整数。,返回值为一负整数。字符串字符串1和字符串和字符串2既可以是字符串常量也可以既可以是字符串常量也可以是字符串变量。是字符串变量。编辑课件4. 求字符串长度函数求字符串长度函数strlen 其调用格式为:其调用格式为: strlen(字符串字符串) 它的功能是:计算字符串的实际长度它的功能是:计算字符串的实际长度(不含不含字符串结束标志字符串结束标志0 ),并将计算结果作为函数,并将计算结果作为函数值返回。字符串既可以是字符串常量也可以是值返回。字符串既可以是字符串常量也可以是字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市钢结构建筑改造方案
- 2024年中国移动式液压装仓机市场调查研究报告
- 2024山东皮革制品制造市场前景及投资研究报告
- 2024-2025年中国通信模组行业发展潜力分析及投资战略咨询报告
- 2024至2030年童珍藕粉项目投资价值分析报告
- 2024年中国全棉斜纹宽幅坯布市场调查研究报告
- 2025年继电器项目安全调研评估报告
- 齐鲁咨询|2024年中国低度酒行业现状与发展趋势研究报告
- 提升放疗前肿瘤分期准确性的方案
- 养殖管理制度内容
- 商场用电安全培训
- 《中小学教育惩戒规则(试行)》宣讲培训
- 结清货款合同范例
- 挂靠装修公司合同范例
- 2021年四川省凉山州九年级中考适应性考试理科综合(试卷)
- 骨科疼痛的评估及护理
- 【MOOC】概率论与数理统计-南京邮电大学 中国大学慕课MOOC答案
- 2024年度软件开发分包合同技术要求与交底2篇
- 湖南省邵阳市2023-2024学年高一上学期拔尖创新人才早期培养竞赛(初赛)数学试题 含解析
- 2024年执业药师资格继续教育定期考试题库附含答案
- 微短剧制作手册专业版
评论
0/150
提交评论