十进制到一至十六进制转换 C++

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:37:45
小 生请教各位C++高手帮我找出下面这个程序的问题所在 在下不胜感激!!!! 并将高分相赠赠!!!!

请看下面这个程序!!

#include<iostream>
#include<stack>
using namespace std;

void dec2base(int num,int base){
string digitChar="0123456789ABCDEF",numStr=" ";
stack<char> stk;
do{
stk.push(digitChar[num%base]);
num/=base;
}while(num!=0);

while(!stk.empty()){
numStr+=stk.top();
stk.pop();
}
cout<<"转换结果为:"<<numStr; /始终说这个cout有错~~
cout<<endl;
}

void main(void){
int num,base;
cout<<"请输入要转换为十六进制数的十进制数:"<<endl;
cin>>num;
cout<<"请输入base:"<<endl;
cin>>base;
dec2base(num,base);
}

问题就是这样~~

把cout<<"转换结果为:"<<numStr.c_str(); //始终说这个cout有错~~ 改成这个就可以了,因为string类没有重载<<,所以不能直接使用,但有个成员函数可以转成C风格的字符串,或者就是加<string.h>即可。

#include <string>
加这个头文件就好了.

//交流交流
#include <iostream>
using namespace std;
int a[100];
void func2(int x)//x此处是10进制数,转化成二进制
{
int i=0;
while(x!=0)
{
a[i]=x%2;
x/=2;
i++;
}
for(int k=i-1;k>=0;k--)
{
cout<<a[k];
}
cout<<endl;
}
void func8(int x)//x此处是10进制数,转化成八进制
{
int i=0;
while(x!=0)
{
a[i]=x%8;
x/=8;
i++;
}
for(int k=i-1;k>=0;k--)
{
cout<<a[k];
}
cout<<endl;
}
void func16(int x)//x此处是10进制数,转化成十六进制
{
int i=0;
while(x!=0)
{
a[i]=x%16;
x/=16;
i++;
}

for(int k=i-1;k>=0;k--)
{
if(a[k]<10)
cout<<a[k];

if(a[k]==10)