求用C语言版数据结构做的十进制转换成其它进制(2,8,16)的程序!!!
有会的帮个忙。。。感激涕零!!
用栈
程序代码:
#include <stdio.h>
typedef struct tagSTACK
{
int stack[255];
int top;
}
STACK;
STACK s;
void push (int i)
{
s.top++;
s.stack[s.top] = i;
}
int pop ()
{
int ret;
if (s.top > -1)
{
ret = s.stack[s.top];
s.top--;
return ret;
}
return -1;
}
void Bin (int i, int k, char str[])
{
int j, ret;
while (i)
{
push (i % k);
i /= k;
}
for (j = 0; ret = pop (), ret != -1; ++j)
{
if (ret > 9)
{
str[j] = ret + 'A' - 10;
}
else
{
str[j] = ret + '0';
}
}
str[j] = 0;
}
int main (void)
{
int i;
char result[255];
s.top = -1;
scanf ("%d", &i);
Bin (i, 2, result);
printf ("二进制:\t\t%s\n", result);
s.top = -1;
Bin (i, 8, result);
printf ("八进制:\t\t%s\n", result);
Bin (i, 16, result);
printf ("十六进制:\t%s\n", result);
return 0;
}
程序代码:#include <iostream>
#include <stack>
using namespace std;
int NumConvert(int n,int k);
int main()
{
int n,k;
cout<<"请输入十进制数:"<<endl;
cin>>n;
cout<<"请输入想转化的进制:"<<endl;
cin>>k;
NumConvert(n,k);
}
int NumConvert(int n,int k)
{
stack<char> s;
int flag=0;
if(n<0)
{
n=-n;
flag=1;
}
while(n)
{
char x;
int m=n%k;
if(m>=10)
x='A'+m-10;
else
x='0'+m;
s.push(x);
n=n/k;
}
if(flag==1)
s.push('-');
while(!s.empty())
{
char e=s.top();
s.pop();
cout<<e;
}
return 0;
}我写的!
