级C语言课堂上机课件第8讲结构体新

上传人:E**** 文档编号:91093515 上传时间:2019-06-21 格式:PPT 页数:28 大小:981.50KB
返回 下载 相关 举报
级C语言课堂上机课件第8讲结构体新_第1页
第1页 / 共28页
级C语言课堂上机课件第8讲结构体新_第2页
第2页 / 共28页
级C语言课堂上机课件第8讲结构体新_第3页
第3页 / 共28页
级C语言课堂上机课件第8讲结构体新_第4页
第4页 / 共28页
级C语言课堂上机课件第8讲结构体新_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《级C语言课堂上机课件第8讲结构体新》由会员分享,可在线阅读,更多相关《级C语言课堂上机课件第8讲结构体新(28页珍藏版)》请在金锄头文库上搜索。

1、2019/6/21,1,二维数组应用举例(续),【作业】有一个NM矩阵,编程序求出其中最大的那个元素的值及其所在的行、列位置。,查找最大元素,2019/6/21,2,#define N 2 #define M 3 main( ) int i,j,row,colum,max,aNM; /* 输入数据 */ max=a00; row=colum=0; for (i=0; imax) max=aij; row=i; colum=j; /* 输出数据 */ ,程序运行情况如下: 34 56 12 12 67 43 max=67,row=1,colum=1,程序运行时,从键盘输入:01,main( )

2、char k; int i; for(i=1;i3;i+) scanf(“%c“, ,2019/6/21,3,2019/6/21,4,【补充1】冒泡法排序(从小到大)。,以6个数:3、7、5、6、8、0为例。,第一趟排序情况如下: 3 7 5 6 8 0 第一次 3和7比较,不交换 3 7 5 6 8 0 第二次 7和5比较,交换 3 5 7 6 8 0 第三次 7和6比较,交换 3 5 6 7 8 0 第四次 7和8比较,不交换 3 5 6 7 8 0 第五次 8和0比较,交换 3 5 6 7 0 8 在第一趟排序中,6个数比较了5次,把6个数中的最大数8排在最后。,2019/6/21,5,

3、冒泡法排序 (续),第二趟排序情况如下: 3 5 6 7 0 8 第一次 3和5比较,不交换 3 5 6 7 0 8 第二次 5和6比较,不交换 3 5 6 7 0 8 第三次 6和7比较,不交换 3 5 6 7 0 8 第四次 7和0比较,交换 3 5 6 0 7 8 在第二趟排序中,最大数8不用参加比较,其余的5个数比较了4次,把其中的最大数7排在最后,排出7 8。 以此类推: 第三趟比较3次,排出 6 7 8 第四趟比较2次,排出 5 6 7 8 第五趟比较1次,排出 3 5 6 7 8 最后还剩下1个数0,不需再比较,得到排序结果: 0 3 5 6 7 8,2019/6/21,6,冒泡

4、法排序 (续),从上述过程可以看到:n个数要比较n-1趟,而在第j趟比较中,要进行n-j次两两比较。,2019/6/21,7,#define N 6 main( ) int aN; int i,j,t; for (i=0; iai+1) t=ai;ai=ai+1;ai+1=t; printf(“The sorted numbers: n“); ,程序运行情况如下: 3 7 5 6 8 0 0 3 5 6 7 8,2019/6/21,8,以6个数:34、56、12、99、39、44为例。 思路: 第一趟:将第一个数依次和后面的数比较,如果后面的某数小于第一个数,则两个数交换,比较结束后,第一个数

5、则是最小的数。 第二趟:将第二个数依次和后面的数比较,如果后面的某数小于第二个数,则两个数交换,比较结束后,第二个数则是次小的数; 。,【补充2】选择法排序(从小到大)。,2019/6/21,9,选择法排序(续),2019/6/21,10,#define N 5 main( ) int aN; int i,j,t; for (i=0; iai) t=aj;aj=ai;ai=t; printf(“The sorted numbers: n“); ,程序运行情况如下: 96 78 65 86 40 The sorted numbers: 40 65 78 86 96,2019/6/21,11,练习

6、,排序 2025/2040/2102 2077绝对值排序 2029学生成绩排序 输入3位同学的姓名(姓名的长度最长的不大于19),及成绩,找出第一名同学,并显示其姓名及成绩。 输入3位同学的姓名(姓名的长度最长的不大于19),及成绩,按从大到小的顺序输出 结构体排序 2043,2029,Sample Input,6 GongJing 80 LiuNa 90 ZhouLi 86 ChenHai 95 SunYan 76 WangHong 98,Sample Output,name:WangHong score:98 name:ChenHai score:95 name:LiuNa score:9

7、0 name:ZhouLi score:86 name:GongJing score:80 name:SunYan score:76,2019/6/21,12,2019/6/21,13,结构体,赵红,2019/6/21,14,一个学生的信息有学号、姓名、性别、年龄、住址、成绩等。 一本图书的信息有分类编号、书名、作者、出版社、出版日期、价格、库存量等。 如何描述这些类型不同的相关数据?,结构体与结构体类型的定义,?,信息管理,结构体一种构造类型数据 结构体由若干不同类型的数据项组成, 构成结构体的各个数据项称为结构体成员。,第7章 结构体P162,2019/6/21,15,struct 结构体

8、名 数据类型1 成员名1; 数据类型2 成员名2; 数据类型n 成员名n; ;,结构体,结构体与结构体类型的定义,结构体类型定义的一般形式:,struct为关键字; 结构体名是用户定义的类型标识。 中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型。,2019/6/21,16,例如学生类型的定义: struct student char num8; /* 学号是字符数组类型 */ char name30; /* 姓名是字符数组类型 */ char sex; /* 性别是字符型 */ int age; /* 年龄是整型 */ char addr60; /* 住址是字符数组类型

9、 */ int score6; /* 成绩是整型数组类型 */ ;,结构体,结构体与结构体类型的定义,2019/6/21,17,结构体,结构体类型与变量的说明,类型与变量是不同的概念。 应先定义一个结构体类型,而后再定义结构体变量。 系统对类型不分配空间,仅对变量分配空间。 只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。,成员也可以是结构变量。 P167,2019/6/21,18,struct date int year,month,day; struct student char num8; char name30; char sex; struct date birthda

10、y; /* 成员为结构体类型 */ char addr60; int score6; ;,用sizeof运算符计算结构体变量所占内存空间 sizeof(date),2019/6/21,19,“.”是分量运算符,运算级别最高。,结构体,结构体变量成员的引用,结构体变量成员引用的一般形式: 结构体变量名.成员名,结构体变量a的各成员可分别表示为a.num、a.name、a.sex、a.birthday、a.score,struct date int year, month, day; struct student char num8, name20, sex; struct date birthd

11、ay; float score; ; struct student a;,a.birthday.year a.birthday.month a.birthday.day,2019/6/21,20,结构体P163,结构体变量的定义与初始化,在定义结构体类型的同时定义变量,例如: struct student char num8,name20,sex; int age; float score; ; struct student st1,st30;,struct 结构体名 成员定义表; ; 结构体名 变量名表;,2019/6/21,21,结构体,结构体变量的赋值运算,同类型结构体变量之间的赋值运算

12、,结构体变量之间进行赋值时,系统将按成员一一对应赋值。,struct date int year, month, day; struct student char num8, name20, sex; struct date birthday; float score; ; struct date a=“9606011“,“Li ming“,M,1977,12,9,83,b,c; c = a;,2019/6/21,22,结构体排序,Input 输入整数N,代表下面有N行测试数据(N20),接下来的N行,每行均有一位同学的学号(长度不超过10位),姓名(长度不超过20位),性别(M/F),语文成

13、绩(整数),数学成绩(整数)。 Output 输出排序后的结果(降序),并输出名次,学号,姓名,性别,语文成绩(整数),数学成绩(整数),平均分(保留一位小数),补充,定义结构体 当字符与数字同时接收如何处理 数字在前字符在后 字符在前数字在后 3 2 输出所有女生的信息,2019/6/21,23,2019/6/21,24,结构体排序,Sample Input 2 0001 zhengqiang M 83 54 0002 lilinging F 89 67 Sample Output 1 0002 lilinging F 89 67 78.0 2 0001 zhengqiang M 83 54

14、 68.5,结构体数组输入输出,Problem Description 编写一个函数print,输出一个学生的数据记录,一共有n个学生的数据记录,每个记录包括num、name、score3,用主函数输入这些记录,用print函数输出这些记录。 Input 输入文件首先包含一个整数n,表示有n个学生,然后是n行学生记录,一行代表一个学生。 Output 对于每个学生输出他的相关记录,每个信息之间后面带两个空格,一个学生信息输出一行,如下。,2019/6/21,25,结构体数组输入输出,Sample Input 4 101 Li 90 79 89 102 Ma 97 90 68 103 Wang

15、77 70 78 104 Sun 67 89 56 Sample Output No.:101 name:Li score:90 79 89 No.:102 name:Ma score:97 90 68 No.:103 name:Wang score:77 70 78 No.:104 name:Sun score:67 89 56,2019/6/21,26,参考代码,#include struct stu char num6; char name20; int score3; ; void print(struct stu s,int n) int i,j; for(i=0;in;i+) printf(“No.:%s name:%s score:“,si.num,si.name); for(j=0;j3;j+) printf(“%d “,si.scorej); printf(“n“); int main() int n,i,j; struct stu s100; scanf(“%d“, ,2019/6/21,27,复习,2019/6/21,28,

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

当前位置:首页 > 高等教育 > 大学课件

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