第07章例題習(xí)題和其它復(fù)習(xí)材料_第1頁
第07章例題習(xí)題和其它復(fù)習(xí)材料_第2頁
第07章例題習(xí)題和其它復(fù)習(xí)材料_第3頁
第07章例題習(xí)題和其它復(fù)習(xí)材料_第4頁
第07章例題習(xí)題和其它復(fù)習(xí)材料_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8頁共8頁例題、習(xí)題和補充練習(xí)題例題例7-1定義一個結(jié)構(gòu)體類型,它由學(xué)生的學(xué)號、姓名、性別和成績四項成員組成。structstudent{intnum;

charname[20];

charsex;

floatscore;

};例7-2定義一個結(jié)構(gòu)體類型,內(nèi)容是運動員成績表,它由班級,號碼,姓名,項目,分組,成績,名次七項成員組成。structsports{charclass[20];intnumber;charname[20];charitem[10];chargroups[10];floatscore;intcompet;};例7-3定義一個結(jié)構(gòu)體類型,內(nèi)容是商品售后服務(wù),它有編號,姓名,電話,地址,商品名,購買日期組成。sturctsevre{intserial;charname[20];longphone;charaddress[30];chartuadname[20];intpurday;};例7-4輸入年月日,求出是本年內(nèi)共過去的天數(shù)#include<iostream.h>structdate{intday;intmonth;intyear;intyearday;};staticintdaynumber[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};voidmain(){ inti,temp;structdateq;cout<<"enteryear/month/day:"<<endl;cin>>q.year>>q.month>>q.day;temp=q.year%4==0&&q.year%100!=0||q.year%400==0;//求閏年 cout<<"temp="<<temp<<endl; q.yearday=q.day;for(i=0;i<q.month;i++)q.yearday+=daynumber[temp][i];cout<<"theyearpassedday:"<<q.yearday<<endl;}例7-5共同體各成員所占的存儲空間#include<iostream.h>unioninfo{ inta; floatb; floatc;};voidmain(){infos; cout<<"&s.a="<<&s.a<<endl; cout<<"&s.b="<<&s.b<<endl; cout<<"&s.c="<<&s.c<<endl;}例7-6結(jié)構(gòu)體各成員所占的存儲空間#include<iostream.h>structinfo{ inta; floatb; floatc;};voidmain(){infos; cout<<"&s.a="<<&s.a<<endl; cout<<"&s.b="<<&s.b<<endl; cout<<"&s.c="<<&s.c<<endl;}例7-7輸入一個整數(shù)(0~6),值0表示星期天,1~6代表周一至周六,然后顯示今天、昨天和明天分別是星期幾的英文名稱。#include<iostream.h>#include<iostream.h>enumWeek{Sun,Mon,Tue,Wed,Thu,Fri,Sat};Weekntod(intd){ Weekw; switch(d){ case0:w=Sun;break; case1:w=Mon;break; case2:w=Tue;break; case3:w=Wed;break; case4:w=Thu;break; case5:w=Fri;break; case6:w=Sat; } returnw;}voidoutput(Weekw){ switch(w){ caseSun:cout<<"Sunday\n";break; caseMon:cout<<"Monday\n";break; caseTue:cout<<"Tuesday\n";break; caseWed:cout<<"Wednesday\n";break; caseThu:cout<<"Thursday\n";break; caseFri:cout<<"Friday\n";break; caseSat:cout<<"Saturday\n";break; }}voidmain(){ intd=-1; while(d<0||d>6){ cout<<"輸入今日是星期幾(0~6):"; cin>>d; } WeekToday,Yesterday,Tomorrow; Today=ntod(d); Yesterday=ntod((d+6)%7); Tomorrow=ntod((d+1)%7); cout<<"今天是:";output(Today); cout<<"昨天是:";output(Yesterday); cout<<"明天是:";output(Tomorrow);}練習(xí)題(見課本P135)7-6#include<iostream.h>structcompl{ floatreal; floatcom;};compladd(complc1,complc2){ complt; t.real=c1.real+c2.real; =+; returnt;}complsub(complc1,complc2){ complt; t.real=c1.real-c2.real; =; returnt;}complmul(complc1,complc2){ complt; t.real=c1.real**; =*c2.real+c1.real*; returnt;}complave(complc1,complc2){ complt; t.real=(c1.real*c2.real+*)/(c2.real*c2.real+*); =(*c2.real-c1.real*)/(c2.real*c2.real+*); returnt;}complinput(void){ complc; cout<<"輸入復(fù)數(shù)的實部和虛部:"; cin>>c.real>>; returnc;}voidoutput(complc){ cout<<"復(fù)數(shù)的實部:"<<c.real<<"復(fù)數(shù)的虛部:"<<<<'\n';}voidmain(){ complc1,c2,c3,c4,c5,c6; c1=input(); c2=input(); c3=add(c1,c2); c4=sub(c1,c2); c5=mul(c1,c2); c6=ave(c1,c2); cout<<"c1:";output(c1); cout<<"c2:";output(c2); cout<<"二復(fù)數(shù)之和:";output(c3); cout<<"二復(fù)數(shù)之差:";output(c4); cout<<"二復(fù)數(shù)之積:";output(c5); cout<<"二復(fù)數(shù)之商:";output(c6);}7-7#include<iostream.h>#include<math.h>structPoint{ floatx,y,z;};Pointinput(Pointt);voidOutput(Pointt);doubleDistance(Pointt1,Pointt2);voidmain(){ Pointp1,p2,k; p1=input(k); p2=input(k); Output(p1); Output(p2); cout<<"兩點間的距離為:"<<Distance(p1,p2)<<'\n';}Pointinput(Pointt){ cout<<"輸入點的坐標(biāo)(x,y,z):"; cin>>t.x>>t.y>>t.z; returnt;}voidOutput(Pointt){ cout<<"點的坐標(biāo)為:("<<t.x<<','<<t.y<<','<<t.z<<")\n";}doubleDistance(Pointt1,Pointt2){ floatd1,d2,d3; d1=t1.x-t2.x; d2=t1.y-t2.y; d3=t1.z-t2.z; returnsqrt(d1*d1+d2*d2+d3*d3);}7-8#include<iostream.h>structscore{ intnum; charname[20]; floatc,eng,math,phy,average;};scoreinput(scorest);floataverage(floata,floatb,floatc,floatd);voidsort(scorest[],intn);voidprint(scorest[],intn);voidmain(){ scorestudent[20]; for(inti=0;i<5;i++) student[i]=input(student[i]); sort(student,5); print(student,5);}scoreinput(scorest){ cout<<"請輸入學(xué)生學(xué)號:";cin>>st.num; cout<<"請輸入學(xué)生姓名:";cin>>; cout<<"請輸入C++成績:";cin>>st.c; cout<<"請輸入英語成績:";cin>>st.eng; cout<<"請輸入數(shù)學(xué)成績:";cin>>st.math; cout<<"請輸入物理成績:";cin>>st.phy; cout<<endl; st.average=average(st.c,st.eng,st.math,st.phy);

returnst;}floataverage(floata,floatb,floatc,floatd){return(a+b+c+d)/4.0;}voidsort(scorest[],intn){ scoretemp; for(inti=0;i<n-1;i++) for(intj=i;j<n;j++) if(st[i].average<st[j].average) {temp=st[i];st[i]=st[j];st[j]=temp;}}voidprint(scorest[],intn){ cout<<"No."<<"姓名"<<"C++"<<"英語"<<"數(shù)學(xué)"<<"物理"<<"平均"<<endl; for(inti=0;i<n;i++) { cout<<st[i].num<<'\t'; cout<<st[i].name<<'\t'; cout<<st[i].c<<'\t'; cout<<st[i].eng<<'\t'; cout<<st[i].math<<'\t'; cout<<st[i].phy<<'\t'; cout<<st[i].average<<endl; }}7-10#include<iostream.h>enumcolor{Red,Blue,Green};voidprint(colorcol){ switch(col){ caseRed:cout<<"Red\t";break; caseBlue:cout<<"Blue\t";break; caseGreen:cout<<"Green\t";break; }}voidmain(){ colori,j,k; intn=0; for(i=Red;i<=Green;i=(color)((int)i+1)) for(j=Red;j<=Green;j=(color)((int)j+1)) for(k=Red;k<=Green;k=(color)((int)k+1)) if(i!=j&&j!=k&&i!=k){ cout<<++n<<'\t'; print(i);print(j);print(k); cout<<"\n"; }}補充練習(xí)題選擇題以下各組結(jié)構(gòu)體或結(jié)構(gòu)體變量的定義語句中錯誤的是()。A、structst{B、structst{ inta,b;inta,b; floatx,y;floatx,y;}}s1,s2;sts1,s2;C、structst{D、struct{ inta,b;inta,b; floatx,y;floatx,y;};}s1,s2;注:A在定義類型st的同時說明變量s1,s2;C只定義了類型st;D說明了某種類型的s1,s2;B沒有以“;”結(jié)束。故答案為B。對于下列結(jié)構(gòu)體變量,說法正確的是()。structst1{ inta,b; floatx,y;}s1,s2;structst2{ inta,b; floatx,y;}s3,s4;s1、s2、s3、s4可以相互賦值;只有s1和s2、s3和s4之間可以相互賦值;s1、s2、s3、s4之間均不可以相互賦值;結(jié)構(gòu)體變量不可以整體賦值。注:同類型結(jié)構(gòu)體變量之間可以相互賦值;st1和st2雖然組成相同,但不是同一個類型。故答案為B。如下結(jié)構(gòu)體類型的定義,說法正確的是()。structst1{ inta,b; st1s1;};structst2{ inta,b; st2*p;};st1定義正確,st2定義不正確;st1和st2定義都正確;st1定義不正確,st2定義正確;st1和st2定義都不正確。注:st1中包含了自身st1,屬遞歸定義,是錯誤的;st2*p的含義是st2類型的指針變量p,不屬遞歸定義;故答案為C。某結(jié)構(gòu)體變量定義如下,對此結(jié)構(gòu)體變量的成員的引用形式正確的是()。sstructst{ inta,b; floatx,y;}s1,*p;p=&b1;A、s1->a B、p->b C、p.x D、*p.y注:p=&b1的含義是把b1的地址賦給p,p->b的含義是p指向b,相當(dāng)于(*p).b,即為p所指對象的值。故答案為B。下面定義中,對成員變量x的引用形式正確的是()。structst1{ inta,b; floatx,y;};structst2{ inta,b; st1s1;}ss;A、ss.s1.x B、s1.xC、s1.ss.x D、ss.x注:ss的成員s1又是一個結(jié)構(gòu)體變量,要逐級引用。故答案為A。下列說法中正確的是()。在程序中定義一個結(jié)構(gòu)體類型,將為此類型分配存儲空間;結(jié)構(gòu)體類型的成員名可與結(jié)構(gòu)體以外的變量名相同;結(jié)構(gòu)體類型必須有名稱;結(jié)構(gòu)體內(nèi)的成員不可以是結(jié)構(gòu)體變量注:程序只為變量分配內(nèi)存空間,不為類型分配。答案為B。下列程序的輸出結(jié)果為()。#include<iostream.h>enumcolor{red,yellow=3,blue,green=blue+3,black};voidmain(){colorc1=red,c2=yellow,c3=blue,c4=green,c5=black;cout<<c1<<'\t'<<c2<<'\t'<<c3<<'\t';cout<<c4<<'\t'<<c5<<'\n';}A、01034B、03038C、13478D、03478注:輸出的是序號值;默認(rèn)0、1、2…;可賦值;后面比前一個大1。答案為D。已知學(xué)生記錄描述如下,設(shè)變量中的“生日”是“2001年3月30日”,下列對“生日”賦值正確的是()。structstudent{intno;charname[20];charsex;struct{intyear;intmonth;intday;}birth;};structstudents;A、year=2001;month=3;day=30;B、birth.year=2001;birth.month=3;birth.day=30;C、s.year=2001;s.month=3;s.day=30;D、s.birth.year=2001;s.birth.month=3;s.birth.day=30;答案為D。對結(jié)構(gòu)體類型變量的定義不正確的是()。A、#defineSTUDENTstructstudentSTUDENT{intnum;floatage;}std1;B、structstudent{intnum;floatage;}std1;C、struct{intnum;floatage;}std1;D、struct{intnum;floatage;}student;structstudentstd1;注:D為沒有類型名,直接定義變量,此法不可重新說明變量。答案為D。10、以下說明語句,敘述不正確的是()。structstu{inta;floatb;}stutype;A、struct是結(jié)構(gòu)體類型的關(guān)鍵字;B、structstu是用戶定義的結(jié)構(gòu)體類型;C、stutype是用戶定義的結(jié)構(gòu)體名;D、a和b都是結(jié)構(gòu)體成員名;注:stu是類型名,stutype是變量名。答案為C。11、根據(jù)下列定義,能打印出字母M的語句是()。structperson{charname[10];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16}A、cout<<class[3].name;B、cout<<class[3].name[1];C、cout<<class[2].name[1];D、cout<<class[2].name[0];注:class[2]為"Mary",18,其中name[]為"Mary",name[0]為M。答案為D。12、以下對結(jié)構(gòu)體成員不正確的引用是()。structperson{charname[10];intage;intsex;}pup[5],*p;p=pup;A、cin>>pup[0].name;B、cin>>&pup[0].name;C、cin>>(*p).age;D、cin>>p->sex;注:C和D含義類似,皆為p所指的對象,B為輸入地址。答案為B。13、對結(jié)構(gòu)體變量成員的引用不正確的是()。structperson{charname[10];intage;intsex;}std,*p;p=&std;A、std.age B、p->ageC、(*p).age D、*p->age答案為D。14、以下對共同體類型數(shù)據(jù)敘述正確的是()??梢詫餐w變量直接賦值;一個共同體變量中可以同時存放其所有成員;一個共同體變量中不能同時存放其所有成員;共同體變量不能是結(jié)構(gòu)體類型的成員。答案為C。15、若有發(fā)以下定義,則正確的是()。uniondata{inti;charc;floatf;}a;datan;A、a=5; B、a={2,'a',1.2};C、cout<<a; D、n=a;注:共同體的使用與結(jié)構(gòu)體類似。答案為D。16、若有以下說明,則不正確的是()。uniondata{inti;charc;floatf;}un;A、un所占的內(nèi)存長度等于成員f的長度;B、un的地址和它的各成員地址是同一地址;C、un可以作為函數(shù)的參數(shù);D、不能對un賦值,但可以在定義un時對它初始化。17、下面對共同體變量正確訪問的是()。uniondata{inti;charch;doublef;}a,*p;p=&a;A、cin>>a;B、cin>>a.i>>a.ch>>a.f;C、cin>>p;D、cin>>p.i;答案為B。填空題1、下列程序的輸出為。#include<iostream.h>voidmain(){structstudent{ inta,b;charstr1[4];}st1[5]={1,2,'a','b','c','d','e','f','g','h'};cout<<st1[1].a<<'\t'<<st1[1].str1<<'\n';}答案:101gh2、有定義enumcolor{red=5,yellow=0,blue=5,wh

溫馨提示

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

評論

0/150

提交評論