第07章例题习题和其它复习材料_第1页
第07章例题习题和其它复习材料_第2页
第07章例题习题和其它复习材料_第3页
第07章例题习题和其它复习材料_第4页
第07章例题习题和其它复习材料_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

第8页共8页例题、习题和补充练习题例题例7-1定义一个结构体类型,它由学生的学号、姓名、性别和成绩四项成员组成。structstudent{intnum;

charname[20];

charsex;

floatscore;

};例7-2定义一个结构体类型,内容是运动员成绩表,它由班级,号码,姓名,项目,分组,成绩,名次七项成员组成。structsports{charclass[20];intnumber;charname[20];charitem[10];chargroups[10];floatscore;intcompet;};例7-3定义一个结构体类型,内容是商品售后服务,它有编号,姓名,电话,地址,商品名,购买日期组成。sturctsevre{intserial;charname[20];longphone;charaddress[30];chartuadname[20];intpurday;};例7-4输入年月日,求出是本年内共过去的天数#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结构体各成员所占的存储空间#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输入一个整数(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);}练习题(见课本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<<"输入复数的实部和虚部:"; cin>>c.real>>; returnc;}voidoutput(complc){ cout<<"复数的实部:"<<c.real<<"复数的虚部:"<<<<'\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<<"二复数之和:";output(c3); cout<<"二复数之差:";output(c4); cout<<"二复数之积:";output(c5); cout<<"二复数之商:";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<<"输入点的坐标(x,y,z):"; cin>>t.x>>t.y>>t.z; returnt;}voidOutput(Pointt){ cout<<"点的坐标为:("<<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<<"请输入学生学号:";cin>>st.num; cout<<"请输入学生姓名:";cin>>; cout<<"请输入C++成绩:";cin>>st.c; cout<<"请输入英语成绩:";cin>>st.eng; cout<<"请输入数学成绩:";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++"<<"英语"<<"数学"<<"物理"<<"平均"<<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"; }}补充练习题选择题以下各组结构体或结构体变量的定义语句中错误的是()。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没有以“;”结束。故答案为B。对于下列结构体变量,说法正确的是()。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之间均不可以相互赋值;结构体变量不可以整体赋值。注:同类型结构体变量之间可以相互赋值;st1和st2虽然组成相同,但不是同一个类型。故答案为B。如下结构体类型的定义,说法正确的是()。structst1{ inta,b; st1s1;};structst2{ inta,b; st2*p;};st1定义正确,st2定义不正确;st1和st2定义都正确;st1定义不正确,st2定义正确;st1和st2定义都不正确。注:st1中包含了自身st1,属递归定义,是错误的;st2*p的含义是st2类型的指针变量p,不属递归定义;故答案为C。某结构体变量定义如下,对此结构体变量的成员的引用形式正确的是()。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,相当于(*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又是一个结构体变量,要逐级引用。故答案为A。下列说法中正确的是()。在程序中定义一个结构体类型,将为此类型分配存储空间;结构体类型的成员名可与结构体以外的变量名相同;结构体类型必须有名称;结构体内的成员不可以是结构体变量注:程序只为变量分配内存空间,不为类型分配。答案为B。下列程序的输出结果为()。#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注:输出的是序号值;默认0、1、2…;可赋值;后面比前一个大1。答案为D。已知学生记录描述如下,设变量中的“生日”是“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。对结构体类型变量的定义不正确的是()。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是结构体类型的关键字;B、structstu是用户定义的结构体类型;C、stutype是用户定义的结构体名;D、a和b都是结构体成员名;注:stu是类型名,stutype是变量名。答案为C。11、根据下列定义,能打印出字母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、以下对结构体成员不正确的引用是()。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、对结构体变量成员的引用不正确的是()。structperson{charname[10];intage;intsex;}std,*p;p=&std;A、std.age B、p->ageC、(*p).age D、*p->age答案为D。14、以下对共同体类型数据叙述正确的是()。可以对共同体变量直接赋值;一个共同体变量中可以同时存放其所有成员;一个共同体变量中不能同时存放其所有成员;共同体变量不能是结构体类型的成员。答案为C。15、若有发以下定义,则正确的是()。uniondata{inti;charc;floatf;}a;datan;A、a=5; B、a={2,'a',1.2};C、cout<<a; D、n=a;注:共同体的使用与结构体类似。答案为D。16、若有以下说明,则不正确的是()。uniondata{inti;charc;floatf;}un;A、un所占的内存长度等于成员f的长度;B、un的地址和它的各成员地址是同一地址;C、un可以作为函数的参数;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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论