中南大学C++课程设计实践报告_第1页
中南大学C++课程设计实践报告_第2页
中南大学C++课程设计实践报告_第3页
中南大学C++课程设计实践报告_第4页
中南大学C++课程设计实践报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

设计要求:用visualC++程序设计一个简易的计算器,具有多种功能。例如加减乘除、阶乘、温度转换等。设计思想为了方便起见,我主要是以类和对象来进行设计,将各个功能化成各个小类,然后综合的用main主函数来运行以保证程序的稳定可靠性程序代码#include<iostream>#include<cmath>#include<iomanip>#include<stdlib.h>usingnamespacestd;classshow{public: voidshowtime() { cout<<"*****************************欢迎使用**********************************"<<endl; cout<<"1.加减乘除运算"<<setw(30)<<"2.复数乘法运算"<<endl; cout<<"3.素数判断"<<setw(44)<<"4.最小公倍数,最大公约数"<<endl; cout<<"5.一元二次方程求解"<<setw(20)<<"6.求阶乘"<<endl; cout<<"7.排列组合求解"<<setw(26)<<"8.温度转换"<<endl; cout<<endl<<"************版权所有*盗版不究**本代码最终解释权归fengkj所有************"<<endl; }};classjiajian{ inti; doublea,b,s;public: voidprint() {cout<<"1.加法运算"<<"\t2.减法运算"<<"\t3.乘法运算"<<"\t4.除法运算"<<endl; cout<<"请输入代号:"<<endl;here:cin>>i; cout<<"请输入两个数a,b"<<endl; cout<<"a=";cin>>a;cout<<"b=";cin>>b; switch(i) { case1:s=a+b;cout<<a<<'+'<<b<<"="<<s; break; case2:s=a-b;cout<<a<<'-'<<b<<"="<<s; break;case3:s;s=a*b;cout<<a<<'*'<<b<<"="<<s; break; case4:if(b==0)cout<<"数据错误!";else{s=a/b;cout<<a<<'/'<<b<<"="<<s;} break; default:cout<<"代号数据错误,请重输";gotohere; } }};classfushu{ floata,b,c,d,j,k;public: voidgetin() { cout<<"请输入两个复数:"<<endl;cout<<"x=_+_i";cin>>a>>b;cout<<"y=_+_i";cin>>c>>d; } voidmulti() {j=a*c-b*d;k=b*c+a*d;} voidprint() {if(k>0)cout<<"x+y="<<j<<'+'<<k<<'i'<<endl;elseif(k<0)cout<<"x+y="<<j<<'-'<<-k<<'i'<<endl;elsecout<<"x+y="<<j<<endl;}};classsushu{public: longt; voidget(){cout<<"请输入一个待验证的数x:";cin>>t;} intprime(longx) { longi; for(i=2;i<x/2;i++) if(x%i==0)return2; return3; } voidprint(){longx;x=t;if(prime(x)==2)cout<<t<<"不是素数";elsecout<<t<<"是素数";}};classgongbeishu{ longx,y,max,min;public: voidget() {cout<<"请输入两个正整数x,y:"<<endl; cout<<"x=";cin>>x;cout<<"y=";cin>>y; } voidjisuan() {longm,n,r,t; m=x;n=y; t=m*n; if(m<n){r=m;m=m;n=r;} while((r=m%n)!=0) { m=n; n=r; } max=n;min=t/n; } voidprint(){cout<<x<<"和"<<y<<"的最大公约数是:"<<max<<','<<"最小公倍数是:"<<min<<endl;}};classqiujie{ floata,b,c,x1,x2,t,s;public: voidget() {cout<<"请输入方程的系数a,b,c:"<<endl; cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"常数c=";cin>>c;} voidjisuan() {floati;i=b*b-4*a*c;t=0;s=0; if(i>=0){x1=(-b+sqrt(i))/(2*a);x2=(-b-sqrt(i))/(2*a);}else{x1=-b/(2*a);x2=-b/(2*a);s=sqrt(-i)/(2*a);t=-sqrt(-i)/(2*a);} } voidprint() {cout<<"方程的解为:"<<endl; cout<<"x1="<<x1<<'+'<<t<<'i'<<"\tx2="<<x2<<'+'<<s<<'i'; }};classjiecheng{ intn,s;public: voidget() {cout<<"请输入待阶乘的数:n=";cin>>n;} voidjisuan() {inti; s=1; for(i=1;i<n;i++)s*=i; } voidprint() {cout<<"阶乘结果为:"<<"n!="<<s;}};classpailie{ intn,r;public: voidget() {ak:cout<<"请输入排列组合数:C(n,r)、P(n,r):"<<endl; cout<<"n=";cin>>n;cout<<"r=";cin>>r; if(n<r){cout<<"数据错误,请重新输入!";gotoak;} } intjiecheng(intx) {inti,s=1;for(i=1;i<=x;i++)s*=i;returns;} voidprint() {cout<<"排列数P="<<jiecheng(n)/jiecheng(n-r)<<','<<"组合数C="<<jiecheng(n)/(jiecheng(r)*jiecheng(n-r));}};classwendu{inti;floatn,s;public: voidget() {cout<<"请选择温度转换方向:0.摄氏转华氏1.华氏转摄氏:"; cin>>i; cout<<"请输入温度:";cin>>n; } voidzhuanhuan() {s=0;if(!i)s=32+n*1.8;elses=(n-32)/1.8;} voidprint() {if(!i)cout<<"摄氏温度为:"<<n<<"'C"<<','<<"华氏温度为:"<<s<<"'F";elsecout<<"华氏温度为:"<<n<<"'F"<<','<<"摄氏温度为:"<<s<<"'C";}};voidmain(){inti,pp=1,ss=1;while(pp){system("cls");showv;v.showtime();qq:cout<<"请输入您要进行运算的编码:";cin>>i;switch(i){case1:g1:jiajianaa;aa.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog1;elsebreak;case2:g2:fushubb;bb.getin();bb.multi();bb.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog2;elsebreak;case3:g3:sushucc;cc.get();cc.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog3;elsebreak;case4:g4:gongbeishudd;dd.get();dd.jisuan();dd.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog4;elsebreak;case5:g5:qiujieee;ee.get();ee.jisuan();ee.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog5;elsebreak;case6:g6:jiechengff;ff.get();ff.jisuan();ff.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog6;elsebreak;case7:g7:pailiegg;gg.get();gg.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog7;elsebreak;case8:g8:wenduhh;hh.get();hh.zhuanhuan();hh.print();cout<<"重新计算请按1,否则请按0";cin>>ss;if(ss)gotog8;elsebreak;default:cout<<"数据错误!请输入1~8之间的一个整数";gotoqq;}cout<<"返回主菜单请按1,退出程序请按0";cin>>pp;}}调试过程由于学的知识不是很多,也不是很熟练,在最开始的时候老是范一些小错误,而且很多语法错误,比如忘了写分号啊,把分号写成逗号啦。而且忘了写全{}就会出现很多个错误,在一个庞大的程序里面找这些错误再一一改正,很可能还是不能运行,但是多加一个}就很可能全部错误都搞定!调试的时候很多地方都是牵一发而动全身,特别是修改的时候,修改一个变量就得把其他部分的都改掉,不然就会一直出现错误。还经常忘了定义变量就用,不过看英文提示面前能看懂,也能找到相应的错误。在把语法小错误解决之后就剩下运行了,但是运行的情况不容乐观,很多地方呢不是我想要的结果。例如在加减乘除那里,由于当时变量粗心的定义为long,得出的数总是为整数,后来改正为float后问题就解决了,还有就是开始界面里的序列号对不齐,后来尝试着用setw()来解决,尝试多次后得以解决。在老师的建议之下通过包含stdlib.h头文件和调用system("cls")函数成功的做到进行一次计算之后清理屏幕的效果。运行结果通过输入编码来选择计算类型。例如输入1.方法同上继续进行输入代码的操作。重新计算输入1,否则输入0.这里我输入0然后。输入1回到主菜单,并清理屏幕。其他函数基本同上,在演示一个,例如4.最小公倍数最大公约数。心得体会 本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。为了让程序容易使人看懂,我用到的知识点不是非常多,大都是一些基本知识,我能熟练地运用这些知识编程也算一个很大的成功了。毕竟很多知识没有学,能用基本知识就尽量用的基本知识。C++设计实践是对之前学过的知识的加深和巩固,之前学得较浅,实践的机会不多,这次实践让我对C++程序有了更加深入的了解,心理也由原来的不喜欢到喜欢,感觉很有意思也很有用,可也设计一些有用的或者是自己喜欢的程序。最令我收益的是写程序的过程和调试修改的过程,因为之前我们就学了几章,没有把知识学习全面,因此编写起来是有难度的,在预先想好程序结构后,

温馨提示

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

评论

0/150

提交评论