C程序设计与实践第五章(课件).ppt
文本预览下载声明
C程序设计与实践;目录
第5章 结构体
5.1 概述
5.2 结构体应用实例
5.3 结构体类型的定义
5.4 结构体变量和结构体数组的定义
5.5 结构体变量的使用方法
5.6 结构体应用
5.7 本章小结;第5章 结构体
5.1 概述
数组只能保存一批类型相同的数据,但在很多场合下,会有一组类型不同的信息,例如:关于学生的一组信息,包括学生姓名(字符串)、学号(字符串)、课程成绩(实数)等,无法用数组来表示。这里可以使用C语言提供的另外一种构造数据类型来实现,就是结构体类型,也称之为结构数据类型。;5.2 结构体应用实例
例5.1 图书销售清单打印,其中图书信息包括:书名、价格、册数等。
#include stdio.h
?
void main()
{
struct booktype { //说明结构类型struct booktype,包含三个成员
char name[100];//书名,字符串型
float price;//价格,实型
int number;//册数,整型
};;//分别定义结构体变量book1、book2、book3,并赋初值
struct booktype book1 = {”Learn C Programming”, 40.4, 20};
struct booktype book2 = {”c programming language”, 43.1, 15};
struct booktype book3 = {”History of C Programming Language ”, 37.8, 28};
//定义中间变量用于计算部分金额和总金额
float part1, part2, part3, total;
?printf(” 书名 单价 数量 金额\\n\\n”);
part1 = book1.price * book1.number;//结构变量字段值的应用,计算第一类书book1的金额;printf(”%-35s%6.2f%4d%7.2f\\n”, book1.name, book1.price, book1.number, part1);
part2 = book2.price * book2.number; //计算第一类书book2的金额
printf(”%-35s%6.2f%4d%7.2f\\n”, book2.name, book2.price, book2.number, part2);
part3 = book3.price * book3.number; //计算第一类书book3的金额
printf(”%-35s%6.2f%4d%7.2f\\n”, book3.name, book3.price, book3.number, part3);
total = part1 + part2 + part3; //计算三类书的总金额
printf(”\\ntotal %53.2f\\n”, total);;}
程序输出结果:
图5-1 例5.1程序运行结果
程序中定义了图书的信息,包括:字符数组类型的书名name、实数类型的价格price、整数类型的册数number等三个字段,涉及三种数据类型。在这个程序中,我们看到了结构类型booktype的定义(struct booktype { …};部分),结构类型booktype的结构体变量book1.book2、book3的定义并赋初值;如:(struct booktype book1={”Learn C Programming”,40.4,20};),结构体变量字段的引用如:(part1=book1.price*book1.number;)。
本程序中共有三类书的信息,制表输出每一类书的书名、单价、数量、金额,最后输出所有书的总价格。;5.3 结构体类型的定义
结构体类型是一种新的数据类型,与基本类型不同的是,结构体类型本身需要定义,而基本类型是C语言已经定义过的,不需要程序设计人员来定义。结构体类型的定义包含如下信息:结构体类型名字(可以没有)、结构体全部成员的名字及其类型,结构体的成员有时也称之为字段,它们的类型可以相同也可以不同。结构体类型定义以后,就可以使用结构体类型名字来定义该结构体类型的变量了。
结构体类型定义的一般形式:
struct 结构体类型名
{
成员列表;;};
例如结构体“图书”类型的定义如下:
struct booktype {
char name[100];//书名,字符数组类型
float price;//单价,实数类型
int number;//数量,整数类型
};
结构体成员的类型可以是简单类型,可以是数组类型,还可以是其他的结构体类型,也就是说,结构体类型的定义可
显示全部