ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:21.50KB ,
资源ID:8586222      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8586222.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++程序设计第一章函数编程题.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++程序设计第一章函数编程题.docx

1、C+程序设计第一章函数编程题6-1工作备忘录的生成(链表)(10分)每天都要处理很多事务,为了更好地安排工作,希望在每天开始工作前,根据工作记录,生成工作备忘录。首先输入工作记录数(大于0的一个整数),再逐条输入各条工作记录,每条工作记录包括:工作名,开始时间,结束时间。假设每项工作的开始时间均小于它的结束时间,并且各项工作的开始时间互不相同。我们的工作是需要把这些工作记录按开始时间排序并输出,在输出时,如果某项工作与若干项工作冲突(在做该项工作时,需要同时做其它工作),则在该工作名前加*。函数接口定义:Node*add(Node*,Node*);voiddisplay(Node*);裁判测试

2、程序样例:#include#includeusingnamespacestd;structNodestringname;intstart;intend;Node*next;Node*add(Node*,Node*);voiddisplay(Node*);boolcheck(Node*head)if(head=NULL|head-next=NULL)returntrue;Node*p=head-next;if(head-startp-start)returnfalse;returncheck(p);intmain()Node*head=NULL,*p;inti,repeat;cinrepeat;

3、for(i=0;ip-namep-startp-end;p-next=NULL;head=add(head,p);if(!check(head)coutERRORstartstart)/当前的q节点不是末尾,并且q节点的起始时间早于p节点的起始时间s=q;/s始终在q的前面q=q-next;/直到当前节点NULL或者q的起始时间晚于p的起始时间if(q=head)/p应该接在链表的开始位置,即成为新的表头p-next=head;head=p;elsep-next=q;s-next=p;returnhead;voiddisplay(Node*head)Node*p=head,*q;boolcon

4、flict;/用于标识是否有冲突while(p!=NULL)/当前p节点不空,是有效任务conflict=false;q=head;while(!conflict&q!=p)/检查p的开始时间是否小于p之前的任务的结束时间if(q-endp-start)/p之前的任务的结束时间如果大于p的开始时间则冲突conflict=true;break;q=q-next;q=p-next;while(!conflict&q!=NULL)/检查p的结束时间是否大于p之后的任务的开始时间if(p-endq-start)/p之后的任务的开始时间如果大于p的结束时间则冲突conflict=true;break;q

5、=q-next;if(conflict)/当前任务与其它的任务时间冲突cout*;coutnamestartendnext;第一章2/136-2函数调用(10分)编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。函数接口定义:intmax(inta,intb);intmin(inta,intb);intsum(inta,intb);intcompute(inta,intb,int(*func)(int,int);裁判测试程序样例:在这里给出函数被调用进行测试的例子。例如:#inc

6、ludeusingnamespacestd;intmax(inta,intb);intmin(inta,intb);intsum(inta,intb);intcompute(inta,intb,int(*func)(int,int);intmain()inta,b,res;cinab;res=compute(a,b,&max);coutMaxofaandbisresendl;res=compute(a,b,&min);coutMinofaandbisresendl;res=compute(a,b,&sum);coutSumofaandbisresb)returna;elsereturnb;in

7、tmin(inta,intb)if(ab)returna;elsereturnb;intsum(inta,intb)returna+b;intcompute(inta,intb,int(*func)(int,int)return(*func)(a,b);第一章3/136-3函数指针(理科实验班)(7分)梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。输入将首先输入学生数n,(n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科

8、综合成绩。学号及四科成绩均为不超过的正整数。输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同。裁判测试程序样例:#includeusingnamespacestd;constintN=80;structStudentintnum;intscore4;/*请在这里填写答案*/intmain()inti,j,k,n;bools2(constStudent&,constStudent&);bools4(constStudent&,constStudent&);StudentstN;cinn;for(i=0;i

9、sti.num;for(j=0;jsti.scorej;coutselect(st,n,s2)endl;coutselect(st,n,s4)endl;输入样例:3614815012025251481501172607145148128287输出样例:57bools2(constStudent&s1,constStudent&s2)/比较s1和s2两位学生的数学+英语大小,如果s2的大则返回trueif(s1.score0+s1.score1s2.num)returntrue;returnfalse;第一章4/13bools4(constStudent&s1,constStudent&s2)/

10、比较s1和s2两位学生的总分大小,如果s2的大则返回trueif(s1.score0+s1.score1+s1.score2+s1.score3s2.num)returntrue;returnfalse;intselect(Students,intn,bool(*p)(constStudent&s1,constStudent&s2)intmaxIndex=0;for(inti=1;in;i+)if(*p)(smaxIndex,si)maxIndex=i;returnsmaxIndex.num;6-4二维数组(海绵城市)(7分)根据海绵城市建设指挥部要求,怡山小学将对校内道路进行改造,铺设透水砖

11、。这样有些道路将不能通行。为了不妨碍假期少先队的校内活动安排,大队宣传委员小黄需要知道一些关键的活动地点是否可以到达。已知校内一共有20处建筑,分别标为1号楼,号楼,.,号楼。有些楼之间有道路连接,道路是双向的,如果楼与楼间有道路,那么既可以从楼到楼,也可以从楼到楼。首先将输入校内的道路数n,接下来分n行输入各条道路的信息,每行有两个整数(均在和之间),代表这两座楼之间有道路连接。接下来输入查询数m,然后分m行输入要查询的楼间连路信息,每行有两个整数(均在和之间)。如果两楼之间可以通过一条路径到达(中途有可能经过其它楼),则输出两楼是连接的,否则输出两楼是断开的。函数接口定义:完成查询两建筑是

12、否连通的函数test裁判测试程序样例:#includeusingnamespacestd;constintN=21;/*请在这里填写答案*/intmain()intaNN=0,n,m,i,j,k;cinn;for(i=0;ijk;ajk=akj=1;cinm;第一章5/13for(i=0;ijk;coutj-k;if(test(a,j,k)coutconnectedendl;elsecoutdisconnected0)/当前栈不空intcur=stacktop-;/得到当前栈顶/把与cur连接的所有未访问过的楼号压入栈for(inti=0;iN;i+)if(acuri=1&visitedi=f

13、alse)stack+top=i;if(i=k)returntrue;/访问到k则表示从j到k有通路visitedi=true;returnfalse;第一章6/136-5引用作函数形参交换两个整数(10分)设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作。裁判测试程序样例:#includeusingnamespacestd;voidSwap(int&x,int&y)inttemp;temp=x;x=y;y=temp;intmain()inta,b;cinab;Swap(a,b);coutabendl;return0;输入样例:35输出样例:53

14、6-6函数重载实现两数相加(15分)设计一个重载函数add,该函数有两个参数,可以实现两个类型相同的参数相加的操作,函数返回相加的结果。两个参数可以是整数、实数和字符串,但必须保证两个参数类型相同。裁判测试程序样例:#include#include#includeusingnamespacestd;intadd(intx,inty)returnx+y;doubleadd(doublex,doubley)returnx+y;stringadd(stringx,stringy)returnx+y;intmain()inta,b;doublec,d;strings1,s2;cinab;cincd;第

15、一章7/13cins1s2;coutadd(a,b)endl;coutfixedsetprecision(2)add(c,d)endl;coutadd(s1,s2)endl;return0;输入样例:353.33335.555555helloworld输出样例:88.89helloworld6-7带默认形参值的函数(10分)设计一个带默认形参值的函数add,该函数有三个参数,可以实现三个整数类型的参数相加的操作,函数返回相加的结果。默认形参值从右至左分别是30、20。裁判测试程序样例:#includeusingnamespacestd;intadd(intx,inty=20,intz=30)r

16、eturnx+y+z;intmain()inta,b,c;cinabc;coutadd(a)endl;coutadd(a,b)endl;coutadd(a,b,c)endl;return0;输入样例:123输出样例:51336第一章8/136-8使用动态内存分配的冒泡排序(20分)编程实现冒泡排序函数int*bubble_sort(intn);。其中n为数组长度(1n1000)。函数接口定义如下:int*bubble_sort(intn);/*对长度为n的数组arr执行冒泡排序*/请实现bubble_sort函数,使排序后的数据从小到大排列。要求在bubble_sort函数内使用动态内存分配方

17、式分配一个大小为n的数组,再读入待排序数据,排序完成后返回数组。裁判测试程序样例:#includeusingnamespacestd;int*bubble_sort(intn);/*对长度为n的数组执行冒泡排序*/intmain()intn;cinn;int*a=bubble_sort(n);for(inti=0;in;i+)coutai;if(in-1)cout;coutendl;return0;/*你的代码将嵌在这里*/输入样例:10151*371427*25242165383532834125922输出样例:8353137141516821653222082592227801281392

18、834132524int*bubble_sort(intn)int*a=newintn;inti;for(i=0;iai;for(i=0;in;i+)for(intj=0;jaj+1)inttemp;temp=aj+1;aj+1=aj;aj=temp;returna;deletea;第一章9/136-9逆序字符串(10分)设计一个void类型的函数reverse_string,其功能是将一个给定的字符串逆序。例如,给定字符串为“hello”,逆序后为“olleh”。函数接口定义如下:/*函数原型参见main函数*/裁判测试程序样例:#include#includeusingnamespaces

19、td;/*你的代码将嵌在这里*/intmain(intargc,charconst*argv)stringstr;getline(cin,str);/输入字符串reverse_string(str);/逆序字符串strcoutstrendl;/输出逆序后的字符串return0;输入样例:hello输出样例:ollehvoidreverse_string(string&str)intn;chart;n=str.length();for(inti=0;in/2;i+)t=stri;stri=strn-1-i;strn-1-i=t;7-1时间换算(10分)输入一个正整数repeat(0repeat1

20、0),做repeat次下列运算:输入一个时间数值,再输入秒数n,输出该时间再过n秒后的时间值,时间的表示形式为时:分:秒,超过24时从0时重新开始计时。输出格式:printf(time:%d:%d:%dn,);输入输出示例:括号内为说明,无需输入输出输入样例:3(repeat=3)第一章10/130:0:159(秒数n=59)11:59:4030(秒数n=30)23:59:40301(秒数n=301)输出样例:time:0:1:0(0:0:01加上59秒的新时间)time:12:0:10(11:59:40加上30秒的新时间)time:0:4:41(23:59:40加上301秒的新时间)#inc

21、ludeusingnamespacestd;structTimeinthour;intminute;intsecond;voidtimeCompute(Time&t,intsec)inth,m,s;inta;s=t.second+sec;a=s/60;/分钟的进位t.second=s%60;/进位后剩余的秒数m=t.minute+a;a=m/60;t.minute=m%60;h=t.hour+a;t.hour=h%24;intmain()intrepeat,sec;cinrepeat;Timet;for(inti=1;isec;timeCompute(t,sec);printf(time:%d

22、:%d:%dn,t.hour,t.minute,t.second);第一章11/137-2查找单价最高和最低的书籍(10分)编写程序,从键盘输入n(n10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。输出格式语句:printf(highestprice:%.1f,%sn,);printf(lowestprice:%.1f,%sn,);输入输出示例:括号内为说明,无需输入输出输入样例:3(n=3)ProgramminginC3.3334ProgramminginVB8.90ProgramminginDelphi25输出样例:highestprice:25.0,

23、ProgramminginDelphilowestprice:18.5,ProgramminginVB#include#includeusingnamespacestd;structBOOKcharname20;doubleprice;BOOK;intmain()inti,n,j,k,max=0,min=0;scanf(%d,&n);structBOOKan;for(i=0;in;i+)scanf(%sn,ai.name);scanf(%lf,&ai.price);for(j=0;jamax.price)max=j;for(k=0;kn;k+)if(ak.priceamin.price)min=k;printf(highestprice:%.1f,%sn,amax.price,amax.name);printf(lowestprice:%.1f,%sn,amin.price,amin.name);return0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1