幻灯片-C语言程序设计视频教程--第7章课件

上传人:我*** 文档编号:145854195 上传时间:2020-09-23 格式:PPT 页数:36 大小:78KB
返回 下载 相关 举报
幻灯片-C语言程序设计视频教程--第7章课件_第1页
第1页 / 共36页
幻灯片-C语言程序设计视频教程--第7章课件_第2页
第2页 / 共36页
幻灯片-C语言程序设计视频教程--第7章课件_第3页
第3页 / 共36页
幻灯片-C语言程序设计视频教程--第7章课件_第4页
第4页 / 共36页
幻灯片-C语言程序设计视频教程--第7章课件_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《幻灯片-C语言程序设计视频教程--第7章课件》由会员分享,可在线阅读,更多相关《幻灯片-C语言程序设计视频教程--第7章课件(36页珍藏版)》请在金锄头文库上搜索。

1、C程序设计,第7章 数组,前几章使用的都是属于基本类型(整型、字符型、实型)的数据,C语言还提供了构造类型的数据,它们有数组类型、结构体类型和共用体类型。构造类型数据是由基本类型数据按一定规则组成的,因此它们又被称为“导出类型”。 数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来惟一地确定数组中的元素。,7.1 一维数组的定义和引用7.1.1 一维数组的定义,一维数组的定义方式为 类型说明符 数组名常量表达式; 例如:int a10; 说明: (1)数组名的命名规则和变量名相同,遵循标识符命名规则。 (2)在定义数组时,需要指定数组中元素的个数,方括号中

2、的常量表达式用来表示元素的个数,即数组长度。 (3)常量表达式中可以包括常量和符号常量,不能包含变量。C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。,7.1.2 一维数组元素的引用,数组必须先定义,然后使用。C语言规定只能逐个引用数组元素而不能一次引用整个数组。 数组元素的表示形式为 数组名下标 下标可以是整型常量或整型表达式。,例7.1数组元素的引用,#include void main() int i, a10; for(i=0; i=0; i-) printf(“%d”, ai); printf(“n”); ,7.1.3 一维数组的初始化,对数组元素的初

3、始化可以用以下方式实现 (1)在定义数组时对数组元素赋予初值。 (2)可以只给一部分元素赋值。 (3)如果想使一个数组中全部元素值为0,可以写成: int a2=0,0或int a2=0;。 (4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。,7.1.4 一维数组程序举例,例7.2用数组来处理求Fibonacci数列问题 #include void main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(“n”); printf(“%12d”

4、,fi); ,例7.3用起泡法对10个数排序(由小到大),起泡法的思路:将相邻两个数比较,将小的调到前头,7.2 二维数组的定义和引用7.2.1 二维数组的定义,二维数组定义的形式为 类型说明符 数组名常量表达式常量表达式; 例如:float a34, b510; 二维数组可被看作是一种特殊的一维数组:它的元素又是一个一维数组。 二维数组中元素排列的顺序是按行存放的。即在内存中先顺序存放第一行的元素,再存放第二行的元素。 C语言允许使用多维数组。,7.2.2 二维数组的引用,二维数组元素的表示形式为 数组名下标下标 例如a23。下标可以是整型表达式,如a2-12*2-1。 数组元素可以出现在表

5、达式中,也可以被赋值。例如:b12=a23/2 下标值应在已定义的数组大小的范围内。常出现的错误是: int a34; a34=3;,7.2.3 二维数组的初始化,可以用下面的方法对二维数组初始化 (1)分行给二维数组赋初值。 (2)可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。 (3)可以对部分元素赋初值。 (4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。,7.2.4 二维数组程序举例,例7.4将一个二维数组行和列的元素互换,存到另一个二维数组中。例如:,例7.5有一个34的矩阵,要求编程求出其中值最大的那个元

6、素的值,以及其所在的行号和列号,7.3 字符数组,用来存放字符数据的数组是字符数组。字符数组中的一个元素存放一个字符。,7.3.1 字符数组的定义,字符数组定义的一般形式为 char 数组名常量表达式常量表达式 由于字符型与整型是相互通用的,因此也可以定义一个整型数组,用它存放字符数据。 int c10; c0=a;,7.3.2 字符数组的初始化,对字符数组初始化,最容易理解的方式是逐个字符赋给数组中各元素。 如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。 如果花括号中提供的初值个数大于数组长度,则按语法错误处理。 如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些

7、元素,其余的元素自动定为空字符(即0)。 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。,7.3.3 字符数组的引用,可以引用字符数组中的一个元素,得到一个字符。 例7.6输出一个字符串 #include void main() char c10=I,a,m, ,a, ,b,o,y; int i; for(i=0; i10; i+) printf(“%c”, ci); printf(“n”); ,例7.7输出一个菱形图,#include void main() char diamond5= , ,*, ,*, ,*,*, , , ,*,

8、,*, ,*, , ,*; int i, j; for(i=0; i5; i+) for(j=0; j5; j+) printf(“%c”, diamondij); printf(“n”); ,7.3.4 字符串和字符串结束标志,在C语言中,是将字符串作为字符数组来处理的。字符串中的字符是逐个存放到数组元素中的。在实际工作中,人们关心的往往是字符串的有效长度而不是字符数组的长度。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符0作为标志。 系统对字符串常量也自动加一个0作为结束符。字符串作为一维数组存放在内存中。,对C语言处理字符串的方法有以上的了解后,再对字符数组初始化的

9、方法补充一种方法,即用字符串常量来使字符数组初始化。,7.3.5 字符数组的输入输出,字符数组的输入输出可以有两种方法: (1)逐个字符输入输出。用格式符“%c”输入或输出一个字符。 (2)将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。,注意:,(1)输出字符不包括结束符0。 (2)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。 (3)如果数组长度大于字符串的实际长度,也只输出到遇0结束。 (4)如果一个字符数组中包含一个以上0,则遇第一个0时输出就结束。 (5)可以用scanf函数输入一个字符串。 (6)按字符数组名找到其数

10、组起始地址,然后逐个输出其中的字符,直到遇0为止。,7.3.6 字符串处理函数,在C函数库中提供了一些用来处理字符串的函数,使用方便。几乎所有版本的C语言编辑系统都提供这些函数。,1、puts函数,函数原型: int puts(char * str); 功能: 把str指向的字符串输出到标准输出设备,将0转换为换行符n 返回值: 若执行成功,返回非负值,否则,返回EOF,2、gets函数,函数原型: char * gets(char * str); 功能: 从终端输入一个字符串到字符数组str 返回值: 若执行成功,返回字符数组的起始地址,否则,返回NULL,3、strcat函数,函数原型:

11、char * strcat(char * str1, char * str2); 功能: 把字符串str2接到str1后面,str1最后面的0被取消 返回值:str1,4、strcpy,函数原型: char * strcpy(char * str1, char * str2); 功能: 把str2指向的字符串复制到str1中去 返回值: str1,5、strcmp函数,函数原型: int strcmp(char * str1, char * str2); 功能: 比较两个字符串str1、str2 返回值:str1str2,返回正数,6、strlen函数,函数原型: unsigned int s

12、trlen(char * str); 功能: 统计字符串str中字符的个数(不包括终止符0) 返回值: 返回字符个数,7、strlwr函数,函数原型: char * strlwr(char * str); 功能: 将字符串str中大写字符换成小写字母 返回值: str,8、strupr函数,函数原型: char * strupr(char * str); 功能: 将字符串str中小写字符换成大写字母 返回值: str,7.3.7 字符数组应用举例,例7.8输入一行字符,统计其中有多少个单词,单词之间用空格分隔开,例7.9有3个字符串,要求找出其中最大者,#include #include vo

13、id main() char string20; char str320; int i; for(i=0;i0) strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0) strcpy(string,str2); printf(“nthe largest string is:n%sn”, string); ,习题,7.3 求一个33的整型矩阵对角线元素之和。 7.4 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 7.5 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,

14、4,1。要求改为1,4,5,6,8。 7.6 输出以下的杨辉三角形(要求输出10行) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 .,7.11 输出以下图案: * * * * * * * * * * * * * * * * * * * * * * * * *,7.13 编一程序,将两个字符串连接起来,不要用strcat函数。 7.14 编一个程序,将两个字符串s1和s2比较,若s1s2,输出一个正数;若s1=s2,输出0;若s1s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。 7.15 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,0也要复制过去。0后面的字符不复制。,

展开阅读全文
相关资源
相关搜索

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

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