C++期末考试.pdf

上传人:无*** 文档编号:90907503 上传时间:2023-05-18 格式:PDF 页数:22 大小:1.94MB
返回 下载 相关 举报
C++期末考试.pdf_第1页
第1页 / 共22页
C++期末考试.pdf_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《C++期末考试.pdf》由会员分享,可在线阅读,更多相关《C++期末考试.pdf(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、I.编写一个完整的程序,运行时向用户提问“你考了多少分?(0-100)”,接受输入后判断其等级显示出来。规则如下:优 90V=分数 二100等级=良 80 二分数90中 60二分数80差 0=分数60#includeint main()(int score;coutvv”请输入你要输入的成绩:n”;cinscore;if(score 100)coutvv”成绩输入有误!请重新输入n”;cinscore;)if(score=0)if(90=score&score=100)coutvv优n”;if(80=score&score90)coutu 良n”;if(60=score&score80)cou

2、tvv中 n;if(0=score&score60)coutvv差 n;return 0;2.从键盘输入3个数,将其中的最大值输出。#includeint main()(int a,b,c,max;couivv”从键盘输入3 个数:c in a b c;if(ab&bc)ll(ac&cb)max=a;else if(ba&ac)ll(bc&ca)max=b;else if(ca&ab)ll(cb&ba)ma x=c;c out ma x;return 0;3.从键盘输入两个两位数a、b,将其组合成一个四位数输出(千位是a的个位,百位是b的十位,十位是b的个位,个位是a的十位)。#inc lud

3、eint ma in()(int a,b,c,d,e,f,num;c outv”从键盘输入两个两位数a、b:“;c i n a b;c=(a%l 0)*1 0 0 0;d=(a/1 0)*l;e=(b%1 0)*1 0;f=(b/1 0)*1 0 0;num=c+d+e+f;c out num;return 0;)4.使 用 循 环 语 句 打 印 出 以 下 这 个 三 角 形.11 231 23 451 23 45 6 71 23 45 6 7 8 91 23 45 6 7 8 9 1 0 1 11 23 45 6 7 8 9 1 0 1 1 1 21 31 23 45 6 7 8 9 1

4、 0 1 1 1 21 3 1 41 5#inc lude#define line_ num 8int ma in()(int line;int b la nknum;int sta mum;for(line=1 ;line=line_ num;line+4-)for(b la nknum=1;b la nknum=line_ num-line;b la nknum+4-)coutfor(starnum=1 ;starnum=2*line-1 ;slarnum+)coutstarnum;coutendl;)return 0;)5.实现一个简单的菜单程序,运行时显示 uMenu:A(dd)D(e

5、lete)S(ort)Q(uit),Select one:M提示用户输入。A 表示增加,D 表示删除,S 表示排序,Q 表示退出。输入为A、D、S 时分别提示“数据已经增加、删除、排序”,输入Q 时程序结束。#includeint main()char x;inti;coutHMenu:A(dd)D(elete)S(ort)Q(uit),Select one:endl;coutA 表示增加,D 表示删除,S 表示排序,Q 表示退出Jvvendl;coutv”输入选择:vvendl;cinx;for(i=0;x!=,q,llx!=,Q,;i+)switch(x)(case A:case a:co

6、utvv”数据已经增加。”;break;case D:case d:coutvv”数据已经删除。n;break;case S:case s:coutvv”数据已经排序。break;case rQ:case q:coutv”退出程序。;relum 0;default:cout输入有误,请重新输入!;break;)coutendl;cinx;)coutendl;return 0;6.中国有句俗语叫“三天打鱼两天晒网”,某人从1990年 1 月 1 I I起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还 是“晒网”。/*中国有句俗语叫 三天打鱼两天晒网”,某人从1990年 1 月 1

7、 日起开始”三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼“还是“晒网”。*/#includevoid main()(int y,m,d,t,a,b,yl,c=O;coutvv”如出现输入错误,此结果有误“vvendkv”出入年 月 日:“vvendl;c in y m d;if(m=2&d29)coutv“输入错误”31)coutvv”输入错误vvendl;if(m=4ll6H9lll l)&d30)coutvv”输入错误 vvendl;if(m2&(y%4=0&y%100!=0lly%400=0)t=1;else t=0;switch(m)(case 1:a=0;break;case

8、 2:a=31 ;break;case 3:a=31+28;break;case 4:a=31+28+31 ;break;case 5:a=31+28+3 l+30;break;case 6:a=31 +28+31 +30+31 ;break;case 7:a=31+28+31+30+3 l+30;break;case 8:a=31 +28+31+30+31 +30+31;break;case 9:a=31 +28+31+30+31+30+31+31;break;case 10:a=31+28+31+30+31+30+31+3 l+30;break;case 11:a=31 +28+31+30

9、+31+30+31 +31+30+31;break;case 12:a=31+28+31+30+31+30+31+31+30+31 +30;break;default:coutvv输入错误vvendl;)b=a+t+d;for(y 1 =1990;y l0&b4)cout 打渔 nendl;elsecoutvv”晒网 nendl;/*或 者 下面这个*问题分析与算法设计根据题意可以将解题过程分为三步:1)计算从1990年 1 月 1 日开始至指定日期共有多少天;2)由于“打鱼”和“晒网”的周期为5 天,所以将计算出的天数用5 去除;3)根据余数判断他是在“打鱼”还是在“晒网”;若 余 数 为

10、1,2,3,则他是在“打鱼”否则是在“晒网”在这三步中,关键是第一步。求 从 1990年 1 月 1 日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:如 果(年能被4 除 尽 且 不 能 被 100除尽)或能被400除尽)则该年是闰年;否则不是闰年。C 语言中判断能否整除可以使用求余运算(即求模)*程序与程序注释*/#includeint days(struct date day);struct date(int year;int month;int day;);void main()struct date today,term;i

11、nt yearday,year,day;printf(HEnter year/month/day:u);scanf(%d%d%d&today.year,&today.month,&today.day);/*输入日期*/temi.momh=12;/*设置变量的初始值:月*/term.day=31;/*设置变量的初始值:日*/for(yearday=0,year=1990;year0&day4)printf(Hhe was fishing at that dayAn);/*打 E|1 结果*/else printf(He was sleeping at that day.nn);int days(

12、struct date day)(static int day_tab2l3=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,;int i,lp;lp=day.year%4=0&day.year%100!=01 Id ay.y ear%400=0;/*判定year为闰年还是平年,lp=0为平年,非 0 为闰年*/for(i=l;ivday.month;i+)/*计算本年中自1 月 1 日起的天数*/day.day+=day_tablp i;return day.day

13、;)7.编写一个函数prime判断给定的整数是否是素数,是返回I,不是返回0,在主函数中实现输入输出。#includeint prime(int n)(if(n0)(for(int i=2;i=n-l;i+)if(n%i=0)return 0;elsereturn 1;)else coutvv”该数出错 J;)int main()(int n;coutvv”请输入一个数:;cinn;if(prime(n)=0)cout0;elsecout 1;return 0;)8.在 主 函 数 中 提 示 输 入 整 数n,编写函数用递归的方法求1+2+3+o o o +n 的值 o#include io

14、stream.hint sum(int n);int main()int n,f;coutvv”请输入 n:n;cinn;f=sum(n);coutl+2.+n u=fendl;return 0;)int sum(int n)(if(n=l)return 1;elsereturn n+sum(n-l);9.采用函数重载的方式分别对两个数求和及三个数求和(参数采用缺省形参值),主函数中实现输入输出。#includeshu(int,int);shu(int,int,int);int main()(int c,i,d;coutnPlease input three integer:endl;c in

15、 c i d;cout sum of two shu(c,i)endl;coutH sum of three shu(c,i,d)endl;return 0;)shu(int c,int i)(return(c+i);)shu(int c,int i,int d)return(c+i+d);1 0.给定一个一维数组,将数组中所有指定值X全部删除,输出删除后内容。#include#define N 10int main()int aN=1,2,3,4,5,6,7,8,9,10);int x,i,j,m;m=N;coutvv”输入要删除的数值(1 -10)nendl;cinx;for(i=0;iN

16、;i+)if(ai=x)m-;for(j=i;jN-l;j+)aj=afj+l;i=0;)cout删|x 后数组的值:endl;for(i=0;im;i+)coutaicoutendl;return 0;)1 1.输入一个十进制整数,将其转换为R进制输出(R值为2-1 6)。#include/十进制数转换成二进制数字void fun_l(int n)(if(n=2)(fun_l(n/2);coutn%2;)十进制数字转换成八进制数字void fun_2(int n)if(n=8)(fun_2(n/8);coutn%8;)上进制数转换成卜六进制数字void fun_3(int n)(switch

17、(n)(case 10:coutvvA;break;case 11:coutB,;break;case 12:coutnCH;break;case 13:coutD;break;case 14:coutnE;break;case 15:coutnFn;break;default:coutn;)void fun_4(int n)(if(n=16)(fun_4(n/16);fun_3(n%16);)主函数void main()(int n;cout请输入 n 的值:endl;cinn;cout上进制数字转换成二进制,八进制,十六进制数字结果如F:endl;fun_l(n);coutendl;/输出

18、结果换行fun_2(n);coutendl;fun_4(n);coutendl;12.定义一个函数用来实现两个数的交换(使用指针变量作为形参),主函数中输出交换之后的结果。#includevoid swap(int*,int*);int main()(int x,y;coutvv”输入两个数将其进行交换 vvendl;c in x y;swap(&x,&y);c o u t x n n y e n d l;return 0;)void swap(int*a,int*b)(int temp;temp=*a;*a=*b;*b=temp;)13.从键盘输入要输出的斐波那契数列的个数,采用动态内存分配

19、的方法定义数组保存数列的内容并输出#include#includevoid sortarray(int IJJnt);int main()(int*a;int i,num;coutvv”输出的斐波那契数列的个数:“;cinnum;a=new intnum;alOJ=O;atl=l;sortarray(a,num);coutvv”分配后的数据:nendl;for(i=0;inum;i+)co u tain n;coutendl;delete J a;return 0;void sortarray(int a,int b)(for(int i=2;ib;i+)ai=ai-2+ai-l;)14.从键

20、盘输入10个整数,以此生成10个结点,建立一个链表(新结点总是插入在链表的首部),将链表中各节点的数据成员输出。#include struct node(int data;node*next;);node*createList(int n);void outputlist(node*head);int main()(int n;node*listHead=NULL;cout ”请输入结点数:”;cin n;if(n0)listHead=createList(n);outputlist(listHead);return 0;)node*createList(int n)(node 九emp=NU

21、LL,%ail=NULL,*head=NULL;int num;cin num;head=new node;if(head=NULL)(cout Not memory available!;return NULL;elsehead-data=num;head-next=NULL;tail=head;for(int i=0;i data=num;temp-next=head;head=temp;return head;void output!ist(node*head)(coutlist:;node*curnode=head;while(curnode)(coutcurnode-data;if(

22、curnode-next)coutH-u;curnode=curnode-next;)coutendl;return;6 编写一个程序实现对一个数组进行排序,插入,删除操作,要求程序中包含如下函数:Input函数实现数组元素的输入,Sort函数实现数组的排序,Insert函数实现将一个指定的数据插入到已排好序的数组中,Delete函数实现将数组中指定的元素删除。在 m ain函数中完成指定的功能。#include void sort(int a,int x);void insert(int a,int x,int c);void Delete(int a,int x);void input(i

23、nt a,int x)(int i;cou tn 请输入“v v x v v”个数:uendl;for(i=0;i=x-1 ;i+)cinai;cout”您输入的数组为:n”;for(i=0;i=x-l;i+)co u taiMcoutendl;)void sort(int aJnt x)int i,j,k;for(i=0;ix-l;i+4-)冒泡排序,下面有一个类似的冒泡排序,只是第二个for循环条件不一样,本质是一样的for(j=i+l;jaU)k=ai;ai=aj;aj=k;coutvv”经过由小到大排列后的数组是:n;for(i=0;ix;i+)co u t aiJM n;couten

24、dl;)void insert(int a,int x,int c)int i,j;for(i=0;ix-1 ;i+)if(c0;i)ai=ai-l;a|jj=c;break;)else ax-l=c;coutvv”插入数据后的数组是:n;for(i=0;ix+l;i+)co u t a i M;coutendl;)void Delete(int aJ,int x)int c,i,j;coutvv”请输入你想删除的数据:n;cinc;for(i=0j=0;ix+1;i+)if(ai=c)for(j=i+l;jx+2;j+)aj-l=aj;aj=a|j+l;x-;)cout”删除数据后的数组是:

25、n;for(i=0;i=x;i+)coutai,coutendl;)void main()int x,y;int a100;cout”请输入你想进行操作的数组的个数:”;cinx;input(a,x);sort(a,x);coutvc”请输入你要插入的数字:n;ciny;insert(a,x,y);Delete(a,x);)/*冒泡排序#include main()int all,i,j,t;printf(Input 10 numbersAn);fbr(i=l;ill;i+)scanf(%dH,&ai);printf(,n,);for(j=l;j=9;j+)for(i=1 ;iai+l)t=a

26、i;ai=ai+l;ai+l=t;printf(The sorted numbers:n);for(i=l;il l;i+)printf(H%d H,ai);)*/*选择排序#includeint main()(void sort(int a,int n);int a10,i;printf(enter ten number:M);for(i=0;i10;i+)scanf(d”,&ai);sort(a,10);调用sort函数,a 为数组名,大小为10for(i=0;i10;i+)printf(%d,ai);)void sort(int a,int n)int i,j,k,t;for(i=0;i

27、n-l;i+)k=i;保存I 的值for(j=i+l;jn;j+)if(ajak)k=j;这两行作用是找出最小的一个数ak,另外这里的 k 不能换成别的字母,因为这里的k 是提取t=ak;ak=ai;ai=t;k=i里面的k,也是i 来和其余的数进行比较(当内循环完成时,执行第一个for循环有用)for(j=0;jn;j+)printf(%d,aj);printf(n);)*/插入排序要记得摘抄视频里面的*/*/*16、定义一个circle类,有数据成员r(半径),成员函数area。用来计算圆的面积(在类外定义),成员函数getr()用来获取半径(类内定义),成员函数setr()用来设置半径(

28、类内定义),主函数中构建circle类对象,设置半径,求出圆的面积和周长。*/#includeclass circle(int r;public:double area();int getr()(return r;)void setr(int rl)(r=rl;double circle:area()(return 3.1415926*r*r;)void main()(circle c 1;cl.setr(lO);coutc 1 .area()endl;cout2*3.1415926*c l.getr()endl;)/*17、定义一个日期类D ate,该类对象存放一个日期数据(年、月、日),定

29、义一个设置函数用来设定II期,定义一个输出函数输出相关II期,主函数中定义相关对象,写出相关函数并测试其正确性。*/#includeclass circle(int r;public:double area();int getr()(return r;void setr(int rl)r=rl;);double circle:area()(return 3.1415926*r*r;)void main()(circle c l;cl.setr(lO);coutc l.area()endl;cout2*3.1415926*cl.getr()endl;18、创建一个类student,包含数据成员s

30、name(姓名)、sno(学号)、score(成绩)以及静态数据成员count(人数)、sum(总和)、ave(平均成绩),构造函数用来对sname.sno score初始化,成员函数show用来输出姓名、学号、成绩,show_ave用来输出学生平均成绩,主函数中定义三个student类对象,姓名、学号、成绩自己设定,输出每个学生的姓名、学心、成绩以及三个学生的平均成绩。*/#include#include class student(public:student(char name 1120,char stu_no 1 20,float score 1 );*name 1 *stu_no 1

31、student();void show();void show_count_sum_ave();private:char name20;/*namechar stu_no20J;/*stu_nofloat score;static int count;static float sum;static float ave;int student:count=0;float student:sum=0;float student:ave=0;student:student(char name 1 20,char stu_nol 20,float score 1)(strcpy(name,name 1

32、);strcpy(stu_no,stu_no 1);score=scorel;+count;sum=sum4-score;ave=sum/count;void student:show()(coutname:name;coutstu_no:Ustu_no;coutscore:score;coutendl;)void student:show_count_sum_ave()(coutH ave:ave;coutendl;)void main()(student stu 1(学生 1 ,999,20);student stu2(学生 2,888,30);student stu3(学生 3,777,

33、40);stul.show();stu2.show();stu3.show();cout三个学生的平均成绩:stu2.show_count_sum_ave();19、定义一个日期类D ate,该类对象存放一个日期数据(年、月、日),创建一个带参数的构造函数,用来对成员进行初始化,定义个输出函数输出相关日期,定 义 个 student类,包含数据成员学号Num(in t),成绩Score(double),考试日期SD(Date类对象),定义个输出函数show()用来输出学生学号、成绩、考试日期,主函数中定义3 个学生,分别输出其相关内容。(其它内容根据需要自己设定)*/#includeclass

34、 date(int year,month,day;public:date(int y,int m,int d)(year=y;month=m;day=d;void dshow()(coutyear-m onth-,dayendl;);class student(int num;double score;date sd;/sd是类date的成员public:student(int y,int m,int d,int n,double s):sd(y,m,d)sd(y,m,d)采用初始化列表的方式,对前三个参数(int y,int m,int d,)进行初始化(num=n;score=s;)voi

35、d show()(coutv学号:v v n u mv v”成绩:*score;coutn考试日期”;sd.dshow(););void main()(student sl(2012,5,9,92001,89),s2(2013,4,6,92002,65),s3(2013,11,25,92003,68);sl.show();s2.show();s3.show();20.、定义一个 clock类,包含数据成员hour,minute,second,构造函数带三个参数用来进行初始化(进行数据检杳,如果数据不合理则输出错误信息),showlime函数用来进行时间的输出。重载+运算符(前缀、后缀两种方式,

36、两者效果不同)。主函数中定义clock类对象m yclock,通过(+myclock).showtime()和(myclock+).showtime()验证两种方式的正确性()。*/#includeint i;class clock(int hounminute,second;public:clock(int h,inl mjnt s)(i=0;if(h24llh59llm59lls0)(cout”输入的信息不符合要求!”sex进行设置,show。函数用来输出name、age、sex。子类Employee从 Person类私有派生,包含私有数据成员department(部门)、salary(工

37、资)构造函数用来进行初始化,eshow()用来输出员工所有信息;主函数中定义两个Employee类对象,内容自己设定,将其相关信息输出。*/#include#includeclass person(char name 20,sex 4;int age;public:person(char n,char s,int a)(strcpy(name,n);strcpy(sex,s);age=a;)void show()coutn 姓名:n a m e 性别:se x u 年龄 Hageendl;class employee:private person(char department20;doubl

38、e salary;public:employee(char n,char s,int a,char d,double sa):person(n,s,a)(strcpy(department,d);salary=sa;/*class employee:private person(char department20;double salary;person dl;public:employee(char n,char s,int a,char d,double sa):person(n,s,a),dl(n,s,a)先初始化基类成员,然后再初始化对象成员。(strcpy(department,d);salary=sa;)*/void eshow()(show();coutH 部 门,departm ent工资 usalaryendl;);void main()(employee el(“王子,男,26,计算机”,5000),e2(公主,女,23,财会,3500);el.eshow();e2.eshow();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com