- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计——结构与自定义类型
林大 经管学院 瞿华
结构与自定义类型
结构与自定义类型
应用:数据IO与转换
应用:统计与数据筛选
应用:排序与查找
结构与指针
应用:链表
2
结构与自定义类型
结构与自定义类型
应用:数据IO与转换
应用:统计与数据筛选
应用:排序与查找
结构与指针
应用:链表
3
一、结构与自定义类型
假设我们要编写一个学生成绩管理系统。对于每一个学生,我们都需要记录他的学号、姓名、班级、成绩等信息。用什么数据结构合适呢?
显然,最好将属于同一个学生的信息组织到一个数据单元中,是最好的。
C语言中用结构(structure)来将多项数据组织到同一个逻辑实体(变量)中
结构实际上是创建自定义数据类型的一种方法
例如, 下面定义了一个名为StudentInfo的结构数据类型:
struct StudentInfo{
int score;
char name[100];
int studentNo;
} ;
每个StudentInfo类型的数据中包含三个子数据项:
score、name和studentNo;
4
1.1 结构定义与使用
可以用它来声明变量、指针和数组:
struct StudentInfo si;
struct StudentInfo sis[20];
struct StudentInfo *psi;
注意:在声明结构变量时,struct关键字不能省略!
可以使用’.’运算符来访问结构变量中的子数据项(字段):
si.score=20;
strcpy(si.name, “张三”);
sis[5].score=80;
scanf(%d %d,si.score, sis[3].score);
结构指针的语法我们后面再讲。
struct StudentInfo{
int score;
char name[100];
int studentNo;
} ;
5
1.1 结构定义与使用
由于直接使用结构类型定义变量必须要在结构名前加struct关键字,很麻烦
所以在定义结构类型时,通常和typedef操作连用,为类型定义一个别名,以简化使用
typedef struct {
int score;
char name[100];
int studentNo;
} StudentInfo;
后面我们都会这样来定义结构类型
6
1.2 示例:学生成绩
例1-1: 请编写程序,读取并显示学生的成绩,具体要求如下:
首先读入用户键盘输入的班上学生人数
然后,依次读入用户键盘输入的每个学生的学号、姓名和成绩
最后,将其以表格的形式输出。
7
1.2 示例:学生成绩
表头
每行内容
8
1.2 示例:学生成绩
程序见1-1score.c
分析:
首先,我们需要一个自定义的结构类型,以保存每个学生的成绩信息。
该结构需要三个字段,分别用于保存学号、姓名和成绩
9
1.2 示例:学生成绩
分析(续):
我们需要一个Student_Score类型的数组ss来保存所有学生的成绩信息,还需要一个配套的变量n来记录班上学生人数
输入部分,只需要读入n,然后遍历ss[0]..ss[n-1],依次读入学生信息即可。
关键:如何用scanf函数读取用户输入的信息,并将其保存到结构类型的数组元素的指定字段中?
输出部分,只需要遍历ss[0]..ss[n-1]并输出对应元素各字段的值即可。
如何访问结构类型数组元素的字段
关键:如何产生表头和行与行之间的分隔。
10
1.3 示例:自带元素个数的数组
由于数组本身并不包含数组中实际元素个数的信息,所以除字符数组(字符串)外,我们在使用其他数组时,都需要有一个额外的变量来记录数组中的元素个数。
我们可以定义一个这样的一个结构,两个字段分别用于保存数组和数组中的元素个数
11
1.3 示例:自带元素个数的数组
例1-2:编程,统计本月在外吃饭的总金额。要求:
用户先输入在外吃饭的次数
然后用户依次输入每次吃饭的金额
全部输入完毕后,统计总金额
分析:程序需要做四件事
输入吃饭次数,保存
依次输入每次金额,保存在数组中
遍历数组,统计总金额
输出总金额
程序见1-2.money.c
12
1.4* 平面上的点坐标
我们知道,在平面直角坐标系中,可以用一对实数(x,y)表示任意一个点的位置,即点的坐标。
因此,我们可以定义这样的一个结构,来保存平面中的点的坐标:
13
1.4* 平面上的点坐标
例1-3:绘制函数y=200sin(x/50)在区间(-400,400)上的图像
分析:
我们可以从x=-400开始,一直到x=400,在函数曲线上找出若干个x坐标间隔相等的点,依次计算出它们的坐标,并保存到Point类型的数组中
应如何产生每个点的x坐标?
然后从
您可能关注的文档
最近下载
- 2024年中国人工智能行业白皮书.docx
- 大学生国家安全教育读本.docx VIP
- 欧洲规范-NF P94-011-中文.pdf
- 0823S11026-《IP形象设计》-2023版人才培养方案课程教学大纲.docx VIP
- 专题16 【培优小题狂练】阅读理解“标题概括2”题(考情+技法+真题+模拟)-2024年新高考英语二轮复习 原卷版.docx
- 【精心整理】人教初中数知识点总结+公式(完整版).docx
- 三年级上册脱式计算题100道.docx
- 专题15 【培优小题狂练】阅读理解“标题概括1”题(考情+技法+真题+模拟)-2024年新高考英语二轮复习 原卷版.docx
- 2024年河南林业职业学院单招职业技能测试题库(历年真题).docx VIP
- 雅佳电吹管说明书.pdf VIP
文档评论(0)