数据结构与算法结构体_第1页
数据结构与算法结构体_第2页
数据结构与算法结构体_第3页
数据结构与算法结构体_第4页
数据结构与算法结构体_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构与算法结构体第一页,共四十二页,编辑于2023年,星期六1结构体类型的声明

一个学生的数据实体可能要包含多项数据信息:学号、姓名、性别、年龄、成绩、家庭地址处理的数据对象包含不同属性的数据信息第二页,共四十二页,编辑于2023年,星期六1结构体类型的声明

一个学生的数据实体可能要包含多项数据信息:学号、姓名、性别、年龄、成绩、家庭地址因所包含的成分类型不同,不能用数组来表示,也不便拆成多个独立的单个数据项,因为这样会失去实体的整体性第三页,共四十二页,编辑于2023年,星期六1结构体类型的声明

一个学生的数据实体可能要包含多项数据信息:学号、姓名、性别、年龄、成绩、家庭地址因所包含的成分类型不同,不能用数组来表示,也不便拆成多个独立的单个数据项,因为这样会失去实体的整体性在C语言中,可用结构体类型描述第四页,共四十二页,编辑于2023年,星期六【实训1】声明一个存储学生信息(学号、姓名、性别、成绩)的结构体类型。第五页,共四十二页,编辑于2023年,星期六声明结构体类型的步骤:(1)指定结构体类型名。第六页,共四十二页,编辑于2023年,星期六声明结构体类型的步骤:(1)指定结构体类型名。structStdType{

};第七页,共四十二页,编辑于2023年,星期六声明结构体类型的步骤:(1)指定结构体类型名。(2)确定结构体类型成员及其数据类型。structStdType

{

};第八页,共四十二页,编辑于2023年,星期六声明结构体类型的步骤:(1)指定结构体类型名。(2)确定结构体类型成员及其数据类型。structStdType

{intnum;

charname[20]; charsex; floatscore;

};第九页,共四十二页,编辑于2023年,星期六声明结构体类型的步骤:(1)指定结构体类型名。(2)确定结构体类型成员及其数据类型。声明结构体类型的代码:structStdType

{intnum; charname[20]; charsex; floatscore;

};第十页,共四十二页,编辑于2023年,星期六声明一个结构体类型的一般格式struct

结构体类型名{ 类型标识符成员名列表 类型标识符成员名列表

……

类型标识符成员名列表};

第十一页,共四十二页,编辑于2023年,星期六2结构体变量的定义和访问

【实训2】声明一个结构体类型,并输入和输出学生的信息(学号、姓名、性别、成绩)。第十二页,共四十二页,编辑于2023年,星期六编程步骤(1)声明结构体类型。(2)定义结构体变量。(3)在屏幕上显示提示输入信息。(4)输入一个学生的信息(学号、姓名、性别、成绩)。(5)输出学生的信息。第十三页,共四十二页,编辑于2023年,星期六程序代码main(){ structStdType {intnum;charname[20];charsex;floatscore;};structStdTypestu;第十四页,共四十二页,编辑于2023年,星期六程序代码

printf("Pleasestudentinfo:");

scanf("%d",&stu.num); scanf("%s",);scanf("%c",&stu.sex);scanf("%f",&stu.score);

printf("Thestudentinfo:\n");printf("%d,%s,%c,%.2f.\n",

stu.num,,stu.sex,stu.score);}第十五页,共四十二页,编辑于2023年,星期六【实训3】编写程序,输出已有的学生信息(学号、姓名、性别、成绩)。编程步骤:(1)声明结构体类型。(2)定义结构体类型的两个变量stu1、stu2,并用初始化方法存储两个学生的信息到stu1,stu2。(3)输出两个学生的信息。第十六页,共四十二页,编辑于2023年,星期六程序代码main(){ structStdType {intnum;charname[15];charsex;floatscore;}stu1={102,"ZhangPing",'M',78.95},stu2={103,"HeFang",'F',92.5};

printf("%d,%-15s,%c,%.2f\n",stu1.num,,stu1.sex,stu1.score);printf("%d,%-15s,%c,%.2f\n",stu2.num,,stu2.sex,stu2.score);}第十七页,共四十二页,编辑于2023年,星期六【实训4】定义一个结构体变量,求这个变量所占的内存大小(即这个结构体类型数据的长度)。编程步骤:(1)定义一个结构体变量stu。(2)输出结构体变量的数据长度。第十八页,共四十二页,编辑于2023年,星期六程序代码main(){struct{intnum;charname[20];charsex;floatscore;}stu={1001,"wangping",'M',98.50};printf("%d+%d+%d+%d=%d\n",sizeof(stu.num),sizeof(),sizeof(stu.sex),sizeof(stu.score),sizeof(stu));}stunumsexscore

1001wangpingM98.50name4个字节20个字节1个字节4个字节没有结构体类型名第十九页,共四十二页,编辑于2023年,星期六【实训5】编写程序,在已有的学生信息(学号、姓名、性别、年龄、成绩)中,每位学生年龄增加一岁,并计算平均成绩。编程步骤:(1)声明结构体类型。(2)定义结构体类型的两个变量。(3)用初始化方法存储学生信息。(4)每个学生年龄加1。(5)计算平均成绩。(6)输出更新后的学生信息。(7)输出平均成绩。第二十页,共四十二页,编辑于2023年,星期六程序代码main(){ structStdType{intnum;charname[15];charsex;intage;floatscore;}stu1={102,"ZhangPing",'M',23,78.95}, stu2={103,"HeFang",'F',22,92.5};

floataver=0.0;第二十一页,共四十二页,编辑于2023年,星期六程序代码

stu1.age++;stu2.age++;aver=(stu1.score+stu2.score)/2;printf("%d,%-15s,%c,%d,%.2f\n", stu1.num,,stu1.sex, stu1.age,stu1.score);printf("%d,%-15s,%c,%d,%.2f\n", stu2.num,,stu2.sex, stu2.age,stu2.score);

printf("aver=%.2f\n",aver);}第二十二页,共四十二页,编辑于2023年,星期六【实训6】编写程序,在已有的两个学生信息(学号、姓名、性别、成绩)中选择其中一个学生的信息存储到第三个学生信息中,然后输出所有学生的信息。编程步骤:(1)声明结构体类型。(2)定义结构体类型的两个变量stu1,stu2,stu3。(3)用初始化方法存储两个学生的信息到stu1,stu2。(4)将stu2的信息存储到stu3。(5)输出所有学生的信息。第二十三页,共四十二页,编辑于2023年,星期六程序代码main(){ structStdType { intnum;charname[15];charsex;floatscore;}stu1={102,"ZhangPing",'M',78.95},stu2={103,"HeFang",'F',92.5},stu3;第二十四页,共四十二页,编辑于2023年,星期六程序代码

stu3=stu2;

printf("%d,%-15s,%c,%.2f\n", stu1.num,,stu1.sex,stu1.score);printf("%d,%-15s,%c,%.2f\n",stu2.num,,stu2.sex,stu2.score);printf("%d,%-15s,%c,%.2f\n", stu3.num,,stu3.sex,stu3.score);}各成员依次赋值第二十五页,共四十二页,编辑于2023年,星期六【实训7】编写程序,输出学生的信息(包括姓名、性别、出生日期、身份证号、住址、电话号码)。信息如下:姓名:王明;性别:男;出生日期:1980年10月18日;身份证号住址:北京路;电话号码:01012345678。第二十六页,共四十二页,编辑于2023年,星期六编程步骤(1)声明所需结构体类型。(2)定义结构体类型的变量stu。(3)存储学生信息到变量stu。(4)用printf函数输出该学生的信息。第二十七页,共四十二页,编辑于2023年,星期六程序代码structDate{ intmonth;intday;intyear;};structStdType{ charname[15];charsex;

structDate

birthday;

charid[20];charaddr[40];charphone[12];};嵌套声明第二十八页,共四十二页,编辑于2023年,星期六程序代码main(){ structStdTypestu;

strcpy(,"wangming");

stu.sex='M';stu.birthday.year=1980;stu.birthday.month=10;stu.birthday.day=18;strcpy(stu.id,);strcpy(stu.addr,"BeijingRoad");strcpy(stu.phone,"01012345678");printf("%s,%c\n%d/%d/%d\n%s\n%s\n%s\n",

,stu.sex,stu.birthday.year,stu.birthday.month,stu.birthday.day,stu.id,stu.addr,stu.phone);}第二十九页,共四十二页,编辑于2023年,星期六【实训8】改写实训3。通过指针变量输出已有的学生信息(学号、姓名、性别、成绩)。编程步骤:(1)声明结构体类型。(2)定义结构体类型的两个变量stu1、stu2和同一结构体类型的指针变量p,并用初始化方法存储两个学生的信息到stu1,stu2。(3)通过指针变量输出两个学生的信息。第三十页,共四十二页,编辑于2023年,星期六程序代码main(){ structStdType {intnum;charname[15];charsex;floatscore;}stu1={102,"ZhangPing",'M',78.95},stu2={103,"HeFang",'F',92.5},*p;第三十一页,共四十二页,编辑于2023年,星期六程序代码

p=&stu1;printf("%d,%-15s,%c,%.2f",(*p).num,(*p).name,(*p).sex,(*p).score);

p=&stu2;printf("%d,%-15s,%c,%.2f\n",p->num,p->name,p->sex,p->score);}

第三十二页,共四十二页,编辑于2023年,星期六成员的表示方法有如下3种结构体变量名.成员名(*指针变量名).成员名指针变量名->成员名第三十三页,共四十二页,编辑于2023年,星期六3结构体应用举例

P186第三十四页,共四十二页,编辑于2023年,星期六【实训10】改写实训3。调用函数给第三个学生赋信息,该学生学号是108,姓名是LiuLei,性别是男,而成绩正好是前两个学生的平均成绩。编程步骤:(1)声明结构体类型。(2)定义结构体类型的三个变量stu1、stu2和stu3,并用初始化方法存储前两个学生的信息到stu1,stu2。(3)调用函数给第三个学生赋信息。(4)输出三个学生的信息。第三十五页,共四十二页,编辑于2023年,星期六程序代码#include<string.h>structStdType{ intnum;charname[15];charsex;floatscore;};第三十六页,共四十二页,编辑于2023年,星期六程序代码voidthirdstu(structStdTypes1,structStdTypes2,structStdType*s3);main(){ structStdTypestu1={102,"ZhangPing",'M',78.95},stu2={103,"HeFang",'F',92.5},stu3;

thirdstu(stu1,stu2,&stu3);printf("%d,%-15s,%c,%.2f\n",stu1.num,,stu1.sex,stu1.score);printf("%d,%-15s,%c,%.2f\n",stu2.num,,stu2.sex,stu2.score);printf("%d,%-15s,%c,%.2f\n",stu3.num,,stu3.sex,stu3.score);}第三十七页,共四十二页,编辑于2023年,星期六程序代码voidthirdstu(structStdTypes1,structStdTypes2,structStdType*s3){ s3->num=108; strcpy(s3->name,"LiuLei");s3->sex='M';s3->score=(s1.score+s2.score)/2;}第三十八页,共四十二页,编辑于2023年,星期六num

102ZhangPin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论