版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c++primerplus第六版第七章编程练习1.⽤函数计算输⼊的两个数的调和平均数,结果返回给main//练习7.1main输出结果函数计算输⼊的调和平均数,#include<iostream>usingnamespacestd;doublecount(double,double);intmain(){doublex=0.0,y=0.0;cout<<"Pleaseenterthevalueofxandy:";//cin>>x>>y;while(cin>>x>>y){if(x==0||y==0){break;}doublevalue=count(x,y);cout<<"TheHarmonicmeanofxandyis:"<<value<<endl;cout<<"Continue:";}cout<<"Bye"<<endl;system("pause");return0;}doublecount(doublem,doublen){doubletemp;temp=2.0*m*n/(m+n);returntemp;}把while的判断句式改成cin看看?很好玩哦2.处理⾼尔夫成绩输⼊,使⽤3个数组处理函数分别对应输⼊、显⽰和计算平均成绩的操作。//练习7.2⾼尔夫成绩处理程序//最多输⼊10个成绩,存储在数组中//使⽤3个函数分别对应输⼊、显⽰和计算平均成绩//⾼尔夫计分准则是杆数,⽤多少杆打完18个洞,国际标准是72杆,如果打出少于72杆(⽐如70杆,那就是-2)#include<iostream>#include<string>usingnamespacestd;constintMax=10;intfill_arr(int[],int);voidshow_grade(constint[],int);doublecount_grade(constint[],int);intmain(){int*fraction=newint[Max];intm;cout<<"Howmanyvalidresultsdoyouwanttoenter?";cin>>m;intsize=fill_arr(fraction,m);if(size>0){doubleaverage_grade=count_grade(fraction,size);show_grade(fraction,size);cout<<"Theaverageofthegradeis"<<average_grade<<'.'<<endl;}delete[]fraction;system("pause");return0;}intfill_arr(intarr[],intn){cout<<"Pleaseentergrade(qtoquit)"<<endl;inttemp,i;for(i=0;i<n;i++){cout<<'#'<<i+1<<':';cin>>temp;if(!cin){cin.clear();break;}arr[i]=temp;}returni;}voidshow_grade(constintarr[],intn){for(intj=0;j<n;j++){cout<<"#"<<j+1<<':'<<arr[j]<<'';}cout<<endl;}doublecount_grade(constintarr[],intn){doubletemp;intsum=0;for(intk=0;k<n;k++){sum+=arr[k];}temp=(double)sum/n;returntemp;}上⾯是两个输出结果,⼀个是限定输⼊内的结果(前图),另外⼀张是中途退出输出的结果。3.编写结构体box,并编辑两个处理结构体元素的函数//7.3练习结构体处理//包含两个函数show_val()和reset()//前者按值传递结构体并显⽰值,后者参量为结构体地址,重置其中volume为其他三维长度的乘积#include<iostream>#include<string>usingnamespacestd;constintMax=10;structbox{charmaker[40];floatheight;floatlength;floatwidth;floatvolume;};voidshow_val(constbox);voidreset(box*p);intmain(){boxbox1{"JohnWick",10.0,100.0,40.0,0.0};show_val(box1);reset(&box1);cout<<endl;show_val(box1);system("pause");return0;}voidshow_val(constboxb1){cout<<"Maker:"<<b1.maker<<endl;cout<<"#Length:"<<b1.length<<endl;cout<<"#Width:"<<b1.width<<endl;cout<<"#Leight:"<<b1.height<<endl;cout<<"#Volume:"<<b1.volume<<endl;}voidreset(box*p){p->volume=p->length*(p->height)*(p->width);}4.重写程序清单7.4的计算彩票中奖⼏率程序//练习7.4重写程序清单7.4//从域号码(1-47)中选取5个号码,再从第⼆区间(1-27)中选⼀个,全部猜中才算中奖//中奖⼏率:前者⼏率和后者⼏率的乘积//原程序中只需要调⽤⼀次函数,可改写成调⽤两次并相乘#include<iostream>longdoubleprobability(unsignednumbers,unsignedpicks);intmain(){usingnamespacestd;doubletotal,choices,award=1;intn;cout<<"Howmanytimesdoyouwanttochcice?";cin>>n;//cin.get();cout<<"Enterthetotalnumberofchoicesonthegamecardand\n""thenumberofpicksallowed:"<<endl;inti=0;while((cin>>total>>choices)&&choices<=total){award*=probability(total,choices);if(i>=n-1)break;i++;cout<<"Again(qtoquit):";}cout<<"Youhaceonechancein";cout<<award;cout<<"ofwinning."<<endl;cout<<"Bye."<<endl;system("pause");return0;}longdoubleprobability(unsignednumbers,unsignedpicks){longdoubleresult=1.0;longdoublen;unsignedp;for(n=numbers,p=picks;p>0;n--,p--)result=result*n/p;returnresult;}这是我刚睡醒迷迷糊糊敲的,将就着看吧。5.编写⼀个递归函数来计算阶乘结果//7.5练习定义⼀个递归(递龟)函数来计算阶乘//输⼊⼀个整数n,如果#include<iostream>longfactorial(int);usingnamespacestd;intmain()n>0,n!=n*n-1!则(){intm=0;longresult=0;cout<<"Howmanytimesdoyouwanttoenter?";cin>>m;for(inti=0;i<m;i++){intinteger;cout<<"#"<<(i+1)<<':';cin>>integer;result=factorial(integer);cout<<"Theresultofthe"<<integer<<"!is"<<result<<'.'<<endl;}system("pause");return0;}longfactorial(intn){longtemp;if(n==0||n==1)temp=1;elsetemp=n*factorial(n-1);returntemp;}6.编写数字数组处理程序//7.6编写⼀个关于double数组的输⼊、显⽰和反转程序练习//三个函数分别对应输⼊、显⽰和反转功能//fill_arrayshow_array(显⽰)和reverse_array(反转)(输⼊)、#include<iostream>#include<iomanip>intfill_array(double*arr,int);voidshow_array(constdouble*arr,int);voidreverse_array(double*arr,int);usingnamespacestd;constintMax=20;intmain(){intm=0;double*number=newdouble[Max];cout<<"Howmanynumbersneedtobeentered?";cin>>m;m=fill_array(number,m);show_array(number,m);reverse_array(number,m);show_array(number,m);delete[]number;system("pause");return0;}intfill_array(double*arr,intn){cout<<"Pleaseenterthenumber.(Entercharacterotherthannumberstoquit)"<<endl;inti=0;cout<<"#"<<i+1<<":";cout<<"#"<<i+1<<":";while(cin>>arr[i]){i++;if(i==n)break;cout<<"#"<<(i+1)<<":";}returni;}voidshow_array(constdouble*arr,intn){cout<<"Thevalueofthearrayis:"<<endl;for(inti=0;i<n;i++){cout<<setw(8);cout<<"#"<<(i+1)<<":"<<arr[i]<<"";if((i+1)%5==0){cout<<endl;}}cout<<endl;}voidreverse_array(double*arr,intn){inttemp;while(n){if(n==1){cout<<"Itisnoneedtoreversethem.";break;}for(inti=0,j=n-1;i<(n/2);i++,j--){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}break;}}上⾯分别是预期数量的输⼊和字符退出的显⽰,程序允许在定期输⼊前进⾏退出。7.改写程序清单7.7//7.7改写程序清7.7的数组处理使之可⽤区间练习//fill_array不返回实际读取数字,⽽是返回尾指针//其他函数可以使⽤这个指针作为参数标识结尾#include<iostream>#include<iomanip>double*fill_array(double*Begin,double*end);//返回指针的函数voidshow_array(constdouble*Begin,constdouble*end);voidrevalue(double*Begin,double*end,doubler);usingnamespacestd;constintMax=5;intmain()intmain(){double*temp;doubleproperties[Max];temp=fill_array(properties,properties+Max);show_array(properties,temp);if(temp!=properties){cout<<"Entertherevaluationfactor:";doublefactor;while(!(cin>>factor)){cin.clear();while(cin.get()!='\n')continue;cout<<"Badinput;enteragain:";}revalue(properties,temp,factor);show_array(properties,temp);}cout<<"Done."<<endl;system("pause");return0;}double*fill_array(double*Begin,double*end){staticdouble*pt;//c++不允许返回局部变量的地址,所以给需要返回的地址进⾏范围拓展doubletemp=0.0;inti=0;for(pt=Begin;pt!=end;pt++,i++){cout<<"Entervalue#"<<(i+1)<<":";cin>>temp;if(!cin){cin.clear();while(cin.get()!='\n')continue;cout<<"Badinput;inputprocessterminated.\n";break;}elseif(temp<0)break;*pt=temp;}returnpt;}voidshow_array(constdouble*Begin,constdouble*end){constdouble*pt;inti=0;cout<<"Thevalueofthearrayis:"<<endl;for(pt=Begin;pt!=end;pt++,i++){cout<<setw(8);cout<<"Property#"<<(i+1)<<":$"<<*pt<<"";if((i+1)%3==0){cout<<endl;}}cout<<endl;}voidrevalue(double*Begin,double*end,doubler){double*pt;double*pt;for(pt=Begin;pt!=end;pt++){*pt=(*pt)*r;}}照抄书本的输⼊,同样的预期输⼊和范围外输⼊,关于返回指针的函数的编写很有意思。8.在不使⽤array类完成程序清单7.15的⼯作,以下两个版本:a.使⽤constchar*数组存储表⽰季度名称的字符串,使⽤double数组存储开⽀;//7.8_a在不使⽤array类完成程序清单7.15练习的⼯作//constchar*double数组存储开⽀使⽤数组存储表⽰季度名称的字符串,使⽤#include<iostream>#include<iomanip>constchar*season[]={"Spring","Summer","Autumn","Winter"};//指向四个字符串的常指针型数组voidfill_array(double*arr);voidshow_array(constdouble*arr);usingnamespacestd;constintsea=4;intmain(){double*sales=newdouble[sea];fill_array(sales);show_array(sales);cout<<"Bye."<<endl;delete[]sales;system("pause");return0;}voidfill_array(double*arr){cout<<"Pleaseenterthesales."<<endl;for(inti=0;i<sea;i++){cout<<season[i]<<":";cin>>arr[i];}}voidshow_array(constdouble*arr){doubletotal=0.0;cout<<endl<<"Thesalesoftheseason."<<endl;for(intj=0;j<sea;j++){cout<<season[j]<<":"<<arr[j]<<endl;total+=arr[j];}cout<<"Thesaleoffourseasonis:"<<total<<"."<<endl;}b.使⽤constchar*数组存储表⽰季度的字符串,并使⽤只包含⼀个成员(⽤于存储开⽀的double数组)的结构。//7.8_b在不使⽤array类完成程序清单7.15练习的⼯作//constchar*double使⽤数组存储表⽰季度的字符串,并使⽤只包含⼀个成员(⽤于存储开⽀的数组)的结构#include<iostream>#include<iomanip>constchar*season[]={"Spring","Summer","Autumn","Winter"};//指向四个字符串的常指针型数组voidfill_array(structexpense*arr);voidshow_array(constexpense*arr);usingnamespacestd;constintsea=4;structexpense{doubleexpen;};intmain(){expense*sales=newexpense[sea];fill_array(sales);show_array(sales);cout<<"Bye."<<endl;delete[]sales;system("pause");return0;}voidfill_array(structexpense*arr){cout<<"Pleaseenterthesales."<<endl;for(inti=0;i<sea;i++){cout<<season[i]<<":";cin>>arr[i].expen;}}voidshow_array(constexpense*arr){doubletotal=0.0;cout<<endl<<"Thesalesoftheseason."<<endl;for(intj=0;j<sea;j++){cout<<season[j]<<":"<<arr[j].expen<<endl;total+=arr[j].expen;}cout<<"Thesaleoffourseasonis:"<<total<<"."<<endl;}9.提供主函数及函数原型,完善函数使其达标。练习//7.9补充程序所⽤函数//constchar*double使⽤数组存储表⽰季度的字符串,并使⽤只包含⼀个成员(⽤于存储开⽀的数组)的结构#include<iostream>intgetinfo(structstudentpa[],intn);voiddisplay1(studentst);voiddisplay2(conststudent*ps);voiddisplay3(conststudentpa[],intn);usingnamespacestd;constintSLEN=30;structstudent{charfullname[SLEN];charhobby[SLEN];intooplevel;};intmain()intmain(){cout<<"Enterclasssize:";intclass_size;cin>>class_size;while(cin.get()!='\n')continue;student*ptr_stu=newstudent[class_size];intentered=getinfo(ptr_stu,class_size);for(inti=0;i<entered;i++){display1(ptr_stu[i]);display2(&ptr_stu[i]);}display3(ptr_stu,entered);delete[]ptr_stu;cout<<"Done."<<endl;system("pause");return0;}intgetinfo(structstudentpa[],intn){intnumbers=0;for(inti=0;i<n;i++){cout<<"student#"<<(i+1)<<":";cout<<"name:";cin.get(pa[i].fullname,SLEN).get();cout<<"Hobby:";cin.get(pa[i].hobby,SLEN).get();cout<<"ooplevel:";cin>>pa[i].ooplevel;while(cin.get()!='\n')continue;numbers++;}returnnumbers;}voiddisplay1(studentst){cout<<endl;cout<<"name:"<<st.fullname<<endl;cout<<"Hobby:"<<st.hobby<<"ooplever:"<<st.ooplevel<<endl;}voiddisplay2(conststudent*ps){cout<<endl;cout<<"name:"<<ps->fullname<<endl;cout<<"Hobby:"<<ps->hobby<<"ooplever:"<<ps->ooplevel<<endl;}voiddisplay3(conststudentpa[],intn){cout<<endl;for(inti=0;i<n;i++){cout<<"#"<<(i+1)<<""<<pa[i].fullname<<endl;cout<<"Hobby:"<<pa[i].hobby<<"ooplevel:"<<pa[i].ooplevel<<endl;}}10.按题⽬要求,编写通过函数指针作为参数来调⽤其他函数的calculate函数,另外两个add函数和multipy函数进⾏计算,主函数循环调⽤calculate计算输出结果,有点赶⼯,就没有细致测试,各位同僚可以试⼀下浮点数。//7.10练习编写函数调⽤程序//练习7.10编写函数调⽤程序//calculate函数负责调⽤add函数和multipy函数#include<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产1.9万套3D生物打印椎间盘支架生产项目可行性研究报告
- 小学美术教师招聘考试试题及答案
- 2026 年大学秋季开学法治安全教育宣讲课
- 智慧蚕桑工厂项目可行性研究报告
- 2026 年校园食品安全管控专题课件
- 物业维修工程试题及答案
- 2026年专业技术人员公需科目地质灾害隐患排查治理试题及答案
- 2026年体育项目申报笔试真题
- 2026年汽车美容装潢工理论知识模拟试题及答案
- 2026年公务用车管理专职岗面试试题(含答案)
- 危化品车辆安全培训课件
- 备战2026中级经济师-经济基础知识重点总结
- 商务会见活动方案
- (高清版)DB31∕T 1564-2025 企业实验室危险化学品安全管理规范
- 2025数据处理与保密协议合同书
- 儿童弹性髓内钉课件
- 2025年家庭医生签约服务职业技能竞赛-全科医师试题
- 电信运营商网络资源租用合同
- 广州市从化区纪委监委公开招考8名合同制纪检监察辅助人员(高频重点提升专题训练)共500题附带答案详解
- DZ∕T 0270-2014 地下水监测井建设规范
- DB3210T 1178-2024林权地籍调查技术规程
评论
0/150
提交评论