长整数的进制转换
- 格式:doc
- 大小:80.06 KB
- 文档页数:15
*****大学
信息与计算科学课程设计题目:长整数的进制转换
成员:。。
。。
。。
小组成员分工:(编程、调试程序)
(编程、撰写报告)
(编程、后期整理)
一、实验目的
1、熟练掌握C语言课程中所学的基本理论和基本方法;
2、加强分析和解决问题的能力;
3、加强同学们之间的团队合作经验;
4、通过综合C语言的基本知识来解决实际问题。
二、题目要求
题目:
用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:
m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]
其中a[0]保存该长整数的位数。
要求:
(1) 转换为16进制数输出;
(2) 转换成8进制数输出。
三、算法设计
1、长整数
(1)由题目可知,用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:
m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]
(2)长整数主程序:
_int64 Num=0;
for(i=1;i<=n;i++)
{
Num+=a[n-i+1]* pow(10,i-1);
}
cout<<"输入的长整数为:";
printf("%I64d",Num);
cout< 2、十进制转十六进制 (1)十六进制:英文名称Hex number system,是计算机中数据的一种表示方法。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N 进制的数可以用0---(N-1)的数表示超过9的用字母A-F。 采余数定理分解 例:将十进制数487710 转成十六进制数 487710÷16=30481....14(E) 30481÷16=1905 (1) 1905÷16=119 (1) 119÷16=7 (7) 7÷16=0 (7) 结果:487710(10)=7711E(16) (2)十进制转换为十六进制主程序: void SixteenChange(_int64 num1) { string aa[100]; int y=0; while(num1!=0) { int k=num1%16; num1/=16; if(k<10) aa[y]=k+48; else { switch(k) { case 10: aa[y]='A'; break; case 11: aa[y]='B'; break; case 12: aa[y]='C'; break; case 13: aa[y]='D'; break; case 14: aa[y]='E'; break; case 15: aa[y]='F'; } } y++; } cout<<"十六进制数转化结果:"; for(int z=y;z>=0;z--) { cout< } cout< } (3)十进制转换为十六进制流程图: 开始 string aa[100];int y=0; num1!=0 int k=num1%16; num1/=16; K是否大于10 aa[y]=k+48 switch(k) case 10: case11: case 12: case 13: case 14: case 15: aa[y]='A'aa[y]='B’aa[y]='C'aa[y]='D'aa[y]='E'aa[y]='F' break y++ int z=y z-- z>=0 z 输出结果aa[z] 结束 3、十进制化八进制 (1)八进制:英文名称Octal,缩写OCT或O,是计算机中数据的一种表示方法。采用0,1,2,3,4,5,6,7八个数字,逢八进位。 采余数定理分解 例:将十进制数115 转化为八进制数 115÷8=14 (3) 14÷8=1 (6) 1÷ 8=0 (1) 结果:115(10)=163(8) (2)十进制转换为八进制主程序: void EightChange(_int64 num1) { string aaa[100]; int y=0; while(num1!=0) { int k=num1%8; num1/=8; aaa[y]=k+48; y++; } cout<<"八进制数转化结果:"; for(int z=y;z>=0;z--) { cout< } cout< }