中国地质大学计算机高级语言C++课设报告_第1页
中国地质大学计算机高级语言C++课设报告_第2页
中国地质大学计算机高级语言C++课设报告_第3页
中国地质大学计算机高级语言C++课设报告_第4页
中国地质大学计算机高级语言C++课设报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

计算机高级语言C++课程设计《计算机高级语言C++》课程设计报告学号:班级序号:姓名:指导老师: 刘袁缘中国地质大学(武汉)信息工程学院遥感系2016年12月计算机高级语言C++课程设计实习题目二【问题描述及分析】问题描述:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?问题分析:从现代数学观点来看,实际上是一个求不定方程整数解的问题。解法如下:设公鸡、母鸡、小鸡分别为x、y、z只,由题意得:① x+y+z=100②……5x+3y+(1/3)z=100有两个方程,三个未知量,称为不定方程组,有多种解。固定一个未知数,求剩下两个未知数。【算法设计】先将题意转化为一个数学问题,然后列出相应的方程,化简方程,然后通过对剩下的变量进行穷举,输出符合条件的结果。【调试报告】第一次运行时由于疏忽没有加入跳出循环的条件语句,导致枚举陷入死循环。加上结束的条件后运行成功。【附录】〃第二题#include<iostream>usingnamespacestd;intmain()(inta=0,b=0,c=0,m=0,n=0;//初始化for(m=100-5*a;m>=0;a++)(b=0;c=0;m=100-5*a;//除公鸡外的鸡for(n=100-5*a-3*b;n>=0;b++)(n=100-5*a-3*b;c=3*n;if((a+b+c)==100)〃结束循环cout<<"公鸡:"<<a<<"只"<<','<<"母鸡:"<<b<<"只"<<','<<"小鸡:"<<c<<"只"<<endl;))return0;)

计算机高级语言C++课程设计C:\WINDOWS\systeiiTi32\cmd.exe公共处处清 -En-lr鸣鸡鸣鸣只口公共处处清 -En-lr鸣鸡鸣鸣只口HH八

5014

7—?no0U计算机高级语言C++课程设计实习题目三【问题描述及分析】问题描述:将两个数组中的元素合并成一个并按降序排列问题分析:【算法设计】对数组中的元素一一进行比较,当A>B时,比较A中下一个元素与B的大小,直到所有元素都比较完。【调试报告】一开始不知道该如何将两个数组中的元素进行比较大小,在老师的指导下,学会了使用指针的方法,节省了时间复杂度。【附录】#include<iostream>usingnamespacestd;voidmain()(cout<<"C[20]="<<endl;intA[10]={200,129,88,86,33,15,7,0,-1,-3};intB[10]={128,87,51,50,27,19,15,12,5,1};int*pA=A;int*pB=B;int*pC=newint[20];intcount=0;inti=0,j=0;while(i<9){if(j>9)break;if(pA[i]>=pB[j]){pC[count++]=pA[i++];continue;}elseif(j<9&&pA[i]<pB[j]){while(j<=9&&pA[i]<pB[j]){pC[count++]=pB[j++];continue;}}计算机高级语言C++课程设计if(i<=9)(while(i<=9)(pC[count++]=pA[i++];continue;))for(intm=0;m<20;m++)cout<<pC[m]<<"";cout<<endl;delete[]pC;)计算机高级语言C++课程设计实习题目【【问题描述及分析】问题描述计算两个日期之间的间隔天数问题分析同一月份,用日期数相减;.不同月份,则算出起始日期至月底的天数,再加上剩余的月份的天数。【算法设计】声明一个函数difs2Date:longdifs2Date(inty1,intm1,intd1,inty2,intm2,intd2);它负责计算出两个日期的间隔天数并返回。【调试报告】起初未考虑到闰年的问题,在计算过程中出了差错。调试之后使用if嵌套语句判断闰年。【附录】测试数据:1997062919990101//difs2Date.h#ifndefdifs2Date_h//预编译处理#definedifs2Date_h#include<iostream>#include<cmath>usingnamespacestd;longdifs2Date(inty1,intm1,intd1,inty2,intm2,int42)//函数声明(intt;if((y1%4==0)&&(y1%100!=0)||(y1%100==0)&&(y1%400==0)){//判断闰年与否If((y2%4==0)&&(y2%100!=0)||(y2%100==0)&&(y%400==0))t=abs(365*(y2-y1)+30*(m2-m1)+d2-d1)-2;elset=abs(365*(y2-y1)+30*(m2-m1)+d2-d1)-1)elset=abs(365*(y2-y1)+30*(m2-m1)+d2-d1);returnt;)#endif//预编译处理//main.cpp#include”difs2Date.h"〃头文件voidmain(){intp;inta1,b1,c1;inta2,b2,c2;

计算机高级语言C++课程设计cout<<"请输入第一个日期"<<endl;cin>>al>>bl>>cl;cout<<"请输入第二个日期"<<endl;cin>>a2>>b2>>c2;p=difs2Date(a1,bl,cl,a2,b2,©2);//调用difs2Date函数cout<<"两个日期的间隔为"<<p<<"天"<<endl;IC:\WINDOWS\5y5tem3£\cmd.eKe-计算机高级语言C++课程设计实习题目五【问题描述及分析】问题描述计算两个给定长方形的面积问题分析长方形的高乘以高就能得出长方形的面积,所以要求用户输入长和宽【算法设计】定义一个area类类型,包含Area()intgetArea()voidaddArea(Area*n)并使用指针传递对象的地址【调试报告】对于指针的使用不熟悉导致在开始设计area类的时候未使用指针传递对象地址,而是使用构造函数为矩形面积形成新的存储空间,造成了浪费,后用指针加以改进。【附录】测试数据:矩形1:长2宽3;矩形2:长3宽4.//area.h#ifndefarea_h#definearea_h#include<iostream>usingnamespacestd;classArea//编译预处理(public:Area();//构造函数intgetArea();voidaddArea(Area*口);//用指针传递对象的首地址private:intlength;intwidth;);#endif//编译预处理//area.cpp#include"area.h"Area::Area()//函数的声明(cout<<"pleaseenterlengthandwidth:"<<endl;cin>>length>>width;)计算机高级语言C++课程设计intArea::getArea()//求面积(returnlength*width;)voidArea::addArea(Area*n)//求面积之和(intadd=getArea()+n->getArea();cout<<”面积总和是"<<add<<endl;return;)//main.cpp#include"area.h"voidmain()(Areaa;Areab;a.addArea(&b);)计算机高级语言C++课程设计实习题目六【问题描述及分析】问题描述输入某天所加的汽油量,本程序将列出加油站当天的总收入。问题分析以面向对象的概念设计一个类,此类包含3个私有数据:unlead(无铅汽油)、lead(有铅汽油)以及total(当天总收入)。【算法设计】定义一个gasoil类,包含intunlead;intlead;doubletotal;gasoil(intunleadCount,intleadCount);~gasoil(){};doublegetTotal();【调试报告】为了试验类中私有成员是否能被访问,在源程序中加入了对私有成员赋值的操作,最终未通过编译,也让我学习到了C++语言的安全性【附录】测试数据:10升无铅汽油20升有铅汽油//gasoil.h#ifndefgasoil_h//编译预处理#definegasoil_h#include<iostream>usingnamespacestd;constintunleadPrice=15,leadPrice=17;//不可改变的全局变量classgasoil{private:intunleadJ/私有成员intlead;doubletotal;public:gasoil(intunleadCount,intleadCount);//构造函数~gasoil(){};〃析构函数doublegetTotal();};#endif//编译预处理//gasoil.cpp10计算机高级语言C++课程设计#include"gasoil.h"gasoil::gasoil(intunleadCount,intleadCount){unlead=unleadCount;lead=leadCount;//初始化无铅油和有铅油的数量total=0;〃初始化总收入total+=(unlead*unleadPrice+lead*leadPrice);)doublegasoil::getTotal(){returntotal;//main.cpp#include"gasoil.h"voidmain(){intunleadCount,leadCount;cout<<"请输入无铅油和有铅油的数量:"<<endl;cin>>unleadCount>>leadCount;gasoilS(unleadCount,leadCount);cout<<"总收入为:"<<S.getTotal();浦C:\WINDOWS\system3Z\gitid.exe11计算机高级语言C++课程设计实习题目七【问题描述及分析】问题描述编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)问题分析构造一个student类,负责对象的传递,由于数据较少,可使用if语句排序【算法设计】设计student类,包含student();〃构造函数〜student();〃析构函数voidinput();//传递计算结果doubleadd();//求和voidordination(doublex1,doublex2,double乂3);//排序doubleenglish;doublecomputer;使用if-else语句对所有的情况进行枚举并比较。【调试报告】【附录】测试数据:学生1(10,11)学生2(11,12)学生3(12,13)//student.h#ifndefstudent_h//编译预处理#definestudent_h#include<iostream>usingnamespacestd;classstudent(public:student();〃构造函数〜student。;//析构函数voidinput();//传递计算结果doubleadd();//求和voidordination(doublex1,doublex2,double乂3);//排序private:doubleenglish;doublecomputer;);#endif//student.cpp#include"student.h12计算机高级语言C++课程设计student::student(){};〃构造函数student::~student(){};//^构函数voidstudent::input(){cin>>english>>computer;};doublestudent::add(){returnenglish+computer;};voidstudent::ordination(doublex1,doublex2,doublex3){/排序if(x1>x2>x3){cout<<x1<<''<<x2<<''<<x3;}elseif(x1>x3>x2){cout<<x1<<''<<x3<<''<<x2;}elseif(x2>x1>x3){cout<<x2<<''<<x1<<''<<x3;}elseif(x2>x3>x1){cout<<x2<<''<<x3<<''<<x1;}elseif(x3>x2>x1){cout<<x3<<''<<x1<<''<<x2;}elsecout<<x3<<''<<x2<<''<<x1;}//main.cpp#include"student.h"intmain(){doublea,b,c;studentA,B,C,D;cout<<”请输入学生1的英语和计算机成绩:"<<endl;A.input();a=A.add();cout<<"总分:"<<a<<endl;cout<<”请输入学生2的英语和计算机成绩:"<<endl;B.input();b=B.add();cout<<"总分:"<<b<<endl;cout<<”请输入学生3的英语和计算机成绩:"<<endl;C.input();c=C.add();cout<<"总分:"<<c<<endl;13

计算机高级语言C++课程设计cout<<"总分排序:"<<endl;D.ordination(a,b,c);return0;C:\WINDOWS\systern32\cmd.exe子王1明见喟J-:21日入学生子王1明见喟J-:21日入学生2的英语和计算机成绩:蠡连生物英语和计算机成绩:32321番按任意键继续...14计算机高级语言C++课程设计实习题目八【问题描述及分析】问题描述求解一元二次方程。程序要求用户输入a,b和c,然后根据前面的条件计算,并输出答案,并能询问用户是否想继续求解下一个方程。用户输入1来继续,输入其它数字,则终止程序。问题分析一元二次方程的定义为:ax2+bx+c=0(1)如果b2-4ac>0,方程有两个不同的实根,分别是:-b+^/b2-4ac-b-Vb2_4acV—2;―/一一(2)如果b2-4ac<0,方程没有实根,但有虚根;(3)如果b2-4ac=0,方程有一个实根。【算法设计】设计equation类,一元二次方程的系数a,b,c为该类的私有成员变量,包含floatx[2];Equation(floata1=0.0,floatb1=0.0,floatc1=0.0)〜Equation(){}longCalResult();【调试报告】最开始用int定义方程的根导致精度丢失,计算结果出现错误,调试后发现问题并将数据类型改为float。【附录】测试数据:a=1b=-2c=1a=1b=1c=1//equation.h#ifndefequation_h//编译预处理#defineequation_h#include<iostream>#include<math.h>usingnamespacestd;classEquation{floata,b,c;public:floatx[2];〃参数:x用以返回实根值的数组;Equation(floata1=0.0,floatb1=0.0,floatc1=0.0){15计算机高级语言C++课程设计a=al;b=bl;c=cl;)~Equation(){}〃析构函数longCalResult();};#endif//编译预处理//equation.cpp#include"equation.h"longEquation::CalResult()//函数声明{longtemp;if((b*b-4*a*c)==0){temp=1;x[0]=(float)(-(b/2*a));//参数:x用以返回实根值的数组;returntemp;}if((b*b-4*a*c)>0){temp=2;x[0]=(-b+sqrt(b*b-4*a*c))/(2*a);x[1]=(-b-sqrt(b*b-4*a*c))/(2*a);returntemp;}else{temp=0;}returntemp;}//main.cpp#include"equation.h"intmain(){floata,b,c;charch;do{cout<<"请输入一元二次方程系数"<<endl;cin>>a>>b>>c;16计算机高级语言C++课程设计Equation*obj=newEquation(a,b,c);cout<<"方程有"<<obj->CalResult()<<"个根"<<endl;if(obj->CalResult()==1)(cout<<"X="<<obj->x[0]<<endl;)if(obj->CalResult()==2)(cout<<"X1="<<obj->x[0]<<endl;cout<<"X2="<<obj->x[1]<<endl;)deleteobj;cout<<"是否继续计算?(1)"<<endl;cin>>ch;}while(ch=='1'

温馨提示

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

评论

0/150

提交评论