资源描述:
《C语言程序设计基础 教学课件 作者 马华 李玉娟 第8章 结构体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8.1学生信息管理8.2学生成绩管理8.3单链表基本操作8.4综合应用第8章结构体学习目标掌握结构体的概念和特点;熟练定义结构体数据类型;掌握结构体变量的定义、引用及初始化方法;了解结构体数组的特点;能使用结构体数组解决简单的问题;了解结构体指针和链表的概念、特点及链表的基本操作。重点难点重点:结构体的定义,结构体变量的定义、初始化及引用,结构体数组的特点及使用方法。难点:结构体指针和链表的概念、特点及链表的基本操作的实现。8.1学生信息管理8.1.1案例描述1.提出问题假设学生的基本信息包括学号、
2、姓名、出生日期、所属院部系、所学专业、各门课程成绩,如何将学生基本信息保存起来呢?要求:通过键盘输入1名学生的基本信息,包括学号、姓名、出生日期、所属院部系、所学专业、各门课程成绩,并在屏幕上输出。2.涉及的知识点数据类型选择——结构体。8.1.2结构体与结构体变量1.结构体结构体是一个可以包含不同数据类型的一个结构,它是一种可以由用户自己定义的数据类型,除了结构体变量需要定义后才能使用外,结构体本身也需要定义。结构体由若干“成员”组成。每个成员可以是一个基本的数据类型,也可以是一个已经定义的构造类
3、型。结构体定义的一般形式struct结构体名{类型1成员1;类型2成员2;......类型n成员n;};案例中学生基本信息类型定义学生基本信息类型定义可用图8-2描述:structdate{//日期类型定义intyear;intmonth;intday;};structstudent{//学生基本信息类型定义intnum;//学号charname[24];//姓名structdatebirthday;//出生日期chardepartment[48];//院部系charmajor[32];//专业do
4、ublescore[4];//四名课程成绩doublesum;//总成绩doubleaverage;//平均成绩};结构体与数组的区别:第一,结构体可以在一个结构中声明不同数据类型,而数组不能;第二,相同结构体的结构体变量可以相互赋值,而数组不能。2.结构体变量(1)结构体变量的定义格式:struct结构体名变量1,变量2,…变量n;表示学生基本信息的变量定义:structstudentstudent1,student2;与其他数据类型的变量一样,一旦定义了变量后,系统就会为这个变量分配相应的存储空
5、间。说明:结构体类型、变量是不同的概念①在定义时一般先定义一个结构体类型,然后定义该类型的变量;②赋值、存取或运算只能对变量进行操作,不能对类型进行以上操作;③编译时只对变量分配空间,对类型不分配空间。(2)结构体变量的引用引用结构体变量中的一个成员格式:结构体变量名.成员名说明:①“.”运算符是成员运算符。例如:student1.num=11301;gets(student1.name);②成员本身又是结构体类型时的子成员的访问(使用成员运算符逐级访问)。例如:scanf("%d",&studen
6、t1.birthday.year);③同一种类型的结构体变量之间可以直接赋值(整体赋值,成员逐个依次赋值)。例如:student2=student1;④不允许将一个结构体变量整体输入/输出例如:scanf(“%...”,&student1);printf(“%...”,student1);都是错误的。(3)结构体变量的初始化前面定义的结构体类型的变量student1我们可以对其做如下初始化:structstudentstudent1={1,”张强”,{1990,2,10},”信息工程学院”,”计算机
7、”,{76,87,91,90}},student2;温馨提示:此处进行初始化可以只对变量的一部分成员赋初值,如果是中间成员未赋初值应使用“,”分隔,如下所示:structstudentstudent1={1,”张强”,{1990,2,10},,”计算机”,{76,,91,90}},student2;8.1.3程序解析温馨提示:(1)使用输入函数时最好结合输出函数,起到一个屏幕提示作用,给读者提供一个友好的运行界面。(2)如果前面已经输入了数据,接下来要输入字符数组成员值,在输入之前要先使用语句sca
8、nf("%c");接收一下空白字符,从而保证字符数组成员值接收正确。(3)输入double型变量值时,需要使用格式符"%lf",如源代码中scanf("%lf%lf%lf%lf",&stu.score[0],&stu.score[1],&stu.score[2],&stu.score[3]);。(4)输出数据时,每输出一个成员值最好使用"t"或""进行间隔(具体使用哪个转义字符视情况而定),保证输出结果一目了然。8.2学生成绩管理8.2.1案例描述1.提出问题通