计算机软件基础课件:结构类型_第1页
计算机软件基础课件:结构类型_第2页
计算机软件基础课件:结构类型_第3页
计算机软件基础课件:结构类型_第4页
计算机软件基础课件:结构类型_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

结构类型《计算机软件基础》本章重点难点本章重点:结构类型定义;结构变量的定义、初始化和成员引用;结构数组的定义、初始化和成员引用;结构指针变量的定义、初始化和成员引用;灵活应用结构类型和相应变量解决应用问题。本章难点:结构指针变量的定义和应用。01.结构类型与结构变量02.结构数组03.结构数组主要内容01结构类型与结构变量1.结构类型的声明格式:struct

结构类型名{数据类型1成员变量1;

数据类型2成员变量2; ……

数据类型n成员变量n;};例如:structstudent/*类型名为student*/{longnum; /*学号*/charname[20]; /*姓名*/chargender; /*性别*/intage; /*年龄*/doublescore[3];/*3门课成绩*/};2.结构变量的定义1.先声明结构类型,再定义结构变量。 structstudentstu1,stu2;2.在声明结构类型的同时定义结构变量。structstudent{longnum; charname[20];chargender; intage; doublescore[3]; }stu1,stu2;3.结构类型名可以省略。struct{longnum; charname[20];chargender; intage; doublescore[3];}stu1,stu2;此三种定义stu1和stu2方式等价3.用typedef定义数据类型typedefstructstudentSTUDENT;与typedefstructstudent{longnum; charname[20];chargender; intage; doublescore[3]; }STUDENT;是等价的关键字typedef用于为系统固有的或自定义的数据类型定义一个别名。下面两条定义结构变量语句是等价的。STUDENTstul,stu2;structstudentstul,stu2;4.结构变量的初始化

结构变量的成员可以在定义时通过将成员的初值置于花括号之内来进行初始化。structstudentstu1={230701001,"张丽",'F',19,{85.0,77.0,90.0}};√structstudentstu1;stu1={230701001,"张丽",'F',19,{85.0,77.0,90.0}};ⅹ5.结构变量的引用成员运算符“.”:访问结构变量的成员,优先级最高。例如:stu1.age=19;若成员本身又是结构类型,逐层引用最内层的成员。例如:structdate/*结构类型名为date*/{intyear; /*年*/intmonth; /*月*/intday; /*日*/};structstudent1{longnum; charname[20]; chargender; structdatebirth; doublescore[3]; }stu3;若stu3变量的出生年份是2001年,月份是10月,日期是23日,具体赋值语句为:stu3.birth.year=2001;stu3.birth.month=10;stu3.birth.day=23;初始化方式scanf("%d,%d,%d",&stu3.birth.year,&stu3.birth.month,&stu3.birth.day);6.结构类型应用举例#include<stdio.h>structcomplex{intreal;intimaginary;};intmain(){structcomplexa,b,c; /*定义三个复数a,b,c*/scanf("%d,%d,%d,%d",&a.real,&a.imaginary,&b.real,&b.imaginary);c.real=a.real+b.real;/*分别求两复数实部,虚部系数和*/c.imaginary=a.imaginary+b.imaginary;printf("c=%d+%di\n",c.real,c.imaginary);return0;}例6-1

编写求两复数之和的程序。计算结构类型所占内存的字节数时,一定要使用函数sizeof(struct类型名)或sizeof(变量名)02结构数组1.结构数组的定义1)在定义结构类型的同时定义结构数组。struct结构类型名{

成员列表;}数组名[数组长度];2)先定义结构类型,再定义结构数组。

struct结构类型名数组名[数组长度];2.结构数组的初始化1)在定义结构类型的同时对结构数组变量初始化。structstudent2{longnum;charname[20];doublescore[3];}stu4[2]={{230701002,"ZhangLin",{78.0,80.5,64.0}},{230701003,"GaoDong",{60.5,83.0,92.5}}};2)在结构类型定义好之后,在定义变量的同时进行初始化。structstudent2stu4[2]={{230701002,"LiFang",78.0,80.5,64.0},{230701003,"GaoDong",60.5,83.0,92.5}};3.结构数组应用举例

例6-2

输入50名学生的基本信息,计算各学生的平均分,并输出每名学生的学号、姓名及平均成绩。/*②数据输入*/for(i=0;i<M;i++){scanf("%ld,%s",&stu5[i].num,stu5[i].name);for(j=0;j<3;j++)scanf("%f",&stu5[i].score[j]);}/*①定义名为student3的结构*/#defineM50/*M代表学生数*/structstudent3{longnum;charname[20];doublescore[3];doubleavg;}stu5[M];/*50名学生的数组*/3.结构数组应用举例

例6-2输入50名学生的基本信息,计算各学生的平均分,并输出每名学生的学号、姓名及平均成绩。/*③计算每名同学三门课成绩的平均值*/for(i=0;i<M;i++){s=0.0;for(j=0;j<3;j++)s=s+stu5[i].score[j];stu5[i].avg=s/3.0; }/*④输出50名同学的基本信息*/for(i=0;i<M;i++) printf("no%2dnum:%1dname:%savg:%4.1f\n",i,stu5[i].num,stu5[i].name,stu5[i].avg);03结构指针1.指向结构变量的指针定义形式为:

struct结构类型名*指针变量名;结构变量成员的引用有3种等价形式:①结构变量.成员名②(*指针变量名).成员名(不常用)③指针变量名->成员名例题:structstudent4{longnum;charname[20];intage;double

score;}stu6={230701002,"LiFang",19,80.5},*p=&stu6;/*引用*/printf("num:%ldname:%sage:%2dscore:%4.1f\n",stu6.num,,stu6.age,stu6.score);printf("num:%ldname:%sage:%2dscore:%4.1f\n",p->num,p->name,p->age,p->score);printf("num:%ldname:%sage:%2dscore:%4.1f\n",(*p).num,(*p).name,(*p).age,(*p).score);2.指向结构数组的指针①structstudent4{longnum;charname[20];intage;doublescore;}stu7[3],*p=stu7;②structstudent4{longnum;charname[20];intage;double

score;};structstudent4stu7[3],*p=stu7;等价3.结构指针应用举例structtest{intx;doubley;charz;}a[3]={{2,1.5,'x'},{3,4.6,'y'},{4,7.8,'z'}};structtest*p;

温馨提示

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

评论

0/150

提交评论