数数制转换程序Word格式.docx

上传人:b****1 文档编号:5190572 上传时间:2023-05-04 格式:DOCX 页数:17 大小:18.51KB
下载 相关 举报
数数制转换程序Word格式.docx_第1页
第1页 / 共17页
数数制转换程序Word格式.docx_第2页
第2页 / 共17页
数数制转换程序Word格式.docx_第3页
第3页 / 共17页
数数制转换程序Word格式.docx_第4页
第4页 / 共17页
数数制转换程序Word格式.docx_第5页
第5页 / 共17页
数数制转换程序Word格式.docx_第6页
第6页 / 共17页
数数制转换程序Word格式.docx_第7页
第7页 / 共17页
数数制转换程序Word格式.docx_第8页
第8页 / 共17页
数数制转换程序Word格式.docx_第9页
第9页 / 共17页
数数制转换程序Word格式.docx_第10页
第10页 / 共17页
数数制转换程序Word格式.docx_第11页
第11页 / 共17页
数数制转换程序Word格式.docx_第12页
第12页 / 共17页
数数制转换程序Word格式.docx_第13页
第13页 / 共17页
数数制转换程序Word格式.docx_第14页
第14页 / 共17页
数数制转换程序Word格式.docx_第15页
第15页 / 共17页
数数制转换程序Word格式.docx_第16页
第16页 / 共17页
数数制转换程序Word格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数数制转换程序Word格式.docx

《数数制转换程序Word格式.docx》由会员分享,可在线阅读,更多相关《数数制转换程序Word格式.docx(17页珍藏版)》请在冰点文库上搜索。

数数制转换程序Word格式.docx

private:

voidToUpper(char*c);

//将小写字母a-z转换为A-Z

voidTrint(intm,intn);

//转换数据的整数部分

voidTrdig(doublem,intn);

//转换数据的小数部分

voidIntdig(doublem,intn);

//合并转换成的整数和小数部分

};

voidTransform:

:

Trint(intm,intn)//转换数据的整数部分

{

if(m)

{

Trint(m/n,n);

if(n<

10)//如果要转换成的进制数据小于10,则直接输出那个数据.

cout<

<

m%n;

else//如果要转换成的进制数据大于等于10,即为16进制,则10到15相应转换为A到F再输出.

m%n>

=10?

char(m%n-10+'

A'

):

}

}

Trdig(doublem,intn)//转换数据的小数部分

while(m)

if(n<

10)//如果要转换成的进制数据小于10,则直接输出那个数据.

int(m*n);

m*n>

char(int(m*n)-10+'

int(m*n);

m=m*n-int(m*n);

}

Intdig(doublem,intn)//合并转换成的整数和小数部分

Trint(m,n);

//转换整数部分并输出

if(int(m)==m)

return;

'

.'

;

//输出小数点

m-=int(m);

Trdig(m,n);

//转换小数部分,并接在小数点后面

Tr10(charc[],doublem)//10进制数据转换成其他进制数据

"

-----"

c<

转换成2进制="

Intdig(m,2);

endl;

转换成8进制="

Intdig(m,8);

转换成16进制="

Intdig(m,16);

doubleTransform:

Trn_10(charc[],intn)//其他进制数据转换成10进制数据

charz[100];

inti=0,j;

doubleb=0;

转换成10进制="

while(*c!

='

&

&

*c!

\0'

)z[i++]=*c++;

i--;

if(*c=='

)c--;

for(j=0;

j<

=i;

j++)

if(z[j]<

65)b+=(z[j]-48)*pow(n,i-j);

//调用系统的幂函数

elseb+=(z[j]-55)*pow(n,i-j);

for(c++,j=-1;

;

c++,j--)

if(*c<

65)b+=(*c-48)*pow(n,j);

else

b+=(*c-55)*pow(n,j);

b<

endl;

returnb;

UseStack(intten,intbase)//应用栈原理把10进制数据转换成其他进制数据

intm=ten;

intval;

"

-----所输入的进制数是:

<

ten<

endl<

Stack<

int>

astack(20);

//声明一个栈的对象

while(m!

=0)//如果要转换的数据不为0,则进入循环

val=m%base;

//需要转换的10进制数值除以要转换成的进制,并取余数

astack.Push(val);

//将余数进栈

m=m/base;

//m等于商,取整

}

-----转换成"

base<

进制数是:

while(!

astack.IsEmpty())//如果栈不为空,则进入循环

{

val=astack.Pop();

//将数据出栈

if(val>

9)//如果出栈数大于9,则将10到15的数转换成A到F.

switch(val)

case10:

A"

break;

case11:

B"

case12:

C"

case13:

D"

case14:

E"

case15:

F"

else

val;

////////////////////////*End*////////////////////////\n"

////////////////////////////////////////////////////////////////////"

endl<

按1返回主界面,按2结束程序:

inth;

do

cin>

>

h;

//课程设计信息界面给出选择,用户输入选项

switch(h)

case1:

//课程设计信息界面,选1返回主界面。

system("

cls"

);

//调用系统函数进行清屏

Behead();

case2:

//课程设计信息界面,选2结束程序。

End();

default:

请重新正确选择!

//如果输入1,2以外的选项,则进入循环并重新输入选项。

}while(h<

1||h>

2);

Stack_10()//调用UseStack函数的函数

inta(0),b(0);

/////////////////利用栈进行10进制的转换/////////////////"

//////此处只进行10进制正整数转换成2或8或16进制//////"

-----请输入你所要转换的10进制数:

a;

-----要转换成多少进制数?

请输入:

do

b;

if(b!

=2&

b!

=8&

=16)//如果要转换成的进制不符合,则提示错误

-----进制数输入错误!

请重新输入:

}while(b!

=16);

UseStack(a,b);

Begin()//主界面函数

///////////////////////////////////////////////////////"

//////////////欢迎进入数制转换系统//////////////"

★按1进行各种数制的转换"

★按2利用栈进行10进制的转换"

★按3了解课程设计信息"

★按4退出本程序"

///////////////////////////////////////////////////////"

End()//界面结束函数

谢谢使用本程序,再见!

ToUpper(char*c)////将小写字母a-z转换为A-Z

intlen=strlen(c);

intoffset='

-'

a'

for(inti=0;

i<

len;

i++)

if(c[i]>

c[i]<

z'

c[i]+=offset;

Usetranstion()//进行转换

////////////////欢迎使用数制转换////////////////"

charc[100];

intn;

\n-----请输入该数值的进制(2或8或10或16进制):

n;

\n-----请输入要你所要转换的数据值(0-9,A-F,a-f):

c;

if(n==16)//16进制

ToUpper(c);

//将小写字母a-z转换为A-Z

Tr10(c,Trn_10(c,n));

//////////////////////*End*//////////////////////\n"

按1返回主界面,按2结束程序:

Information()//课程设计信息

////////////////课程设计信息////////////////"

★功能:

进行数制转换"

★原理:

1.一般函数及系统函数"

2.栈"

3.分步求取"

★课程:

数据结构"

★指导老师:

吴**"

★制作人:

陈**,彭**"

★时间:

2008年1月1日"

intTransform:

Behead()//应用函数,递归调用其他函数。

Begin();

//调用Begin函数,显示主界面。

inta;

//主界面给出选择,用户输入选项

switch(a)

//主界面,选1进入数制转换界面。

Usetranstion();

intd;

d;

//数制转换界面给出选择,用户输入选项

switch(d)

//数制转换界面,选1返回主界面。

//数制转换界面,选2结束程序

}while(d<

1||d>

case3:

//主界面,选2进入课程设计信息界面。

Information();

intb;

switch(b)

}while(b<

1||b>

case4:

//主界面,选3结束程序。

Stack_10();

//如果输入1,2,3以外的选项,则进入循环并重新输入选项。

}while(a<

1||a>

4);

return0;

========================stack===========================

源程序利用了栈,栈的头文件的代码和解释如下:

#pragmaonce

assert.h>

template<

classType>

classStack//顺序栈的类定义

Stack(int=20);

//建立一个空栈,其最大体积maxSzie的缺省值为10

virtual~Stack(){delete[]elements;

voidPush(constType&

item);

//如果IsFull(),则执行StackFull();

否则把item插入到栈的栈顶

TypePop();

//如果IsEmpty(),则执行StackEmpty()并返回0;

否则退出并返回栈顶的值

TypeGetTop();

//如果IsEmpty(),则返回0;

否则返回栈顶元素的值

voidMakeEmpty(){top=-1;

}//置空栈

intIsEmpty()const{returntop==-1;

//如果栈中元素个数等于0,则返回True

(1),否则返回False(0)

intIsFull()const{returntop==maxSize-1;

//如果栈中元素个数等于maxSize,则返回True

(1),否则返回False(0)

inttop;

//在顺序存储分配下是栈顶指针

Type*elements;

//在顺序存储分配下是存放栈中元素的栈数组

intmaxSize;

//栈最大可容纳元素个数

template<

Stack<

Type>

Stack(ints):

top(-1),maxSize(s)

//建立一个最大尺寸为s的空栈,若分配不成功则错误处理

elements=newType[maxSize];

//创建栈空间

assert(elements!

=0);

//断言:

动态存储分配成功与否

voidStack<

Push(constType&

item)

//若栈不满,则将元素item插入到该栈的栈顶,否则出错处理

assert(!

IsFull());

栈不满则继续执行

elements[++top]=item;

//栈顶指针先加1,然后按此地址进栈

TypeStack<

Pop()

IsEmpty());

判栈空否,若断言成立则继续执行

returnelements[top--];

//返回栈顶元素的值,同时栈顶指针退1

TypeStack<

GetTop()

assert(!

returnelements[top];

//返回栈顶元素的值

--------------------------------main函数----------------------------------------

该程序的main函数如下:

voidmain()

Transforma;

//声明一个对象

a.Behead();

//对象调用函数

--------------------------------main函数----------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2