任意进制互换的c++程序,编绎通过加分,明天交!!!急!!!

好吧,我给一个流程图……看你们的了,谢谢网友哈!!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

#define MIN_BASE 2
#define MAX_BASE 32
class Transnum
{
public:
static char *transnum(char *num,int base1,int base2,char *_trNum)
{
int i,k,l,m,j;
long inum=0;
double r=0;
i = strlen(num); /* 数值的长度 */

if ((base1<MIN_BASE) || (base1>MAX_BASE) || (base2<MIN_BASE) || (base2>MAX_BASE))
printf("err!");
for (j=0;j<i;j++) {
r = pow(base1,i-j-1); /* 计算数基的幂指数 */
if (base1<=10) l ='9' - (10 - base1); /* 计算有效的数范围 */
else {
m = 'a' + (base1 - 11);
l = '9';
}
if ((num[j]>='0') && (num[j]<=l)) /* 求每位数字的十进制值 */
k = num[j]-'0';
else if (base1>10) {
/* 求每个字母所代表的十进制值 */
if ((num[j]>='A') && (num[j]<=m - 32)) //32:大小写字母码表值差
k = num[j] - 'A'+10;
else if ((num[j]>='a') && (num[j]<=m))
k = num[j] - 'a'+10;
else printf("err!");
}
else printf("err!");
inum += k * (int) r; /* 累加计算结果 */
}
/* 输出转换结果 */
return ltoa(inum,_trNum,base2);
}
protected:
private:
};

int main()
{
char num[20],trNum[30];
int base1,base2;
printf("输入待转字符串,初始数制(2-32),目标数制(2-32)\r\n");
scanf("%s %d %d",num,&base1,&base2);
printf("%s(%d) = %s(%d)\n",num,base1,Transnum::transnum(num,base1,base2,trNum),base2);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-26
#include<iostream>
using namespace std;
void fun(int num,int n){
char a[9];
for(int i=7; i>=0;i--)
{
a[i]=(num%n)+'0';
num/=n;
}
a[8]='\0';
cout<<num<<"十进制转换成"<<n<<"进制数为:"<<a<<endl;
}
void main(){
int num,n;
cout<<"输入这个数:";
cin>>num;
cout<<"输入需要转化成的进制数:";
cin>>n;
fun(num,n);
}

这个可以将十进制转换成任意十以内进制的数,你凑合着用吧追问

能凑合的话……我早写出来了……我也会c++…给朋友写的…我没时间写而已……分可以加……但二到三十二进制不能少……再加把劲!谢了!!

追答

--!!!你昨天有截图么我怎么没看到楼下的写了好多你看看呗

任意进制互换的c++程序,编绎通过加分,明天交!!!急!!!
if ((num[j]>='0') && (num[j]<=l)) \/* 求每位数字的十进制值 *\/ k = num[j]-'0';else if (base1>10) { \/* 求每个字母所代表的十进制值 *\/ if ((num[j]>='A') && (num[j]<=m - 32)) \/\/32:大小写字母码表值差 k = num[j] - 'A'+10;else if ((num[j...

编一个c程序 C++进制转换器:十进制→二、八、十六进制,二进制→八...
void main(){ char aaa[5];unsigned char bbb, ccc, i, k, Err = 0;long unsigned int nnn = 0;printf(" \\n请输入数字 (0~9, A~Z): "); gets(aaa);printf(" \\n 当前进制 (2~36): "); scanf("%d", &bbb);for (i = 0; i < strlen(aaa); i++) { if (aaa...

用C++编写十进制与六进制整数的转换的程序
int n,m;printf("请输入十进制数:\\n");scanf("%d",&n);Convert1(n);printf("\\n请输入一个六进制数:\\n");scanf("%d",&m);Convert2(m);}

...个C++编程题,题目是‘编写程序实现2-16进制内任意之间的转换’求详细...
mAve\/=4;}

C++ 编写一个程序,将用户输入的十进制整数转换成任意进制的数。
2、给变量i和二进制数赋初值,值为0。3、接着,输入一个十进制整数。4、用while语句判断,条件为十进制数是否为零。5、当十进制数不为零时,对十进制数用2求余,保存在变量d中。6、十进制数除以2,使数值缩小为原来的二分之一。7、输出十进制数所对应的二进制数。8、运行程序,输入任意一个...

C++ 任意进制之间的转换,包含小数的程序怎么写
void print(double value,int n){ int tempi,tempn[50],D[50],F[50],i,j,k;double tempf;tempi=(int)value;tempf=value-tempi;i=0;while(tempi\/n!=0){ tempn[i]=tempi%n;tempi=tempi\/n;i++;} tempn[i]=tempi%n;for(j=0;i>=0;j++,i--)D[j]=tempn[i];if((value-...

C++编写程序,输出任意两个数之间每个数值的二进制、三进制、八进制...
可以用一个自定义的进制转换函数,用来处理二进制三进制的输出,其余的八进制,十进制和16进制可以使用C++语言自带的格式输出函数进行输出。include <iostream> using namespace std;void dec2k(int n,int k){ if(n>k-1)dec2k(n\/k,k);printf("%d",n%k);} int main(){ int a,b,i;scanf...

用C++如何编程十进制转换成十六进制的程序,谢谢!
include<string.h> void convfrom10tok(int ,int );void main(){ int k,m;cout<<"输入要转换的进制数(2,8,16...):";cin>>k;\/\/直接改为K=16即可实现十进制转换为十六进制 cout<<"输入一个10进制数:";cin>>m;convfrom10tok(m,k);cout<<"对应的"<<k<<"进制数:"<<endl;...

使用C++编译不同进制间的相互转换,必须使用数组
i=0;i<len;i++){ decimal_num+=charToNum(num[i])*pow(binary,len-i-1);} return decimal_num;} \/*将十进制转化为任意进制,decimal为十进制整数,binary为需要转化的进制*\/ void decimalToAnyBinary(int decimal,int binary){ string result;\/\/保存x进制数 char temp;while(decimal>0)...

c++语言 十进制转六进制程序
include<iostream> using namespace std;int main(){ int i, ten, six[20];cout << "十进制: ";cin >> ten;for( i=0; ten; ++i ){ six[i] = ten%6;ten \/= 6;} cout << "六进制: ";for( i--; i>=0; i-- )cout << six[i];cout << endl;} ...

相似回答
大家正在搜