高级语言程序设计课件.ppt

上传人(卖家):晟晟文业 文档编号:4944320 上传时间:2023-01-27 格式:PPT 页数:38 大小:214.50KB
下载 相关 举报
高级语言程序设计课件.ppt_第1页
第1页 / 共38页
高级语言程序设计课件.ppt_第2页
第2页 / 共38页
高级语言程序设计课件.ppt_第3页
第3页 / 共38页
高级语言程序设计课件.ppt_第4页
第4页 / 共38页
高级语言程序设计课件.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、高级语言程序设计陈玉华第4章 数据组织v4.1 数组v4.2 字符串v4.3 结构体与共用体数组v一维数组v二维数组一维数组v定义方法:数据类型 数组名数组长度;v使用方法:通过使用下标来完成,即:数组名下标;v初始化原则:各数组元素初值依次写在 中,用逗号“,”隔开。二维数组v定义方法:数据类型 数组名行数列数;v使用方法:通过使用二级下标来完成,即 数组名行标列标v初始化:可以像一维数组一样依次赋值,也可以按行进行赋值。数组和数组元素以及变量的关系v一维数组及数组元素和变量的关系v二维数组及数组元素和变量的关系一维数组实例v斐波那契数列v排序v逆序v杨辉三角二维数组实例v杨辉三角v求鞍点v

2、魔方字符串v定义方法:char 数组名数组长度;v使用时请注意:1)字符数组能够存储的字符串的长度最长为数组长度-1,因为要留一个位置来存储字符串结束标志0。2)可以对字符数组(字符串)进行整体的输入和输出操作。常用的字符串操作函数v字符串的输入、输出函数:char string1000;方法1:字符串的整体输入输出 (1)用格式输入函数scanf()scanf(“%s”,string);(2)用字符串输入函数gets()gets(string);请注意这两种不同输入方法之间的差别。v方法2:依次输入字符v (1)用格式输入函数scanf()scanf(“%c”,&ch);while(ch)s

3、tringi=ch;scanf(“%c”,&ch);i+;v (2)用字符输入函数getchar();while(ch=getchar()stringi=ch;i+;v字符串的输出函数v方法1:整体输出 (1)用格式输出函数printf()。printf(“%s”,string);(2)用字符串输出函数puts()。puts(string);v方法2:单个字符依次输出:v(1)用格式输出函数printf()i=0;while(stringi)printf(“%c”,stringi);(2)用字符输出函数putchar()i=0;while(stringi)putchar(stringi);i+

4、;以下的这些函数都包含在库文件string.h中v求字符串长的函数:strlen()strlen(string);v字符串的比较strcmp()strcmp(str1,str2);v字符串的联接strcat()strcat(str1,str2);v字符串的复制strcpy()strcpy(str1,str2);v字符串定位strstr()strstr(str1,str2);字符串指针v定义方法:char *字符串指针变量名 char *str;v使用过程中要注意:v(1)指向字符串的指针是一个变量,因此可以让其指向任意一个字符串(字符数组);v(2)使用字符指针变量个其他指针变量都必须要注意的

5、一个问题是:使用之前必须初始化,可以在定义的时候对该变量初始化:char *str=“abcde”;(字符串)char*s1=string;(数组名)也可以在定义之后对该变量进行赋值:str=“abcde”;或者 s1=string;等都是合法的操作。这种方法不能作用在字符数组中,即不可以执行如下操作:char string1000;string=“abcde”;v(3)利用指针引用字符串第i个字符的过程与字符数组中引用第i个字符的方法一样:v如有如下定义:char string1000;char *str=string;则 stringi 和stri都可以引用数组string的第i个字符,因

6、此为了方便,许多有关字符串的处理函数中的参数都是使用字符串指针,而不是字符数组。详见例:用字符串指针完成对字符数组的输入和输出。二维字符数组v定义方法:char 数组名行数列数;char str415;v使用方法:虽然二维字符数组在定义的时候与一般的二维数组没有什么差别,但是在使用过程中就有很大的差别了,原因就在于我们对于字符数组关注的重点往往不是某个字符,而是字符串。因此在理解上述二维字符数组的定义的时候,我们不是去说该数组能够存放多少个字符,而是说:数组str可以存放4个字符串,每个字符串的长度不超过15-1。v例:输入10个姓名,对其按字母顺序排序并输出排序后的结果。v通过该例子我们可以

7、感觉到,其实二维字符数组NameMN可以看成是M个字符串,即可以看成长度为M的一维数组,只不过,该一维数组的每个元素都是一个字符串,而不是单个字符。v在上例的基础上,我们还可以引入字符串指针数组:v定义方法:v char *数组名长度(行数);v char *Name4;v该定义的意思是定义了4个字符串指针,即是说,每个数组元素Name0Name3都是一个字符串指针。结构体v问题:如果有如下学生的课程分数信息,如果需要对这些信息进行一个排名(姓名或者高数等各学科成绩),我们该如何做呢?学号姓名性别高数英语C语言101张三M809098102李四M828994103王五F927886104和六M

8、898178105周七F986991v一般而言,对于所碰到的问题首先要做的就一般而言,对于所碰到的问题首先要做的就是问题分析,问题分析包括如下几个方面:是问题分析,问题分析包括如下几个方面:A)数据的结构()数据的结构(如何描述一个学生的成绩信息如何描述一个学生的成绩信息)B)确定输入项()确定输入项(学生的个数学生的个数)C)确定期望的输入()确定期望的输入(排好序的结果排好序的结果)D)列出算法()列出算法(解决问题的办法解决问题的办法)v数据的结构:学号、姓名可以使用字符串类型,性别可以使用字符类型,3门课程的成绩可以使用整型也可以使用浮点型,因此我们可以定义不同的变量来存放这几种类型的

9、数据。例如:char Num510;/分别存储5个同学的学号char Name510;/分别存储5个同学的姓名char Sex5;/分别存储5个同学的性别int Math5;/分别存放5个同学的数学成绩int Eng5;/分别存放5个同学的数学成绩int Clang5;/分别存放5个同学的数学成绩v在C语言中,允许用户自己构造一种新的数据类型,它可以包含几种基本数据类型、数组、指针等,这种数据类型就是结构体。它相当于其他高级语言中的“记录”。结构体中元素称为“成员”,结构体类型名,即数据类型v结构体变量1.声明结构体类型struct 结构体名 成员列表;每个成员之间用分号隔开分号表示声明结束,

10、不能省略vstruct student char num10;char name10;char sex;int score3;v定义结构体变量:结构体类型名 变量名;struct student stu1,stu2;v除上述方法之外,还可以在定义结构体类型的时候直接定义变量:struct student char num10;char name10;char sex;int score3;stu1,stu2;v结构体变量的引用 结构体变量名.成员名例如:有一个学生,学号为10101,姓名为刘艳,性别女,三门课程达的成绩分别是98,90,88.如何完成定义和赋值呢?首先要定义一个结构体变量为:s

11、truct student S1;接下来,就是要对该结构体变量的各个分量进行赋值了:该结构体变量的各个分量分别为:学号:S1.num 姓名:S1.name性别:S1.sex各科成绩:S1.score0 ,S1.score1 ,S1.score2 v如何正确对这些分量赋值呢?v在引用这些分量的时候,可以将每个分量看做是变量,因此对这些分量的赋值就等同于对相应的变量赋值。vS1.num 和S1.name是字符数组(串)类型的,S1.sex是字符类型的变量,而S1.scorei(i=0,1,2)是整型的变量。v常用的方法有:1)定义变量的时候进行赋值(初始化)。2)先定义,然后再利用赋值语句赋值。v

12、先做一个小问题:计算并输出刘艳同学的三门课程的平均成绩。v如果要计算并输出若干个同学的三门课程的平均成绩又该如何做?。v如果要根据她们的平均成绩进行排名呢?又该如何做呢?结构体数组v结构体数组的定义:结构体类型名 数组名长度;v结构体数组的引用:1)结构体数组元素的引用:数组名下标2)结构体数组元素成员的引用:数组名下标.成员名每个结构体数组元素在使用的时候就当成一个结构体变量来看待。v结构体数组的初始化:struct student stu3=“10101”,“zhangyan”,f,89,90,99,“10102”,“liminghua”,m,80,77,90,“10103”,“zhaoy

13、anzi”,f,88,99,78;v和一般的数组一样,如果在初始化过程中,所有元素的值均被初始化,则元素个数可以不确定。学会使用typedef定义数据类型的别名v关键字typedef可以为已经存在的数据类型定义一个别名,目的是方便记忆和书写。v一般形式为:typedef 数据类型 别名;如:typedef float REAl;typedef struct student char num11;char name15;char sex;int score3;STUDENT;分号不能省v问题1:请试图描述一个复数,并实现两个复数的加法运算和乘法运算。v问题2:对一张扑克牌进行数据类型描述。v结构

14、体与指针1)结构体指针变量 定义方法:结构体类型 *变量名;与其他指针变量类似,可以通过一个指向某结构体变量的指针变量来访问(引用)该结构体变量,要注意的是此时的取成员运算符有两种方式:一种为“-”,称为“指向”。另一种用圆点运算符。例如:struct student s1;struct student *p;p=&s1;gets(p-num);gets((*p).name);(*p).sex=getchar();scanf(“%d”,&p-score0);2)结构体成员为指针变量结构体的成员表列中,各成员可以是各种已定义的数据类型的变量,还可以是指针变量。例如我们有如下的定义:struct

15、Date int year,month,day;struct person char name15;Date birth;该成员为Date数据类型的,即是一个结构体类型的变量。此外,在以后的学习中,特别是链表这一章中大家还会经常看到的就是类似于如下这种情况的结构体类型:struct node int data;struct node *next;q;此时,变量q包括两个成员,一个是整型变量q.data,另一个是struct node 型指针变量q.next,对于该成员,只能将一个struct node类型的变量的地址赋给它,例如:struct node p;q.next=&p;其含义用如下的图形描述更形象:datanextqdatanextpdata&pq共用体v在结构体中,每个结构体变量所占用的空间等于其所有成员所占用空间的和。v共用体的关键词为union,其定义与结构体类似,其取成员的方式也与结构体一样,不同点是就是多个成员使用同一片空间,.例如:union data int i;char ch;float f;可以通过函数sizeof()来验证它们所占用的空间大小。struct data int i;char ch;float f;v例4-14 用共用体取得整数的低字节和高字节。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(高级语言程序设计课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|