数据结构 设计进制转换计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津职业技术师范大学Tianjin University of Technology and Education
《面向对象程序设计》
课程设计报告
设计进制转换计算器
学院:信息技术工程学院
专业:计算机科学与技术
班级学号:14
学生姓名:**
指导教师:***
2012年12月
一.课程设计名称:采用面向对象的程序设计方法设计实现二进制、八进制、十进制、十六进制之间的进制转换计算器。
二.实用工具软件:Microsoft Visual C++
三.课程设计内容简介:
#include
#include
#include
#include
class GY//各进制转换为十进制
{
public:
GY()
{}
int ten()//十转二
{ int ss,aa;
cout<<"请输入一个十进制数"< cin>>ss; aa=ss; int tw[10],i(0),j(0); while(ss) { tw[i]=ss%2; ss/=2; i++; } cout<<"转换为8进制为\n"< cout<<"转换为16进制为\n"< cout<<"转换为2进制为\n"; for(j=i-1;j>=0;j--) //输出二进制结果 cout< cout< return 0; } int twototen()//二转十 { int pd=0; //判断 cout<<"请输入一个二进制数:"< cin>>s; int m(0); m=strlen(s);//求出输入字符串的长度有效字符的个数 for(int i=m-1;i>=0;i--) sum+=((s[i]-'0')<<(m-i-1)); //<<是位操作符,表示二进制数向左移位,如001变为010,等效于 sum+=((s[i]-'0')*2^(m-i-1));这样应该清楚了,如 0101==0*2^3+1*2^2+0*2^1+1*2^0;即转为十进制 return sum; } int octtoten()//八转十 { cout<<"请输入一个八进制数:"< cin>>s; int n=strlen(s); int i,sum=0; for(i=0;i sum=sum+(int)(s[i]-'0')*(int)pow(8,n-i-1);//八转十公式 return sum; } int hextoten()//十六转十 { cout<<"请输入一个十六进制数"< cin>>s; int n=strlen(s); int i,sum=0; for(i=0;i { if(s[i]>57) {s[i]=s[i]-'7';} else {s[i]=s[i]-'0';} sum=sum+(int)s[i]*(int)pow(16,n-i-1); } return sum; } private: char s[37]; int sum; }; GY a; class T:public GY//定义类T,公有继承GY 二到十后,十进制转为其它进制{ public: void zhuan() { int i; int nu=a.twototen(); int tw[10],j,n(nu); i=0; cout<<"\n您输入的数转为10进制为:"< cout< while(nu)//转换为八进制 { tw[i]=nu%8; nu/=8; i++; } cout<<"您输入的数转为8进制为:"< for(j=i-1;j>=0;j--) //倒序输出 cout< cout< i=0; while(n)//转为十六进制 { tw[i]=n%16; n/=16; i++; } cout<<"您输入的数转为16进制为:"< for(j=i-1;j>=0;j--) //倒序输出 cout< cout< } }; class O:public GY//八到十后,十进制转其它 { public: void zhuan() { int i; int nu=a.octtoten(); int tw[10],j,n(nu); i=0; cout<<"\n您输入的数转为10进制为:"< cout< while(nu)//十转二 {