《C语言程序设计》教材习题答案第9章_第1页
《C语言程序设计》教材习题答案第9章_第2页
《C语言程序设计》教材习题答案第9章_第3页
《C语言程序设计》教材习题答案第9章_第4页
《C语言程序设计》教材习题答案第9章_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题1、若已经定义“structStU{inta,b;}student;",则下列输入语句中正确的是D)scanf(ζζ%d,∖<fcstudent.a);2、若已有以下结构体定义,则值为2的表达式是A)c[O].y:Stmctcmplx{mtX:mty;}c[]={l,2,3,4}:3、设有如下程序段,则vu.a的值为D)A、B、C都不是unionu{Inta;mtb;floatc;}vu;vu.a=l;vu.b=2;vu.c=3;4、设已经定义“unionu{chaιa;mtb;}vu;”在VC中存储cħar型数据需要1个字节,存储Int型数据需要4个字节,则存储变量VU需要B)4个字节5、设已经定义"unιonu{inta;intb}vu={l,2};“,则D)该定义错误6、设有定义“enumdate{yeaι∖month,day}d;”则卜列叙述中正确的是A)date是类型、d是变量、yeaι是常量7、设有定义“enumdate{yeaι,month,day}d;”则正确的表达式是B)d=year8、若已经定义了“typedefstructstu{inta,b}StUdent;”则卜列叙述中正确的是C)StUdent是结构体类型9、下列有关typedef语句的叙述中,正确的是C)typedef语句用于给已定义类型取别名二、编程题1、设计一个通讯录的结构体类型,并画出该结构体变量在内存中的存储形式StlllCt{namechar[10];telephoneclιar[20];addresschaι[100];);name占10个字节telephone占20个字节address占100个字节2、用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点之间的距离⅛iιιclude<stdιo.h>#include<matlι.h>voidmain()(StmctPomt{floatx;floaty;}a,b;Pnntfr输入点a的横坐标:∖ιΓ);SCanfC%f',&a.x);Pnntf(”输入点a的纵坐标:∖ιΓ);SCanfC%f',&a.y);Pdntfc输入点b的横坐标:∖ιΓ);SCanfV%f',&b.x);PdntfC输入点b的纵坐标Xr);SCanfV%f',&b.y);Pnntf(Ma、b两点之间的距离为:%f∖nii,sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));)3、用结构体变量表示口期(年、月、口),任意输入两个口期,求它们之间相差的天数⅛iιιclude<iostreaιn>⅛iιιclude<stdιo.h>usingnamespacestd;^defineDAY_OF.YEAR365〃一年的天数,当为闰年时需要另外操作〃口期结构体typedefstnictdate(intveaɪ-;intmonth;iɪitday;mtday_of_year;//该口为该年的第几天}DATE.*DATE_P;〃函数声明boolconipeai(DATE_Pmax,DATE_Pmin);mttitoal(DATE-Pdate);boolleap-yeaι(constmtyear);mtftιntιon(DATE-Pnιax,DATE_Pmin);〃主函数voidmain()DATEdate1,date2;DArE_Pmax,nun;

intresult;〃输入的两个口期//maX指向大口期,mm指向小口期〃数据输入Pnntfr请输入日期1的数据项,年月日间用空格阁开:∖n'∙);SCanf("%d%d%cΓ,&date_l.yeai;&date_l.month.&date_l.day);Pnntfr请输入日期2的数据项,年月日间用空格阁开:∖n'∙);SCanf("%d%d%d”,&date_2.yeai;&date_2.month.&date_2.day);〃数据处理if(!ComPUaiQnaX=&date_l,inin=&date_2)) 〃比较口期大小,不需要交换result=fυntιon(max,nιiιι);else 〃需要交换result=fυntιon(nun,max);〃结果Pnntf(M两日期间相差的天数为:%d\n”,result);〃比较两口期的大小boolconipeai(DATE_Pmax,DATE_Pmin)〃max的口期小于mm的口期,口期对调

if((nιax->year<nun->year))return1;elseif((max->year=nun->year))(if((max->month<nιuι->month))return1;elseif((max->month=ιnπι->month))

if((max->day<nun->day))return1;)//max的年份小于ιnin//max和ιιιin的年份相同//max的月份小于Iiun//max和mill的月份相同

//max的□小于nun〃其他情况满足max的口期大于(等于)min,口期保持不变return0;〃计算相差天数mtftιntιon(DATE-Pnιax,DATE_Pmin)(〃年份相同,相差天数为大口期减小口期if(max->yeaι∙==nmι->year)〃计算大口期nιax->dayβoflyear=titoal(max);〃计算口期函数if(leap-year(max->year)) 〃如果为闰年if((max->month==2&&max->day==29)∣∣max->month>2)max->day-of.yeaι∙++;〃计算小口期nuιι->da‰oflyear=titoal(ιnιιι);if(ieap-year(nιin->yeaι)) 〃如果为闰年if((nιiιι->montlι==2&&nιhι->day==29)∣∣nun->month>2)nuii->day_of_year++;〃返回相差天数returnmax->day-of,yeaι-nun->day_of_year;}〃年份不同,相差天数为max、mm剩余天数和之间年的天数总和mtmax-year,nιiιvyeaι;OtheLyear=0;〃计算大口期max->da‰oflyeaι∙=titoal(max);if(leap-yeaι(nιax->year)) 〃如果为闰年if((nιax->montlι==2&&nιax->day==29)∣∣max->month>2)nιax->day.ofLyear++;max-year=niax->day_of.year;〃计算小日期niui->day_of.yeai=titoal(miιι);if(ieap-yeaι(nιiιι->yeaι)) 〃如果为闰年if((nιiιι->month==2&&nuιι->day=29)∣∣nιiιι->month>2)nιiιι->dayβofLyear++;milLyear=DAYeOFeYEAR-niiii->day_of,year;〃剩余的天数if(leap-yeaι(nmι->yeaι)) 〃如果为闰年天数加1nwιβyear++;〃计算之间的口期iɪitVeaI;f∂ι(yeaι∙=nιiιι->year+1;year<nιax->yeaι;year++)OtheLyeaI+=DAY_OF_YEAR+leap_yeat(year);〃一年的天数,并考虑是否为闰年〃返回总天数returnmax_year+ιnιn-yeaι∙+otheι-year;)〃计算某口该年的第几天,闰年也按平年处理mttitoal(DATE-Pdate)mtresult=0; //最后结果inti; 〃标记月份foι(i=l;i<date->month;i++) 〃计算以过月份的天数(switcħ(i){case1:case3:case5:CaSeIo:result+=31;break;〃大月31天,注:12月不会出现,所以忽略不写case4:case6:case9:caseIkresult+=30;break;〃小月31天default:ɪesult+=28; /∕2月28天}}ιetυιnresult+=date->day; 〃加上本月天数既为最后结果)〃判断某年是否为闰年,若是返回1,否则返回0boolleap-yeaι(constIntyear)(if((!(yeaι%4)&&yeaι%100)∣∣!(yeaιx⅛400))return1;return0;}4、用结构体变量表示复数(实部和虚部),输入两个更数,求两复数之积⅛iιιclude<stdιo.h>Stmctcom{intreal;intim;);voidmain()Stiiictcoma.b,c;Stmctcomcmult(stmctcomCreaI,structcomcim);mti,j;Pnntf(”输入两个更数的实部和虚部:”);scanf(H%d%d%d%d,\&a.real.&a.iiiL&b.real,&b.im);c=cmult(a,b);PlintfVI乘积为:%d+%dι",c.realx.un);)Stmctcomcmult(stmctcomcreal,structcomciιn) ∕*求乘积的函数*/(Stmctcoma;a.real=cieal.real*cim.real-cieal.mi*cim.im;a.iιn=cιeal.ιeal*cim.un+creal.im*ciιn,real;retum(a);}∕*设复数为a÷bι和c÷dι,那么和为:(a+c)+(b+d)ι,乘积为:(ac-bd)+(ad+bc)ι。*/5、有20个学生,每个学生的数据包括学号(num)、姓名(name)、性别(sex)、5门课程成绩(score[5])o要求编写一个程序,输入学生数据,计算并输出每个学生的总分和平均分。#iiiclude<stdιo.h>存defineN2voidmaιn()(Stnictstudent{mtnum;chaιname[10];chai-sex[10];mtscoιe[5];mtsum;floataverage;};Stmctstudentstυ[N],s;intij;fbi(i=O;i<N;i++){stυ[ι].sum=0;stυ[ι].average=O;Plintfv'pleasescanfnumnamesexscore(l)score(2)scoιe(3)score(4)score(5)∖ιιπ);scaιιf(,,⅜d%s%s,∖<Srstu[i].num,stu[ι].naιιιe,stu[ι].sex);for(j=0j<5λj++)scanf(π%d,∖(fcsħι[ι].score[j]);sħι[ι].sum÷=stu[ι].scoreŋ];)stu[ι].average=stυ[i].sunr,5.0;}fbr(i=0*<Nj++){Pnntf("numnamesexscoιe(l)score(2)score(3)score(4)score(5)sumaverage's");PrmtfV'%d%s%s”,stυ[i].nun‰stu[i].name5stu[i].sex);for(j=0j<5λj++)(priιιtf(,,%d,∖stu[i].score[j]);)PrintfV'%d",stu[i].sum);PrintfV'%f",stu[i].average);PnntfV\n");}}6、箱子中有若干个红、黄、白3中颜色的小球,每次从中取出2个,求得到两种不同颜色的小球的可能情况,并输出每种颜色组合(使用枚举类型)#include<stdιo.h>#include<stπng.h>voidmain()(enuπιColor{RedsYellow,White};enuπιColori,j;fbr(i=Red;i<=Wlii

温馨提示

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

最新文档

评论

0/150

提交评论