c++函数编程实现自然数的十进制、二进制、八进制、十六进制转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++函数编程实现自然数的十进制、二进制、八进制、十六进制转换相关的知识,希望对你有一定的参考价值。
#include <iostream>using namespace std;
void Transform(int n,int base)
int num[20],i=0,j,m=n;
do
i++;
num[i]=m%base; // 保存余数
m=m/base;
while (m!=0);
cout<<"**"<<n<<"转换为"<<base<<"进制的结果为:";
for (j=i;j>=1;j--) // 将余数序列反序输出
if (num[j]<10) cout<<num[j]; // 如果是0-9数字则直接输出数字
else cout<<char(num[j]+'A'-10); // 如果是大于9的数字则转化为字符输出
cout<<endl;
int main()
int n,choice;
cout<<"输入一个整数:"; cin>>n;
do
cout<<"输入需要转换的进制:2-9,16,32(输入0退出)";
cin>>choice;
switch(choice)
case 2: Transform(n,2); break;
case 3: Transform(n,3); break;
case 4: Transform(n,4); break;
case 5: Transform(n,5); break;
case 6: Transform(n,6); break;
case 7: Transform(n,7); break;
case 8: Transform(n,8); break;
case 9: Transform(n,9); break;
case 16: Transform(n,16); break;
case 32: Transform(n,32); break;
case 0: break;
default: cout<<"输入错误"<<endl;
while(choice!=0);
return 0;
参考技术A #include<iostream.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct
int *base;
int *top;
int stacksize;
SqStack;
SqStack S;
void InitStack(SqStack &S1)
S1.base=(int *)malloc(100*sizeof(int));
S1.top=S1.base;
S1.stacksize=STACK_INIT_SIZE;
void Push(SqStack &S2,int e)
*S2.top++=e;
void Pop(SqStack &S3,int &e)
e=* --S3.top;
void tentotwo(int n)
while(n)
Push(S,n%2);
n=n/2;
cout<<"转成的二进制数是:"<<endl;
while(S.top!=S.base)
int e;
Pop(S,e);
cout<<e;
cout<<endl;
void tentoeight(int n)
while(n)
Push(S,n%8);
n=n/8;
cout<<"转成的八进制数是:"<<endl;
while(S.top!=S.base)
int e;
Pop(S,e);
cout<<e;
cout<<endl;
void tentosixteen(int n)
while(n)
Push(S,n%16);
n=n/16;
cout<<"转成的十六进制数是:"<<endl;
while(S.top!=S.base)
int e;
Pop(S,e);
switch(e)
case 10: cout<<'A';
break;
case 11: cout<<'B';
break;
case 12: cout<<'C';
break;
case 13: cout<<'D';
break;
case 14: cout<<'E';
break;
case 15: cout<<'F';
break;
cout<<e;
cout<<endl;
void main()
InitStack(S);
f:
cout<<"请选择您想进行的操作:1.十进制转换成二进制 2.十进制转换成八进制 3.十进制转换成十六进制"<<endl;
int a,m;
cin>>a;
switch (a)
case 1:
cout<<"请输入一个十进制数"<<endl;
cin>>m;
tentotwo(m);
break;
case 2:
cout<<"请输入一个十进制数"<<endl;
cin>>m;
tentoeight(m);
break;
case 3:
cout<<"请输入一个十进制数"<<endl;
cin>>m;
tentosixteen(m);
break;
goto f;
参考技术B //n是要转换的数字,t是进制,比如cast(10,8),则输出12。
//本函数可以将10进制数转换为2进制,8进制或16进制;
void cast(int n,int t)
if(n>=1)
int j;
cast((j=n,n/=t),t);
switch(t)
case 2:case 8:
cout<<j%t;
break;
case 16:
char x[16]='0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f';
cout<<x[j%t];
break;
25:求特殊自然数
25:求特殊自然数
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。
- 输入
- 无。
- 输出
- 三行:
第一行是此自然数的十进制表示;
第一行是此自然数的七进制表示;
第一行是此自然数的九进制表示。 - 样例输入
-
(无)
- 样例输出
-
(不提供
#include<cstdio> int main(){printf("248\n503\n305");}
以上是关于c++函数编程实现自然数的十进制、二进制、八进制、十六进制转换的主要内容,如果未能解决你的问题,请参考以下文章
python编程实现十进制的转换(十进制到任何进制不用系统函数实现)