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编程实现十进制的转换(十进制到任何进制不用系统函数实现)

在c++中编写一个程序实现进制转换。

c++中二进制字符串转化为十六进制字符串的函数,比如“11111111”转为对应的“FF”.

求特殊自然数

25:求特殊自然数

剑指offer编程题Java实现——面试题10二进制中1的个数