C语言程序设计-第9章--结构体与共用体

PPT
  • 阅读 75 次
  • 下载 0 次
  • 页数 83 页
  • 大小 1.246 MB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C语言程序设计-第9章--结构体与共用体
可在后台配置第一页与第二页中间广告代码
C语言程序设计-第9章--结构体与共用体
可在后台配置第二页与第三页中间广告代码
C语言程序设计-第9章--结构体与共用体
可在后台配置第三页与第四页中间广告代码
C语言程序设计-第9章--结构体与共用体
C语言程序设计-第9章--结构体与共用体
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 83
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】C语言程序设计-第9章--结构体与共用体.ppt,共(83)页,1.246 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2224.html

以下为本文档部分文字说明:

第九章结构体与共用体程序设计技术基础-C语言2022/11/1229.1.1结构体类型的定义9.1.2结构体变量的定义9.1.3结构体变量的初始化和引用9.1结构体类型程序设计技术基础-C语言9.1.1结构体类型的定义结构体是一种自定义的数据类型,需要先定义才能使用。定义一个结构体类型的一般

形式为:struct结构体名{成员说明表列};2022/11/123程序设计技术基础-C语言其中,成员说明表列是组成该结构体类型的所有数据的说明,若有n个成员,则每个成员均需作数据类型说明,可表示为:{数据类型成员标识符1;数据类型成员标识符2;……数据类型成员标识符n;}2022/

11/124程序设计技术基础-C语言【例9-1】有一个学生成绩表,如表9-1所示,定义一个结构体类型表示此结构。2022/11/125numbernamesexmathcomputer10001Lifunm788810002Lilinf8789学生成绩表第九章

结构体与共用体2022/11/126structstudent{longnumber;charname[20];charsex;floatmath;floatcomputer;};定义如下:程序设计技术基础-C语言说明:(1)结构体名和结构体成

员名遵循C语言标识符的命名规则,建议用具有一定意义的单词来命名。如【例9-1】中的student。(2)结构体成员的类型定义形式与简单变量的定义形式相同。2022/11/127程序设计技术基础-C语言(3)struct是关键字,不能省略。(4)“structstudent”作为一个整体表示

类型名,和普通数据类型一样都可用来定义变量的类型。(5)一对{}外面最后的分号是结构体定义的结束标志,不能省略。2022/11/128程序设计技术基础-C语言9.1.2结构体变量的定义1.先定义结构体类型,再定义其变量一般形式为:struct结构体名{成员说明表列};struct结构体名结构体

变量列表;2022/11/129程序设计技术基础-C语言例如,前面已经定义了一个结构体类型structstudent,可以用它来定义具有该类型的结构体变量stu1,如下:structstudentstu1;2

022/11/1210程序设计技术基础-C语言2.定义结构体类型的同时定义结构体变量一般形式为:struct结构体名{成员说明表列}变量名表列;例如,在定义structstudent的同时,定义与它具有相同结构的结构体变量stu2。2022/11/1211第九章结构体与共用体20

22/11/1212structstudent{longnumber;charname[20];charsex;floatmath;floatcomputer;}stu2;程序设计技术基础-C语言3.不出现

结构体名,直接定义结构体变量一般形式为:struct{成员说明表列}变量名表列;例如,2022/11/1213第九章结构体与共用体2022/11/1214structstudent{longnumber;charname[20];charsex;floatmath;fl

oatcomputer;}stu3;程序设计技术基础-C语言第三种方法只定义了结构体变量stu3,没有出现结构体名,因此,该方法不能再用来定义其他同类型的结构体变量。说明:在一个结构体中也可以包含另一个结构体。如:2022/11/1215第九章结构

体与共用体2022/11/1216structdate/*定义结构体date*/{intmonth;intday;intyear;};structstudent{longnumber;charname[20];structdatebirthday;/*birthday是structdate类

型*/charsex;floatmath;floatcomputer;};程序设计技术基础-C语言这里定义了一个结构体类型structdate,代表“日期”,包含3个成员:month、day、year。在定义struct

student类型时,成员birthday的类型定义为structdate类型。structstudent的结构如表9-2所示。2022/11/1217numbernamebirthdaysexmathcomputerstructstudent结构程序设计技术基础-

C语言9.1.3结构体变量的初始化和引用1.结构体变量的初始化对结构体变量进行初始化,也就是给结构体变量的各个成员赋初值。(1)对已经定义的结构体变量初始化例如,在【例9-1】中已经定义了结构体类型structstudent,再定义一个结构体变量

stu1并进行初始化。structstudentstu1={10001,"Lifun",'m',78,88};。2022/11/1218程序设计技术基础-C语言(2)同时完成结构体类型定义、结构体变量定义和初始化structstudent{longnumber;c

harname[20];charsex;floatmath;floatcomputer;}stu2={10002,"Lilin",'f',87,89};2022/11/1219程序设计技术基础-C语言2.结构体变量的引用(1)引用结构体变量的成员访问结构体变量的成员必须用成员运算符。其一般形式为

:结构体变量名.成员名例如,stu1.name、stu2.math等。2022/11/1220程序设计技术基础-C语言如果成员本身又是一个结构体类型的变量(结构体嵌套),则在访问该结构体变量的成员时,应采取逐级访问的方法,通过成员运算符逐级找到最底层的成员再引用。如想要得到学生的出

生日期,则可以这样引用:stu2.birthday.month、stu2.birthday.day、stu2.birthday.year2022/11/1221程序设计技术基础-C语言(2)整体引用结构体变量同类型的结构体变量,可以将一个结构体变量整体赋

值给另一个结构体变量。例如:structstudentstu1={10001,"Lifun",'m',78,88};structstudentstu3;stu3=stu1;通过赋值,结构体变量stu3中

每个成员的值和结构体变量stu1每个成员的值相同。2022/11/1222第九章结构体与共用体2022/11/1223#include<stdio.h>structsalary/*定义结构体类型,描述工资信息*/{floatbase;/*基础工资*/floatallo

wances;/*津贴*/floattaxes;/*税金*/};【例9-2】阅读下面程序,了解结构体成员的引用方法。第九章结构体与共用体2022/11/1224structworker/*定义结构体类型,描述职工基本信息*/{longnumber;/*工号*/charname[12];/

*姓名*/structsalarysal;/*工资*/};第九章结构体与共用体2022/11/1225intmain(){structworkerwk1={120101,"Liyue",2780.5,1356.5,124.11};structworkerwk2;wk2=wk1

;wk2.name[0]='M';wk2.name[1]='a';wk2.number=120102;wk2.sal.allowances=2168.5;wk2.sal.taxes=(wk2.sal.base+wk2.sal.allowances)*0.03;printf("工号\t姓名\t基础

工资\t津贴\t\t税金\n");printf("%ld\t%s\t%.2f\t\t%.2f\t\t%.2f\n",wk1.number,wk1.name,wk1.sal.base,wk1.sal.allowances,wk1.sal.taxes);printf("%ld\t

%s\t%.2f\t\t%.2f\t\t%.2f\n",wk2.number,wk2.name,wk2.sal.base,wk2.sal.allowances,wk2.sal.taxes);return0;}程序设计技术基础-C语言2022/11/12269.2结构体数组程序设计技术

基础-C语言1结构体数组的定义结构体数组的定义方法如下:structstudentxs[30];它定义了一个有30个元素的结构体数组xs,数组中每个元素都是structstudent类型。也可以直接定义结构体数组,如:2022/11/1227第九章结构体与共用体2022/

11/1228structstudent{longnumber;charname[20];charsex;floatmath;floatcomputer;}xs[30];第九章结构体与共用体2022/11/12

29structstudent{longnumber;charname[20];charsex;floatmath;floatcomputer;}xs[30];或者程序设计技术基础-C语言2结构体数组的初始化结构体数组的初始化是对结构体数组元素成员的初始化,形式和多维数组的初始

化类似。其一般形式是在定义结构体数组的后面加上:={初值表列};例如,structstudentxs[30]={{10001,"Lifun",'m',78,88},{10002,"Wangli",'f',89,90}};2022/11/1230程序设计技

术基础-C语言3结构体数组的引用结构体数组的引用也是引用结构体数组元素的成员,与普通数组引用类似,其一般形式为:数组名[下标].成员名例如,xs[0].number/*引用第一个学生的学号*/xs[1].name/*引用第二个学生的名字*/2022/11/

1231第九章结构体与共用体2022/11/1232intmain(){inti,num=0;floatsum=0;structstudentclass[5]={{10001,"Liping",18,96},{10002,"Zhangping"

,19,88},{10003,"Hefang",18,79},{10004,"Chengling",17,69},{10005,"Wangming",17,57}};/*定义并初始化结构体数组*/for(i=0;i<5;i++){sum+=class[i].

math;/*引用结构体数组成员计算总成绩*/if(class[i].math<90)num++;}printf("sum=%.2f\naverage=%.2f\nnum=%d\n",sum,sum/5,nu

m);return0;}第九章结构体与共用体2022/11/1233#include<stdio.h>structstudent/*定义结构体类型,描述学生信息*/{longnumber;/*学号*/charname[

20];/*姓名*/intage;/*年龄*/floatmath;/*成绩*/};【例9-3】已知5名学生的信息,包含学号、姓名、年龄、数学成绩,要求利用结构体数组计算5个学生的数学平均分,并统计数学小于90

分的学生人数。程序设计技术基础-C语言2022/11/12349.3.1指向结构体变量的指针9.3.2指向结构体数组的指针9.3指向结构体的指针程序设计技术基础-C语言9.3.1指向结构体变量的指针结构体指针变量定义一般形式为:struct结构体名*结构体指针变量名;例如:2022/

11/1235第九章结构体与共用体2022/11/12信息与计算机学院计算机基础教学部36structstudent{longnumber;charname[20];charsex;floatmath;floatcomputer;};structstudentstu1;structstuden

t*p=&stu1;程序设计技术基础-C语言定义了结构体指针变量后,如何访问该指针变量指向的结构体成员呢?可以使用下面两种运算符:(1)圆点运算符一般形式为:(*结构体指针变量名).成员名。例如,(*p).name,表示指针变量p指向结构体

变量stu1的name成员。(2)指向运算符(也称箭头运算符)一般形式为:结构体指针变量名–>成员名。例如,p->name,表示指针变量p指向结构体变量stu1的name成员。2022/11/1237程序设计技术基础-C语言9.3.

2指向结构体数组成员的指针指针变量可以指向普通数组,同样,指针变量也可以指向结构体类型的数组。例如:2022/11/1238第九章结构体与共用体2022/11/12信息与计算机学院计算机基础教学部39structstud

ent{longnumber;charname[20];charsex;floatmath;floatcomputer;};structstudentstu[20];structstudent*p=stu;第九章结构体与共用体2022/11/1240#include<stdio.h>structs

tudent1{longnumber;charname[20];charsex;intage;};/*定义结构体变量和结构体数组,并初始化*/structstudent1stu4={10101,"Lixiao",'m',19};structstudent1stu[3]={{10102,“Lip

ing”,‘m’,18},{10103,"Zhangping",'m',20},{10104,"Hefang",'f',22}};【例9-4】熟悉如何用指针访问结构体变量和结构体数组。第九章结构体与共用体

2022/11/1241intmain(){inti;structstudent1*p,*q;/*定义结构体指针*/p=&stu4;/*p指向结构体变量*/printf("numbernamesexage\n");pr

intf("%5d%-10s%2c%5d\n",(*p).number,p->name,(*p).sex,p->age);q=stu;/*q指向结构体数组*/for(i=0;i<3;i++){printf("%5d%-10s%2c%5d\n

",(*q).number,q->name,(*q).sex,q->age);q++;}return0;}程序设计技术基础-C语言2022/11/12429.4.1结构体作函数参数9.4.2结构体作函数返回值9.4结构体与函数程序设计技术基础-C语言9.4.1结构体作函数参数结构体作函数参

数,既可以把结构体变量作为函数参数,实现值传递,也可以把指向结构体的指针作为函数参数,实现地址传递。2022/11/1243第九章结构体与共用体2022/11/1244#include<stdio.h>structdate{intnian;intyue;intri;};【例9-5】值传递,结

构体变量作函数参数。第九章结构体与共用体2022/11/12信息与计算机学院计算机基础教学部45intriqi(structdatea)/*结构体变量作函数参数*/{a.nian=2018;a.yue=5;a.ri=22;return0;}intmain(){structdate

b;b.nian=2017;b.yue=4;b.ri=26;printf("调用前:%d%d%d\n",b.nian,b.yue,b.ri);riqi(b);printf("调用后:%d%d%d\n",b.nian,b.yue,b.ri);return0;}第九章结构

体与共用体2022/11/1246#include<stdio.h>structdate{intnian;intyue;intri;};intriqi(structdate*p)/*结构体指针变量作函数参数*/{(*p).nia

n=2018;(*p).yue=5;(*p).ri=22;return0;}【例9-6】地址传递,结构体指针变量作函数参数。第九章结构体与共用体2022/11/1247intmain(){structdateb;b.nian=2017;b.yue=4;b.ri=26

;printf("调用前:%d%d%d\n",b.nian,b.yue,b.ri);riqi(&b);printf("调用后:%d%d%d\n",b.nian,b.yue,b.ri);return0;}程序设计技术基础-C语言9.4.2结构体作函数返回值函数的返回值

除了可以是整型、实型、字符型和指向这些数据类型的指针以外,还可以返回结构体类型的值。2022/11/1248程序设计技术基础-C语言【例9-7】超市清点现有物品情况,有5种商品,要求从键盘输入每种商品的名称、数量、单价,编写程序能实现以下功能:输出库存清单(

包括商品名称、数量、单价、合计),以及所有商品的总金额。程序用一个函数实现“输入库存商品信息”功能,其返回值为结构体类型。2022/11/1249程序设计技术基础-C语言分析:(1)商品信息可用结构体来表示。structStoreLib{charname[12];intnum;/*商品数量*/f

loatprice;/*商品单价*/floatSumMoney;/*商品小计*/};(2)每次输入的数据都是结构体变量的各成员值,因此可以设计函数:structStoreLibInputInfo();用于将商品信息输入到结构体数组Goods中。(3)使用函数intlist(structStore

LibGoods)输出库存信息。2022/11/1250第九章结构体与共用体2022/11/1251#include<stdio.h>structStoreLib/*描述商品信息*/{charname[12];intnum;floatprice;floa

tSumMoney;};structStoreLibGoods;floatTotal=0;intlist(structStoreLibGoods)/*通过商品数量和单价,计算出每种商品的金额*/{Goods.SumMoney=Goods.num*Good

s.price;Total=Total+Goods.SumMoney;printf("%-24s%d\t%.2f\t%.2f\n",Goods.name,Goods.num,Goods.price,Goods.SumMone

y);return0;}第九章结构体与共用体2022/11/12信息与计算机学院计算机基础教学部52structStoreLibInputInfo(){scanf("%s",Goods.name);/*输入

商品名称*/scanf("%d%f",&Goods.num,&Goods.price);/*输入商品数量和商品单价*/returnGoods;}intmain(){structStoreLibiGoods[5];inti;printf("请输入5种库存商品信息:商品名称数量单价\n");for(i

=0;i<5;i++)iGoods[i]=InputInfo();/*函数调用,输入商品信息*/printf("\n----------------------------------------------\n");printf("库存清单

:\n");printf("商品名称\t\t数量\t单价\t小计\n");for(i=0;i<5;i++)list(iGoods[i]);/*函数调用,输出库存清单*/printf("库存商品金额总计:%.2f\n",Total);r

eturn0;}程序设计技术基础-C语言2022/11/12539.5.1共用体类型及其变量的定义9.5.2共用体变量的引用9.5共用体类型程序设计技术基础-C语言9.5.1共用体类型及其变量的定义共用体的定义方法和定义结构体类型相似,其一般

形式为:union共用体名{成员表列};2022/11/1254程序设计技术基础-C语言union是关键字,是定义共用体类型必不可少的。一对{}中的内容为共用体成员的类型说明,与结构体类型的成员说明一致。例如:uniondata{doublea;inti;cha

rch;};2022/11/1255程序设计技术基础-C语言定义共用体变量的方法与结构体类似,有下面三种方法。1.先定义共用体类型,再定义变量一般形式为:union共用体名{成员表列};union共用体名变量表列;2022/11/1256第九章结构

体与共用体2022/11/1257uniondata{doublea;inti;charch;};uniondatanum1,num2;例如:程序设计技术基础-C语言2.定义共用体类型的同时定义共用体变量一般形式为:union共用体名{成员表列}变量表列;2022/11/1258第九章结

构体与共用体2022/11/1259uniondata{doublea;inti;charch;}num1,num2;例如:程序设计技术基础-C语言3.不出现共用体名,直接定义共用体变量一般形式为:union{成员表列}变量表列;2022/11/1260第九章结构体与共用体20

22/11/1261union{doublea;inti;charch;}num1,num2;例如:程序设计技术基础-C语言9.5.2共用体变量的引用共用体变量必须先定义,才能引用,而且不能整体引用,只能引用共

用体变量的成员。其一般形式为:共用体变量名.成员名如,num1.i(引用共用体变量num1中的整型变量i)。【例9-8】了解共用体变量的引用。2022/11/1262第九章结构体与共用体2022/11/1263#include<stdio.h>unionstud

ent{longnumber;charc;intage;};intmain(){unionstudents1,s2;s1.number=10001;s1.c='L';s1.age=65;printf("共用体变量s1成员的值为:\n");printf("s1.number=%d\ns

1.c=%c\ns1.age=%d\n",s1.number,s1.c,s1.age);s1.c='W';s2=s1;printf("共用体变量s2的值为:\n");printf("s2is%c\n",s2.c);return0;}程序设计技术基础-C语言2022/11/12649.

6枚举类型程序设计技术基础-C语言定义枚举类型的一般形式为:enum枚举变量名{取值表列};例如,enumresponse{no,yes,none};上面的语句定义了名为response的枚举类型,取值范围为:no、yes、none。可以用该类型来定义变量,如enumres

ponseanswer;2022/11/1265程序设计技术基础-C语言也可以同时定义枚举类型和枚举变量,如:enumresponse{no,yes,none}answer;或者不出现枚举名,直接定义枚举变量,如:enum

{no,yes,none}answer;2022/11/1266程序设计技术基础-C语言也可以同时定义枚举类型和枚举变量,如:enumresponse{no,yes,none}answer;或者不出现枚举名,直接定义枚举变量,如:enum{no,yes,none}answer;说明:(

1)一对{}中的取值称为枚举常量,都是整型常量,用户在定义时不指定其值,系统默认第1个枚举常量的值是0,后面的枚举值依次增加1,如:enumresponse{no,yes,none}answer;,其中no=0,yes=1,n

one=2。(2)枚举值也可指定,如:enum{no=1,yes=3,none=4}answer;2022/11/1267程序设计技术基础-C语言【例9-9】从键盘输入一个1~12的整数,在屏幕上显示与该整数对应的

月份的英文名称。分析:在输出较多的枚举变量时,可以用switch结构语句。程序如下:2022/11/1268第九章结构体与共用体2022/11/1269#include<stdio.h>#include<stdio.h>intmain(){enummonth{Jan

=1,Feb=2,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}mon;intk;printf("pleaseinputanumber(1~12):");scanf("%d",&

k);mon=(enummonth)k;/*强制类型转换*/switch(mon){caseJan:printf("ThismonthisJanuary.\n");break;caseFeb:printf("Thismonthi

sFebruary.\n");break;caseMar:printf("ThismonthisMarch.\n");break;caseApr:printf("ThismonthisApril.\n");

break;caseMay:printf("ThismonthisMay.\n");break;caseJun:printf("ThismonthisJune.\n");break;caseJul:printf("ThismonthisJuly.\n");break

;caseAug:printf("ThismonthisAugust.\n");break;caseSep:printf("ThismonthisSeptember.\n");break;caseOct:printf("Th

ismonthisOctober.\n");break;caseNov:printf("ThismonthisNovember.\n");break;caseDec:printf("Thismonthis

December.\n");break;default:printf("Inputiserror!\n");}return0;}程序设计技术基础-C语言2022/11/12709.7typedef类型程序设计技术基础-C语言typedef定义的一般形式为:typ

edef原类型名新类型名;一般情况,新类型名表示为大写字母,只是为了与系统提供的标准类型的标识符相区分。例如:typedefintINTEGER;typedeffloatREAL;2022/11/1271程序设计技术基础-C语言typedef语句也可以给一些复杂数据类型定义新的名称。例如:type

defstructstudentSTUDENT;等价于typedefstructstudent{longnum;charname[10];intage;}STUDENT;2022/11/1272程序设计技术基础-C语言2022/11/12739.8程序类型程序设计技术基础-C语言【

例9-10】输入5个同学的姓名、数学成绩、英语成绩和计算机成绩,确定总分最高的同学,并打印其姓名及其3门课程的成绩。分析:(1)使用长度为5的structstudent类型的结构体数组存储所有同学的相关信息。(2)定义structstudent类型指针pmax存储总分最高的同学的地址。(3)定义

structstudent类型指针pstu引用结构体数组中的元素及其数组元素成员的值。(4)通过循环语句为每个数组元素成员赋值。(5)利用pmax输出成绩最高的同学的相关信息。2022/11/1274第九章结构体与共用体2022/11/1275#in

clude<stdio.h>structstudent/*定义结构体类型*/{charname[20];intmath;intenglish;intcomputer;};intmain(){structstudentstu[5];/*定义structstudent类型的结构体数组

存储所有同学的相关信息*/structstudent*pmaxstu;/*定义structstudent类型指针存储总分最高的同学的地址*/structstudent*pstudent;/*定义structstudent类型指针来引用数组*/intfmaxsco

re=0,ftotal;/*存储最高分和总分的中间变量*/intfmath,fenglish,fcomputer;/*存储各科成绩的中间变量*/charszname[20];printf("\npleaseinput5st

udentsandscore:\n");printf("Name\tMath\tEnglish\tComputer\n");pmaxstu=stu;/*给pmaxstu指针变量赋初值*//*将数组stu的地址赋给p

student指针变量,通过pstudent为数组stu各元素赋值*/第九章结构体与共用体2022/11/1276for(pstudent=stu;pstudent<stu+5;pstudent++){/*键盘输入当前同学的相关信息*

/scanf("%s%d%d%d",szname,&fmath,&fenglish,&fcomputer);/*将中间变量的值通过结构体指针引用,赋值到对应数组元素的各个成员中*/strcpy(pstudent->name,szname);pstudent->math=fmath;pstu

dent->english=fenglish;pstudent->computer=fcomputer;ftotal=pstudent->math+pstudent->english+pstudent->computer;/*获得当前最高分同学所对应数

组元素的地址*/if(fmaxscore<ftotal){fmaxscore=ftotal;pmaxstu=pstudent;/*将最高分同学所对应的首地址赋值给最高分指针变量*/}}printf("themaxis:");printf("%s,%d,%d,%d\n",pmaxstu->n

ame,pmaxstu->math,pmaxstu->english,pmaxstu->computer);return0;}程序设计技术基础-C语言【例9-11】商品进出库管理,入库商品的数据包括编号、商

品名称、数量、状态(入库)、货架号,出库商品的数据包括编号、商品名称、数量、状态(出库)、部门。用同一个表格实现这个管理,如表所示。编写程序输入和输出这些数据。2022/11/1277编号商品名称数量状态货架号或部门101book19I1

030102sugar20Ofood-group103cup48I1206104doll46Otoy-group商品进出库管理信息表第九章结构体与共用体2022/11/1278#include<stdlib.h>/

*包含atol()函数*/#include<stdio.h>structgoods/*商品信息*/{longnumber;/*编号*/charname[20];/*商品名称*/intquantity;/*数量*/charst

ate;/*商品状态*/union{longpart;/*货架号*/chargroup[20];/*部门*/}depa;};intmain(){structgoodsitems[4];/*保存入库商品数据*/

inti;chartmp[20];/*中间变量,用来存储键盘输入的货架号或部门*/printf("pleaseinputdata:\nnumbernamequantitystatedepartment\n");第九章结

构体与共用体2022/11/1279for(i=0;i<4;i++)/*将键盘输入数据保存到结构体数组的每个元素中*/{scanf("%ld%s%d%c%s",&items[i].number,items[

i].name,&items[i].quantity,&items[i].state,tmp);if(items[i].state=='I')items[i].depa.part=atol(tmp);elseif(items[i].state=='O')strcpy(items[i].depa.

group,tmp);}printf("\n----------------------------------------------\n");printf("outputdata:\n");printf("number\tname\tquan

tity\tstate\tdepartment\n");for(i=0;i<4;i++)/*输出结构体数组的数据*/{if(items[i].state=='I')printf("%ld\t%s\t%d\t\t%c\t%d\n",items[

i].number,items[i].name,items[i].quantity,items[i].state,items[i].depa.part);elseif(items[i].state=='O')printf("%ld\t

%s\t%d\t\t%c\t%s\n",items[i].number,items[i].name,items[i].quantity,items[i].state,items[i].depa.group);elseprintf("进出库状态不合理");}return0;}程序设计技术基础-C语言

【例9-12】编写一个程序实现下述要求。已知一个口袋中有红、白、黄、蓝4种球各若干,每次取3个球,打印输出每次取出3种不同颜色球的所有可能的组合及组合数。分析:球只能是四色之一,可以采用枚举类型变量来处理。判断

各个球是否同色,可以设取出的球为i、j、k,分别是4种颜色的球之一,并要求i、j、k各不相同。2022/11/1280第九章结构体与共用体2022/11/1281#include<stdio.h>enumclolr{red,white,yellow,blue}i,j,k,p;/*定义枚举

变量*/intmain(){intn=0,loop;for(i=red;i<=blue;i++)for(j=red;j<=blue;j++)if(i!=j)for(k=red;k<=blue;k++)if((k!=i)&&(k!=j)){n++;printf("\n%d",n);第九章结构体与共用

体2022/11/1282for(loop=1;loop<=3;loop++){switch(loop){case1:p=i;break;case2:p=j;break;case3:p=k;break;default:;}switch(p

){casered:printf("\t%s","red");break;casewhite:printf("\t%s","white");break;caseyellow:printf("\t%s","yell

ow");break;caseblue:printf("\t%s","blue");break;default:;}}}printf("\ntotal:%5d\n",n);return0;}程序设计技术基础-C语言2022/11/1283本章主要介绍了结构体和共用体,可以将不同类型的数据放在一起

,还有枚举类型和typedef类型,它们都是用户根据实际需要自己定义的类型,使用时要注意这些数据类型的定义和其变量的定义。本章小结

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?