C语言程序设计 课件 第7章-结构体_第1页
C语言程序设计 课件 第7章-结构体_第2页
C语言程序设计 课件 第7章-结构体_第3页
C语言程序设计 课件 第7章-结构体_第4页
C语言程序设计 课件 第7章-结构体_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

第7章结构体了解结构体的基本概念掌握结构体的定义和使用掌握结构体成员的访问和操作学习嵌套结构体和结构体数组的使用理解‘typedef’的应用本章目标7.1.1程序解析7.1火星探测器知多少#include<stdio.h>structMarsProbe{charCName[20];charFName[20];charCountry[20];intLaunchTime;floatWeight;charSuccess;};intmain(){structMarsProbeMP[]={{"火星1A","Mars1M","USSR",1960,650.0,'N'},{"机遇号","Opport.","USA",2004,180.0,'Y'},{"勇气号","Spirit","USA",2004,174.0,'Y'},{"毅力号","Persev.","USA",2021,174.0,'Y'},{"祝融号","Zhurong","CHN",2021,240.0,'Y'}};inti;printf("中文名\t英文名\t国家\t时间\t重量\t成功着陆?\n");for(i=0;i<5;i++)printf("%s\t%s\t%s\t%d\t%.1f\t%c\n",MP[i].CName,MP[i].FName,MP[i].Country,MP[i].LaunchTime,MP[i].Weight,MP[i].Success);return0;}中文名英文名国家时间重量成功着陆?火星1AMars1MUSSR1960650.0N机遇号Opport.USA2004180.0Y勇气号SpiritUSA2004174.0Y毅力号Persev.USA2021174.0Y祝融号ZhurongCHN2021240.0Y定义结构体类型的一般形式为:7.1火星探测器知多少7.1.2结构体类型struct结构体类型名{数据类型成员名1;数据类型成员名2;…数据类型成员名n;};Tips:(1)成员定义项后用分号结束,整个结构体类型的定义也用分号结束。(2)结构体类型定义只是描述结构体组织结构形式,并不意味着给它分配一段内存单元,只是告诉C编译器这个结构体类型由哪些类型的成员构成。1.先定义结构体类型再定义结构体变量这种形式一般用于需要明确指定结构体成员类型的场景。structMarsProbe{charCName[20];/*中文名*/charFNa;/*英文名*/intLaunchTime;/*发射时间*/floatWeight;/*重量*/structSizeMarSize;/*大小*/charSuccess;/*是否成功着陆*/};structMarsProbemar1,mar2;7.1火星探测器知多少7.1.3结构体变量的定义和初始化2.定义结构体类型同时定义结构体变量这种形式适用于需要在声明结构体类型的同时创建多个结构体变量的场景。structMarsProbe{charCName[20];/*中文名*/charFNa;/*英文名*/intLaunchTime;/*发射时间*/floatWeight;/*重量*/structSizeMarSize;/*大小*/charSuccess;/*是否成功着陆*/};structMarsProbemar1,mar2;7.1火星探测器知多少7.1.4结构体变量的引用结构体变量是通过成员运算符“.”来引用结构体变量中的成员,一般形式为:“结构体变量名.成员名”。说明:1.不能对结构体变量直接进行赋值2.结构体变量的成员与普通变量一样可进行各种运算。3.以使用取地址运算符“&”,引用结构体变量或成

员的地址。4.结构体变量可以整体被赋值。7.1火星探测器知多少7.1.5结构体变量的初始化C语言基本类型类似,在定义结构体变量同时可对结构体变量进行初始化。例7-2初始化结构体数据,并输出各个成员的内容。#include<stdio.h>structMarsProbe{charCName[20];charFName[20];charCountry[20];intLaunchTime;floatWeight;charSuccess;};intmain(){structMarsProbemar1={"祝融号","Zhurong","CHN",2021,240.0,'Y'};printf("中文名\t英文名\t国家\t时间\t重量\t成功着陆?\n");printf("%s\t%s\t%s\t%d\t%.1f\t%c\n",mar1.CName,mar1.FName,mar1.Country,mar1.LaunchTime,mar1.Weight,mar1.Success);return0;}中文名 英文名 国家 时间 重量 成功着陆?祝融号 Zhurong CHN 2021 240.0 Y#include<stdio.h>structMarsProbe{charCName[20];/*中文名*/charFName[20];/*英文名*/charCountry[20];/*国家*/intLaunchTime;/*发射时间*/floatWeight;/*重量*/charSuccess;/*是否成功着陆*/};intmain(){structMarsProbeMP[]={{"火星1A","Mars1M","USSR",1960,650.0,'N'},{"机遇号","Opport.","USA",2004,180.0,'Y'},{"勇气号","Spirit","USA",2004,174.0,'Y'},{"毅力号","Persev.","USA",2021,174.0,'Y'},{"祝融号","Zhurong","CHN",2021,240.0,'Y'}};inti,j,maxIndex;7.2火星探测器重量排排坐7.2.1程序解析structMarsProbetemp;for(i=0;i<5-1;i++){maxIndex=i;for(j=i+1;j<5;j++)if(MP[maxIndex].Weight>MP[j].Weight)maxIndex=j;temp=MP[i];MP[i]=MP[maxIndex];MP[maxIndex]=temp;}printf("中文名\t英文名\t国家\t时间\t重量\t成功着陆?\n");for(i=0;i<5;i++)printf("%s\t%s\t%s\t%d\t%.1f\t%c\n",MP[i].CName,MP[i].FName,MP[i].Country,MP[i].LaunchTime,MP[i].Weight,MP[i].Success);return0;}中文名英文名国家时间重量成功着陆?勇气号SpiritUSA2004174.0Y毅力号Persev.USA2021174.0Y机遇号Opport.USA2004180.0Y祝融号ZhurongCHN2021240.0Y火星1AMars1MUSSR1960650.0N7.3火星探测当参数7.3.1结构体变量作函数参数#include<stdio.h>structMarsProbe{charCName[20];/*中文名*/charFName[20];/*英文名*/charCountry[20];/*国家*/intLaunchTime;/*发射时间*/floatWeight;/*重量*/charSuccess;/*是否成功着陆*/};voidPrint(structMarsProbetemp){/*采用结构体变量temp作为函数形参*/printf("%s\t%s\t%s\t%d\t%.1f\t%c\n",temp.CName,temp.FName,temp.Country,temp.LaunchTime,temp.Weight,temp.Success);}intmain(){structMarsProbeMP[]={{"火星1A","Mars1M","USSR",1960,650.0,'N'},{"机遇号","Opport.","USA",2004,180.0,'Y'},{"勇气号","Spirit","USA",2004,174.0,'Y'},{"毅力号","Persev.","USA",2021,174.0,'Y'},{"祝融号","Zhurong","CHN",2021,240.0,'Y'}};inti;printf("中文名\t英文名\t国家\t时间\t重量\t成功着陆?\n");for(i=0;i<5;i++)Print(MP[i]);return0;}中文名英文名国家时间重量成功着陆?火星1AMars1MUSSR1960650.0N机遇号Opport.USA2004180.0Y勇气号SpiritUSA2004174.0Y毅力号Persev.USA2021174.0Y祝融号ZhurongCHN2021240.0Y7.3火星探测当参数7.3.2结构体数组作函数参数#include<stdio.h>structMarsProbe{charCName[20];/*中文名*/charFName[20];/*英文名*/charCountry[20];/*国家*/intLaunchTime;/*发射时间*/floatWeight;/*重量*/charSuccess;/*是否成功着陆*/};voidsort(structMarsProbemar[],intn){inti,j;structMarsProbetemp;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++){if(mar[i].Weight>mar[j].Weight){temp=mar[i];mar[i]=mar[j];mar[j]=temp;}

}}intmain(){structMarsProbeMP[]={{"火星1A","Mars1M","USSR",1960,650.0,'N'},{"机遇号","Opport.","USA",2004,180.0,'Y'},{"勇气号","Spirit","USA",2004,174.0,'Y'},{"毅力号","Persev.","USA",2021,174.0,'Y'},{"祝融号","Zhurong","CHN",2021,240.0,'Y'}};inti;sort(MP,5);printf("中文名\t英文名\t国家\t时间\t重量\t成功着陆?\n");for(i=0;i<5;i++)printf("%s\t%s\t%s\t%d\t%.1f\t%c\n",MP[i].CName,MP[i].FName,MP[i].Country,MP[i].LaunchTime,MP[i].Weight,MP[i].Success);return0;}中文名英文名国家时间重量成功着陆?勇气号SpiritUSA2004174.0Y毅力号Persev.USA2021174.0Y机遇号Opport.USA2004180.0Y祝融号ZhurongCHN2021240.0Y火星1AMars1MUSSR1960650.0N#include<stdio.h>#include<string.h>typedefstructMarsProbe{charCName[20];/*中文名*/charFName[20];/*英文名*/charCountry[20];/*国家*/intLaunchTime;/*发射时间*/floatWeight;/*重量*/charSuccess;/*是否成功着陆*/}MARSPROBE;/*自定义结构体类型名*/intFind(structMarsProbemar[],charKey[],intn){inti=-1;for(i=0;i<n;i++){if(strcmp(mar[i].Country,Key)==0){break;}}returni;}intmain(){MARSPROBEMP[]={

7.4火星探测找一找7.4.1程序解析{"火星1A","Mars1M","USSR",1960,650.0,'N'},{"机遇号","Opport.","USA",2004,180.0,'Y'},{"勇气号","Spirit","USA",2004,174.0,'Y'},{"毅力号","Persev.","USA",2021,174.0,'Y'},{"祝融号","Zhurong","CHN",2021,240.0,'Y'}};inti=0;charKey[20];printf("请输入待查找火星探测器国家\n");gets(Key);strupr(Key);/*转换为大写*/if((i=F

温馨提示

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

评论

0/150

提交评论