結(jié)構(gòu)體共用體和用戶定義類型_第1頁
結(jié)構(gòu)體共用體和用戶定義類型_第2頁
結(jié)構(gòu)體共用體和用戶定義類型_第3頁
結(jié)構(gòu)體共用體和用戶定義類型_第4頁
結(jié)構(gòu)體共用體和用戶定義類型_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、結(jié)構(gòu)體共用體和用戶定義類型第1頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體類型結(jié)構(gòu)體類型的定義形式: struct 結(jié)構(gòu)體標(biāo)識(shí)名 類型名1 結(jié)構(gòu)體成員名表1; 類型名2 結(jié)構(gòu)體成員名表2; ; struct date int year,month,day; struct student char name12; char sex; struct date birthday; float sc4;結(jié)構(gòu)體類型占用字節(jié)數(shù)是成員項(xiàng)所占字節(jié)數(shù)的總和。第2頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體類型變量的定義、賦值、使用結(jié)構(gòu)體類型的變量的定義(3種形式) 1.緊

2、跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義。 struct student char name12; char sex; struct date birthday; float sc4; s1,s2; 2. 結(jié)構(gòu)體類型名可以省略。 3.先說明一個(gè)結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義。 struct student char name12; char sex; struct date birthday; float sc4; ; struct student s1,s2;第3頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體變量的賦值和使用 struct student char name12; c

3、har sex; struct date birthday; float sc4; s1=“Li Ming”,M,1962,5,10,88,76,85.5,90; 賦值時(shí),依次給變量中的各個(gè)成員均賦值。printf(“%s,%c,%d,%d,%d,%f,%f,%f,%f”,,s1.sx,s1.birthday.year,s1.birthday.month,s1.birthday.day, s1.sc0, s1.sc1, s1.sc2, s1.sc3);結(jié)構(gòu)體變量的引用:結(jié)構(gòu)體變量名.成員名例1.struct person int ID;char name12; p;請(qǐng)將scanf

4、(%d, );語句補(bǔ)充完整,使其能夠?yàn)榻Y(jié)構(gòu)體變量p的成員ID正確讀入數(shù)據(jù)。 (2009年9月二級(jí)C真題) &p.ID第4頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例2.下面結(jié)構(gòu)體的定義語句中,錯(cuò)誤的是( )。 (2009年9月二級(jí)C真題) A)struct ord int x;int y;int z; struct ord a; B)struct ord int x;int y;int z; struct ord a; C)struct ord int x;int y;int z; a; D)struct int x;int y;int z; a;例3有以下程序#include

5、 main() struct STU char name9; char sex; double score2; ;struct STU a=Zhao,m,85.0,90.0, b=Qian,f,95.0,92.0);b=a;printf(%s,%c,%2.0f,%2.0fn,,b.sex,b.score0,b.score1);程序的運(yùn)行結(jié)果是( )。 (2008年9月二級(jí)C真題)A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90 BD第5頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例4. 以下程序的運(yùn)

6、行結(jié)果是( ) main() struct EXAMPLE struct int x; int y; in; int a; int b; e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf(“%d,%d”,e.in.x,e.in.y);2,3第6頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體指針結(jié)構(gòu)體指針的定義 struct student *p,s; p=&s; p-name,p-sex;例1.若有以下說明語句: struct student int age; int num;std,*p;p=&std;則以下對(duì)結(jié)構(gòu)

7、體變量std中成員age的引用方式不正確的是( )A. std.age B.p-age C.(*p).age D. *p.ageD第7頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例2.設(shè)有如下定義: struct sk int n; float x;data,*p;若要使p指向data中的n域,則正確的賦值語句是( )A. p=&data.n B. *p=data.nC. p=(struct sk *)&data.n D. p=(struct sk *)data.nC第8頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體數(shù)組的定義、賦值、使用結(jié)構(gòu)體數(shù)組的定義(3種形

8、式) 1.緊跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義。 struct student char name12; char sex; struct date birthday; float sc4; s3; 2. 結(jié)構(gòu)體類型名可以省略。第9頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二3.先說明一個(gè)結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義。 struct student char name12; char sex; struct date birthday; float sc4; ; struct student s12=“LiMing”,M,1962,5,10,88,76,85.5,90,“WangM

9、ei”,F,1980,5,3,42,51,23,56;結(jié)構(gòu)體數(shù)組的引用 ,s0.sex,s0.birthday.month ,s1.sex,s1.birthday.month第10頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例1.根據(jù)下面的定義,能打印出字幕M的語句是( )struct person char name9; int age;struct person class10= “John”,17,”Paul”,19,”Mary”,18,”adam”,16;A. printf(“%cn”,);B. printf(“%cn”,

10、1);C. printf(“%cn”,1);D. printf(“%cn”,0);D第11頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例1.已定義且初始化好結(jié)構(gòu)體數(shù)組如上,計(jì)算平均成績,并輸出不及格學(xué)生的姓名。void main( ) int i;float ave,sum=0;printf(不及格學(xué)生有:n); for(i=0;i5;i+) sum+=si.score; if(si.scorenum B. p+ C. (*p).num D. p=&stu.ageD第13頁,共28頁,2022年,5月20日,18點(diǎn)

11、55分,星期二例2.設(shè)有以下定義和語句,以下引用形式不合法的是( )struct s int i1; struct s *i2,*i0;static struct a3=2,&a1,0,4,&a2,&a0,6,0,&a1,*ptr;ptr=a;ptr-i1+ B. *ptr-i2 C. +ptr-i0 D. *ptr-i1例3.設(shè)有如下定義: struct REC int num; char flag;char adr20;rec10,*pr=rec; 下面各輸入語句中錯(cuò)誤的是( ) A. scanf(“%s”,&rec.adr); B.scanf(“%d”,&(*pr).num); C. s

12、canf(“%c”,&(pr-flag); D. scanf(“%c”,&rec1.flag); DA第14頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例4.以下程序的輸出結(jié)果是( )struct stu int x; int *y;*p; int dt4=10,20,30,40; struct stu a4=50,&da0,60,&dt1,70,&dat2,80,&dt3;main() p=a; printf(“%d,”,+p-x); printf(“%d,”(+p)-x); printf(“%dn”,+(*p-y);A. 10,20,20 B.50,60,21 C.51,60

13、,21 D.60,70,31C第15頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例5.以下程序用來按學(xué)生姓名查詢其排名和平均成績。查詢可連續(xù)進(jìn)行,直到輸入0時(shí)結(jié)束。請(qǐng)?zhí)羁铡?define NUM 4struct studentint rank; char *name; float score;_ stu=3,”Tom”,89.3,4,”Mary”,78.2,1,”Jack”,95.1, 2,”Jim”,90.6;main() char str10; int i; doscanf(“%s”,str); for(i=0;i=NUM) printf(“Not founen”);whil

14、e(strcmp(str,”0”)!=0);struct studentstrcmp(str,)=0break;第16頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例6.設(shè)有3人的姓名和年齡存在結(jié)構(gòu)數(shù)組中,以下程序輸出3人中年齡居中者的姓名和年齡。請(qǐng)?zhí)羁铡tatic struct man char name20; int age;person=“l(fā)i-ming”,18,”wang-hua”,19,”zhang-ping”,20;main()int i,j,max,min;max=min=person0.age; for(i=1;imax) _; else if(

15、personi.agemin) _; for(i=0;i3;i+) if(personi.age!=max _ if(personi.age!=min) printf(“%s %sn”,,personi.age); break; max=personi.agemin=personi.age&第17頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體普通變量做函數(shù)參數(shù)結(jié)構(gòu)體普通變量做實(shí)參時(shí),形參也應(yīng)是一個(gè)結(jié)構(gòu)體變量,傳遞時(shí)將實(shí)參的值傳遞給形參,實(shí)參和形參占用不同的內(nèi)存空間。例.以下程序的運(yùn)行結(jié)果是( )struct n int x; char c;void f

16、unc(struct n);main() struct n a=10,x; func(a); printf(“%d,%c”,a.x,a.c);func(struct n b) b.x=20; b.c=y;10,x第18頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體指針變量做實(shí)參例1.以下程序的輸出結(jié)果是( ) struct abcchar c; float v;void fun1(struct abc b)b.c=A; b.v=80.7;void fun2(struct abc *b)(*b).c=C; (*b).v=92.5;void main() struct abc a

17、=B,98.5; fun1(a); printf(“%c,%4.1fn”,a.c,a.v); fun2(&a); printf(“%c,%4.1fn”,a.c,a.v);B,98.5C,92.5第19頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例2.有下列程序:struct Sint n;int a20;void f (struct S *p) int i,j,t;for(i=0;in-1;i+ +)for(j=i+1;jn;j+ +)if(p-aip-aj)t=p-ai;p-ai=p-aj;p-aj=t;main( ) int i; struct S s=10,2,3,l,6,

18、8,7,5,4,10,9;f(&s);for(i=0;is.n;i+ +) printf(%d,s.ai);程序運(yùn)行后的輸出結(jié)果是( )。 (2007年4月二級(jí)C真題)A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,C)2,3,1,6,8,7,5,4,10,9, D)10,9,8,7,6,1,2,3,4,5, A第20頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二結(jié)構(gòu)體數(shù)組做參數(shù)結(jié)構(gòu)體數(shù)組做實(shí)參,形參可以是結(jié)構(gòu)體數(shù)組或者結(jié)構(gòu)體指針變量。例1.函數(shù)stdave的功能是:計(jì)算N個(gè)學(xué)生M門課的平均分,請(qǐng)?zhí)羁铡?define M 5#defin

19、e N 30struct student int num; char name10; float scoreM; float ave;void stdave(struct student s,int n)int i,j; float sum; for(i=0;in;i+) sum=_; for(j=0;jM;j+) sum=sum+_; _=sum/M; void main() struct student persN; stdave(pers,N);0persi.scorejpersi.ave第21頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例2:有以下程序的輸出結(jié)果是: st

20、ruct STU char name10;int num;float TotalScore; void f(struct STU *p) struct STU s2=“SunDan”,20044,550, “Penghua”,20045,537,*q=s; +p;+q;*p=*q; main() struct STU s3=“YangSan”,20041,703, “LiSiGuo”,20042,580; f(s); printf(“%s %d %3.0fn”,,s1.num,s1.TotalScore);第22頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二用type

21、def定義類型typedef int INTEGER;typedef float REAL;聲明一個(gè)新的類型名的方法是: (1)先按定義變量的方法寫出定義體(如 int i;) (2)將變量名換成新類型名。(3)在最前面加typedef。(4)用新類型名去定義變量。例如: struct abc char c; float v;st;等價(jià)于: typedef struct abcchar c; float v;S;等價(jià)于: typedef structchar c; float v;S; struct abc s1; 等價(jià)于 S s1;第23頁,共28頁,2022年,5月20日,18點(diǎn)55分,星

22、期二例2.以下對(duì)結(jié)構(gòu)體變量st的定義中,不正確的是( ) A. struct char c; int a;st; B.struct char c; int a;TT; struct TT st; C. typedef structchar c;int a;TT; TT st; D.#define TT struct TTchar c;int a;st;例3.設(shè)有以下說明語句:Typedef struct int n; char ch8;PER;則下面敘述中正確的是( )A.PER是結(jié)構(gòu)體變量名 B.PER是結(jié)構(gòu)體類型名C.Typedef struct 是結(jié)構(gòu)體類型 D. struct是結(jié)構(gòu)體類型名BB第24頁,共28頁,2022年,5月20日,18點(diǎn)55分,星期二例3.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績和平均分組成,學(xué)號(hào)和8門 課程的成績已在主函數(shù)中給出,請(qǐng)編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。#define N 8typedef structchar num10;double sN;double ave;STREC;void fun(STREC *a) void main() STREC s=“GA005”,85.5,76,69.5,85,91,72,64.5,87.5; int i; fun(&s); printf(“%s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論