




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础实验一(3) 读入三个整数a、b、c,交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。#includevoid main()int a,b,c,temp;coutabc;temp=a;a=b;b=c;c=temp;couta b c;(3) 对任意输入的四位整数,分别求出其各位数字,并按从后到前的顺序依次输出。例如,输入为1234时,输出结果为4,3,2,1。#includevoid main()int a,b,c,d,n;coutn;if(n999&n10000)a=n/1000;b=(n%1000)/100;c=(n%100)/10;d=n%10;coutdcbaendl;else couterror;实验二(2) 求解下面函数的值。 ex+y x0,y0 z= ln(x+y) 1x+y10 log10|x+y|+1 其它情况#include#includevoid main()float x,y,z;coutxy;if(x0&y=1&x+y10)z=log(x+y);else z=log10(fabs(x+y)+1);coutzendl; 编程求解下列各计算式: 1) #includevoid main()int i,n,s;s=0;for(i=1;i=100;i+)s=s+i;coutsendl;2) ! #includevoid main()int i,t,s;s=0;t=1;for(i=1;i=7;i+)t=t*i;s=s+t;coutsendl;4) Y=X(-1)n+1的值,精确到10-6。#include #include using namespace std;float f(int x,int n)int s=1;for(int i=1;i=n;i+) s*=i;return pow(x,n)/s;int main()float x,y=0;coutenter xx;for(int i=1;i+=2;)y+=pow(-1,i+1)*f(x,i);if(f(x,i)1e-6) break;coutyendl;return 0; 打印下面图形。 1 1 3 1 1 3 5 3 1 1 3 5 7 5 3 1 1 3 5 7 9 7 5 3 1 1 3 21 3 1#include #include #include int main()for(int i=1;i=11;i+)for(int j=1;j=11-i;j+) cout ;for(j=1;j=2*i-1;j+) coutsetw(3)2*i-1-abs(i-j)*2;coutendl;return 0; 编程产生出1到10以内的所有数对并输出,其中ij。#includevoid main()int i,j;for(i=1;i=10;i+)for(j=1;ji;j+)couti,j;coutendl; 编程求出10000以内的所有符合如下条件的数:其高位数字小于低位数字。如12,238,3578等。但21,548不符合条件。#includevoid main()int i; for(i=10;i100;i+)if(i/10i%10)couti ;for(i=100;i1000;i+)if(i/100(i%100)/10&(i%100)/10i%10)couti ;for(i=1000;i10000;i+)if(i/1000(i%1000)/100&(i%1000)/100(i%100)/10&(i%100)/10i%10)couti ;实验三 编程产生下列数组,并输出。 2) (1 3 6 10 15 21 28 36 45 55) #includevoid main()int i,a10;for(i=0;i10;i+)ai=(i+1)*(i+2)/2;for(i=0;i10;i+)coutai ;二维数组 4) A B C D E F B C E H L Q C D F I M R D E G J N S E F H K O T #includevoid main()int i,j;char a56;for(i=0,j=0;j6;j+)aij=A+j;for(i=1;i5;i+)for(j=0;j6;j+)aij=A+i+j*(j+1)/2;for(i=0;i5;i+)for(j=0;j6;j+)coutaij ;coutendl; 随机输入一组数组元素值,利用题使一个数组有序。然后随机输入一个数,用折半查找法在数组中查找,如在数组中,则输出元素在数组中的位置;如不在,则输出提示#include using namespace std;const int n=10;int main()int i,k,temp,an;for(k=0;kak;for(k=0;k10;k+)for(i=0;iai+1)temp=ai;ai=ai+1;ai+1=temp;for(i=0;i10;i+)coutai ;coutnum; while(low=high) mid=(low+high)/2; if(num=amid)break; else if(numamid)high=mid-1; else low=mid+1; if(num=amid) cout所查找的数在第mid+1个位置endl; else cout不存在这个数endl; return 0; 判断一个二维数组是否有“鞍点”,即该位置上的元素在该行上最大,在该列上最小。如有,输出其行列号和值;若无,给出提示。(数组元素的值用scanf输入)#include #include const int row=3;const int col=3;void main()int i=0,j=0,d;int b,c,count=0;int arowcol;cout输入数组endl;for(i=0;irow;i+)for(j=0;jcol;j+) scanf(%d,&aij);for(i=0;irow;i+)b=i;c=j;for(j=0;jcol;j+)if(abc=aij)b=i;c=j;for(d=0;drow;d+)if(adcabc) break;if(d=row) cout(b,c) abcendl;count+;if(count=0) cout没有鞍点endl;实验四(2)编写程序实现下列问题的求解。 求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。#include#includevoid f1(float x,float y,float z)float x1,x2;x1=(-y)+sqrt(y*y-4*x*z)/(2*x);x2=(-y)-sqrt(y*y-4*x*z)/(2*x);coutx1=x1endl;coutx2=x2endl;void f2(float x,float y)float x1,x2;x1=x2=(-y)/(2*x);coutx1=x2=x1endl;void f3(float)cout无实数根abc;if(b*b4*a*c)f1(a,b,c);if(b*b=4*a*c)f2(a,b);if(b*b4*a*c)f3(a); 编写一个将十进制整数转换为十六进制字符串的函数。#include using namespace std;void main()char c16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;char r100,i=0;int n;cout输入一个十进制数n;while(n0) ri=n%16;i+;n/=16;cout转化成16进制后=0;j-) coutcrj;coutendl;实验五1 输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大的顺序输出。#includevoid main()int i,j,temp,a3;for(i=0;iai;for(i=0;i3;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;for(i=0;i3;i+)coutai ;2 将一个3*3的矩阵转置,用一个函数实现。在主函数中用scanf输入以下矩阵元素:2,4,6,8,10,12,14,16,18。将数组名作为函数参数。函数调用后在主函数中输出已转置的矩阵。#include using namespace std;void s(int a)printf(转置后n);printf(%d%d%dn%d %d %dn%d %d %dn,a0,a3,a6,a1,a4,a7,a2,a5,a8);int main()int a9;printf(输入9个整数n);scanf(%d%d%d%d%d%d%d%d%d,&a0,&a1,&a2,&a3,&a4,&a5,&a6,&a7,&a8);printf(转置前n); printf(%d %d %dn%d %d% dn%d %d% dn,a0,a1,a2,a3,a4,a5,a6,a7,a8);s(a);return 0;3 自己写一个strcmp函数,实现两个字符串的比较。两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数中输出。#includeusing namespace std;int strcmp(char a, char b)int i, j;for (i = 0; (ai != 0) | (bi != 0); i+)if (aibi) j = 1; break; else if (ai = bi) j = 0;else j = -1; break; return j;int main()int i, j;char a20, b20;cout input tow strings a b;cout strcmp(a, b) endl;return 0;4 动态链表的每个结点包括一个整数和一个后继指针。分别编写过程完成如下操作: (1) 从键盘输入数据建立链表,并按数据的输入顺序建立链表。(2) 依次打印其中各结点的数据。#include #includestruct listint value;struct list *next;void main()int n,i=0,m;struct list *p,*q,*head,*tmp;/第一行输入数据个数n; printf(请输入链表的长度:);scanf(%d,&n);if(nnext=NULL;scanf(%d,&p-value);for(i=1;ivalue);q-next = p;q=p;q-next=NULL;/第三行输入欲删除数据m;printf(请输入要删除的数值:);scanf(%d,&m);/第一行输出原始单链表的长度;q=head;i=0;while(q-next)i+;q=q-next;printf(原链表长度为: %dn,i+1);/第二行依次输出原始单链表的数据;printf(链表数据为:n);q=head;while(q-next)printf(%d ,q-value);q=q-next;printf(%dn,q-value);/删除p=head;while(head-value = m & head-next != NULL)head=head-next;free(p);p=head;if(head-value = m & head-next = NULL)printf(删除后的链表长度为 0n);printf(删除后的链表为空n);return;p=q=tmp=head;while(q-next)q=q-next;while(q-value=m & q-next !=NULL)tmp=q;q=q-next;free(tmp);if(q-next = NULL & q-value=m)p-next =NULL;elsep-next =q;p=q; /第三行输出完成删除后的单链表长度;q=head;i=0;while(q-next)i+;q=q-next;printf(删除后的链表长度为 %dn,i+1);/第四行依次输出完成删除后的单链表数据;printf(删除后的链表为:n);q=head;while(q-next)printf(%d ,q-value);q=q-next;printf(%dn,q-value);实验六 在某系的成绩登记册中,每个班最多有40个学生,每份成绩表中的成绩信息包括:学号(9位字符),姓名(8位字符),成绩(百分制),备注(20位字符)。设计程序以处理一个班级的成绩信息,包括输入、输出、查询(给定分数以上或以下的学生信息)、按分数排序等。#includestruct studentint num;char name8;int gread;char beizhu20;student40;void main()int i,j,k,temp;for(i=0;i40;i+)coutstudenti.num;;coutstudenti.gread;coutstudenti.beizhu;for(i=0;i40;i+)coutstudenti.num studenti.gread studenti.beizhuendl;coutj;for(i=0;ij) coutstudenti.num studenti.gread studenti.beizhuendl;for(i=0;i40;i+)for(k=0;k=studentk+1.gread)temp=studentk.gread; studentk.gread=studentk+1.gread; studentk+1.gread=temp;for(i=0;i40;i+)coutstudenti.num studenti.gread studenti.beizhuendl;实验七1.下面程序定义了一个以hours, minutes和seconds作为数据成员的Time类。设计了成员函数将两个Time对象相加(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。如果秒数大于59,则分钟数向前递增1。类似地,如果分钟数大于59,则小时数向前增1。#include class Timeprivate: int hours, minutes, seconds;public: void get_time() cinhoursminutesseconds; void display_time() couthours:minutes:seconds=60) seconds-=60; minutes+; if(minutes=60) minutes-=60; hours+; if(hours=24)hours-=24; ;void main() Time one, two, three; coutnEnter the first time(hours minutes seconds):; one.get_time(); coutnEnter the second time(hours minutes seconds):; two.get_time(); three.add_time(one,two); coutthe result is:endl; three.display_time();2. 定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。#includeusing namespace std;#define pi 3.1415926class circledouble r, l, s;public:circle(const circle&a);circle() r = 0;cout input r r;cout r= r endl;cout l= 2 * pi*r endl;cout s= pi*r*r endl;circle:circle(const circle& a)r = a.r;int main()circle a;circle b(a);return 0;实验八() 定义一个类CDate用于记录日期(包括年、月、日),其中提供成员函数从标准输入读入日期具体值、将类对象的日期属性输出到标准输出以及当前对象表示的日期为星期几等函数。时间输入、输出方式应该尽量与人们熟悉的方式相近。#include class dataprivate:int year;int month;int day;public:void get(int a,int b,int c)year=a;month=b;day=c;void print();void pxq();void data:print()cout 这一天是:year年month月day日endl;void data:pxq()int y ,c,m,d,a,b;a=year/1000;b=(year-a*1000)/100;c=a*10+b;y=year-a*1000-b*100;d=day;if(month=1) m=13;else if(month=2) m=14;else m=month;int choice=y+y/4+c/4-2*c+(26*m+26)/10+d-1;choice=choice%7;switch(choice)case 0:cout 这一天是星期日endl;break;case 1:cout 这一天是星期一endl;break;case 2:cout 这一天是星期二endl;break;case 3:cout这一天是星期三endl;break;case 4:cout 这一天是星期四endl;break;case 5:cout这一天是星期五endl;break;case 6:cout 这一天是星期六endl;int main()data d1;int a,b,c;cout abc;d1.get(a,b,c);d1.print();d1.pxq();return 0;() 首先,定义一个学生类CStudent,数据成员是:学生的姓名和学号,成员函数是输出学生姓名和学号。然后,定义一个学生类的派生类,描述学生成绩的CScore,添加数据成员数学、语文、化学,添加获取数学、语文和化学成绩的成员函数。最后,主函数中,创建2个CScore类对象,输出总分最大同学的姓名、学号和总成绩。#include#includeusing namespace std;class cstudentprivate:int num;string name;public:void display_1()cout studentsname is name , num= num endl;void get_value_2() cout input num,name num name; ;class cscore:public cstudentdouble math, chinese, chem;public:double a;void get_value_1() cout input math,chinese,chem math chinese chem; double sum_score() a = math + chinese + chem; return(a); ;int main() cscore a1, a2;a1.get_value_1(); a1.get_value_2();a2.get_value_1(); a2.get_value_2();if (a1.sum_score() a2.sum_score() a1.display_1(); cout sum_score= a1.a; else a2.display_1(); cout sum_score= a2.a; return 0;小型公司人员信息管理 某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。要求存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。 人员编号基数为1000,每输入一个人员的信息,编号顺序加1。 程序要对所有人员有提升级别的功能。为简单起见,所有人员的初始级别均为1级,然后进行升级,经理升为4级,技术人员和销售经理升为3级,推销员仍为1级。 月薪计算办法是:经理拿固定月薪8000元;技术人员按每小时100元领取月薪;推销员的月薪按该推销员当月销售额的4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5。根据上述需求,设计一个基类employee,然后派生出technician(技术人员)类、manager(经理)类和salesman(推销员)类。由于销售经理(salesmanager)既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager和salesman两个类。 在基类中,除了定义构造函数和析构函数以外,还应统一定义对各类人员信息都应有的操作,这样可以规范各派生类的基本行为。但是各类人员的月薪计算方法不同,不能在基类employee中统一定义计算方法。各类人员信息的显示内容也不同,同样不能在基类中统一定义显示方法。因此,在employee类中用纯虚函数的方式定义了计算月薪函数pay()和显示信息函数displayStatus(),然后在派生类中再根据各自的同名函数实现具体的功能。 由于salesmanager的两个基类又有公共基类employee,为避免二义性,这里将employee类设计为虚基类。#includeiostream.h#includestring.hclass employeeprotected:char name20;int grade;float pay;public:int NO;employee()employee(char NAME,int no)strcpy(name,NAME);NO=no;grade=1;void display()cout姓名为nameendl编号为NOendl级别为gradeendl;class technician:public employeeprivate:float time;public:technician()technician(char NAME,int no,float TIME):employee(NAME,no)time=TIME;pay=time*100;grade=3;void getT()cout月薪为payendl;class manager:virtual public employeepublic:manager()manager(char NAME,int no):employee(NAME,no)pay=8000;grade=4;void getM()cout月薪为payendl;class salesman:virtual public employeepublic:float sale;salesman()salesman(char NAME,int no,float SALE=0):employe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术驱动的未来产品设计展望
- 掌握数据科学开启科研新篇章
- 教师专业成长路径与教育教学能力提升
- 教育培训市场的未来发展方向
- 房地产企业市场分析与开发策略
- 提升危机沟通的技巧与策略
- 2025年中国发酵面食行业市场深度研究及投资战略规划报告
- 技术部网络安全事件应急响应机制
- 2025年中国烟茉酊行业市场发展前景及发展趋势与投资战略研究报告
- 肽类营养与免疫调节-洞察及研究
- 乌鲁木齐市既有建筑改造消防设计审查工作指南
- 2025至2030中国混凝土外加剂市场供需发展及经营管理风险预警报告
- 青海中考地理试题及答案
- 《中心静脉导管的护理》课件
- 城市轨道交通应急处理自然灾害应急处理课件
- 新疆维吾尔自治区2024年普通高校招生普通类国家及地方专项、南疆单列、对口援疆计划 本科二批次投档情况 (理工)
- 基础会计教学质量分析报告
- 《宏观经济学原理》课件
- 2025新人教版七下英语单词默写表
- 2024年保山市小升初英语考试模拟试题及答案解析
- 《急性胰腺炎诊治》课件
评论
0/150
提交评论