[2017年整理]结构体变量定义与输入输出

上传人:豆浆 文档编号:910052 上传时间:2017-05-21 格式:DOC 页数:9 大小:1.09MB
返回 下载 相关 举报
[2017年整理]结构体变量定义与输入输出_第1页
第1页 / 共9页
[2017年整理]结构体变量定义与输入输出_第2页
第2页 / 共9页
[2017年整理]结构体变量定义与输入输出_第3页
第3页 / 共9页
[2017年整理]结构体变量定义与输入输出_第4页
第4页 / 共9页
[2017年整理]结构体变量定义与输入输出_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《[2017年整理]结构体变量定义与输入输出》由会员分享,可在线阅读,更多相关《[2017年整理]结构体变量定义与输入输出(9页珍藏版)》请在金锄头文库上搜索。

1、 课 题 结构体变量的输入、输出 课 型 讲练授课班级 授课时数 2教学目标 1、掌握结构体类型的说明、结构体变量(数组)的定义及初始化2、掌握结构体变量成员的引用和初始化教学重点 结构体类型的说明、结构体变量的定义、结构体变量成员的引用教学难点 结构体数组的定义与使用学情分析 在此之前,学生已经学习了大部分的 C 语言知识,变量定义,数组等等,对于结构体这样一个数据类型尚属首次接触,但对其概念容易理解,对结构体类型数据的使用还会存在问题。教学效果教 后 记 引入:前面我们已经学习了一种构造数据类型:数组,使用数组可以带来很多方便。但是数组要求被处理数据必须有相同的类型。日常工作中经常需要处理

2、由不同数据类型组合起来的整体,对于这样的问题使用数组是不可能实现的,使用多个变量是可以描述,但这样做无法反映出同一事物的各个属性间的相互关系。为此,C 语言提供了一种全新的构造数据类型结构体类型(或者称为结构类型) 。如:新生入学登记表如下:学号 姓名 性别 年龄 住址 总分011 ZhuPing 女 19 Suzhou 498012 LiMing 男 20 Beijing 518新课:针对上述问题可以用 C 语言提供的全新数据类型 结构体来支持这种数据结构。结构体的定义及输入和输出一结构体类型定义struct 结构类型名 类型 成员名 1;类型 成员名 2;类型 成员名 3;类型 成员名 n

3、;例:struct studentint no;char name20;char sex;char address50;int score;一 个 对 象 由 多 个 数 据 描述 ;其中,struct 是关键字,作为定义结构体类型的标志,后面紧跟的是结构体名,由用户自行定义,花括号内是结构体的成员说明表,用来说明该结构体有哪些成员及它们的数据类型。花括号外的分号不能省略,它表示一种结构体类型说明的终止。动手练习 1:1、定义一个表示日期的结构体类型。 (成员包括:年、月、日)2、定义一个银行存款帐户的结构体类型,假设存款单的必要项目为帐号、姓名、日期和金额等基本信息。二结构体变量的定义(1)

4、间接定义法先定义结构类型,再定义结构体变量struct stu_info;struct stu_info stu1,stu2;(2)直接定义法struct stu_info stu1,stu2;(3)直接定义的简化struct stu1,stu2;注意点 结构体类型,结构体变量是不同的两个概念; 定义时先定义类型,再定义该类型的变量; 赋值、存取或运算时只针对变量进行,不对类型进行; 编译时,只对结构变量分配空间,对结构类型不分配空间;结构变量的存储空间是各成员类型占用存储空间的总和;三结构体变量的引用和初始化1、引用结构体变量的成员项。对结构体变量的使用,一般情况下不把它作为一个整体参加数据

5、处理,而是用结构体的各个成员项来参加各种运算和操作。引用结构体变量中的成员项的一般形式为:结构体变量名.成员项名例如,将日期 2011 年 5 月 28 日赋给 struct date 型变量 Date 可表示成:Date.year=2011;Date.month=5;Date.day=28;如果一个结构体成员本身又是一个结构体类型变量,则要通过两个“.”运算符来访问该结构成员的结构成员。下面例题中用到的zhang.Date.year、zhang.Date.month、zhang.Date.day 就是这种情况。例 1:下面给出一个应用结构体变量的完整例子struct date /*定义一个表

6、示日期的结构体类型*/int year;int month;int day;struct account /*定义一个客户的基本信息的结构体类型*/long id;char name20;struct date Date;float money;#include “stdio.h”main() struct account zhang,wang;/*用赋值语句给结构体变量 zhang 的各个成员项赋值*/zhang.id=1234567;zhang.name=“ zhang Hong”;zhang.Date.year=2002;zhang.Date.month=10;zhang.Date.da

7、y=19;zhang.money=21353.33;/*通过键盘输入结构体变量 wang 的各个成员项的值*/printf(“nThe wang id:”);scanf(“%ld”,&wang.id);printf(“nThe wang name:”);gets(wang.name);printf(“nThe wang Date:”);scanf(“%d%d%d”,& wang.Date.year,&wang.Date.month,&wang.Date.day);printf(“nThe wang money:”);scanf(“%f”,&wang.money);printf(“n id na

8、me year month day money ”);printf(“n-”);printf(“n%ld%-20s%5d%5d%5d%10.2f”, zhang.id, zhang.name, zhang.Date.year, zhang.Date.month, zhang.Date.day, zhang.money);printf(“n%ld%-20s%5d%5d%5d%10.2f”, wang.id, wang.name, wang.Date.year, wang.Date.month, wang.Date.day, wang.money);printf(“n-”);2、一个结构体变量作为

9、一个整体来引用C 语言允许两个相同类型的结构体变量之间相互赋值,这种结构体变量之间赋值的过程是一个结构体变量的成员项的值赋给另一个结构体变量的相应部分。如下面的赋值语句是合法的: wang=zhang;不允许用赋值语句将一组常量直接赋值给一个结构体变量。如下面的赋值语句是不合法的:wang=2345678,“Li Qiang Zhuang”,2003,5,1, 23456.98 ;3、结构体变量的初始化同其它数据类型一样,结构体类型变量在定义时也可以直接对其进行初始化。例如:在主程序中定义并直接初始化结构体变量。main()struct workerchar *name;char *addre

10、ss;int num3;w1=“Li Hua”,“Bei Jing”,95,89,93;printf(“%s,%s,%d,%d,%d”,w1.name,w1.address,w1.num0,w1.num1,w1.num2);这种结构体变量的初始化形式,只需在结构体变量后面加上赋值运算符,把成员项的对应值用一对花括号括起来,放在赋值运算符后面即可。例 2:假设为学生选课提供的 2 门课程信息分别存放在变量 a 和 b 中(信息包括课程编号、课程名称、学分、任课老师) 。编写程序,输出这 2 门课程的的所有信息。算法:分析过程:(略)程序:#include stdio.h#includestrin

11、g.hstruct course int num;char name20; int cre;char t20;void main() struct course a,b;a.num=1;strcpy(a.name,电路);strcpy(a.t,张三);a.cre=2;b.num=2;strcpy(b .name,C语言);strcpy(b.t,李四);b.cre=4;printf(课程编号 课程名称 学分 教师n);printf(%6d%10s%8d%10sn,a.num,a.name,a.cre,a.t);printf(%6d%10s%8d%10sn,b.num,b.name,b.cre,b

12、.t);方法二:#include stdio.h#includestring.hstruct course int num;char name20;int cre;char t20;void main() struct course a= 1,电路,2,张三;struct course b= 2,C语言,4,李四;printf(课程编号 课程名称 学分 教师n);printf(%6d%10s%8d%10sn,a.num,a.name,a.cre,a.t); printf(%6d%10s%8d%10sn,b.num,b.name,b.cre,b.t);例 3:假设为学生选课提供的 2 门课程信息

13、分别存放在变量 a 和 b 中(信息包括课程编号、课程名称、学分、任课老师) 。编写程序,将两个变量中的内容交换。算法:程序:#include stdio.h#includestring.hstruct course int num;char name20;int cre;char t20;void main() struct course temp;struct course a= 1,电路,2,张三;struct course b= 2,C语言,4,李四;printf(课程编号 课程名称 学分 教师n);printf(%6d%10s%8d%10sn,a.num,a.name,a.cre,a

14、.t);printf(%6d%10s%8d%10sn,b.num,b.name,b.cre,b.t);temp=a;a=b;b=temp;printf(交换后的内容n);printf(课程编号 课程名称 学分 教师n);printf(%6d%10s%8d%10sn,a.num,a.name,a.cre,a.t);printf(%6d%10s%8d%10sn,b.num,b.name,b.cre,b.t);从键盘上输入:#include stdio.h #includestring.hstruct course int num;char name20;int cre;char t20;void main() struct co

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

当前位置:首页 > 行业资料 > 其它行业文档

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