题目
实现栈的基本操作;进栈,出栈,初始化等操作。
实现十进制转n进制
# Examples 1
input
1234 8
output
2322
# Examples 2
input
4567 16
output
11 D7
Source Program
# include <stdio.h>
# include <stdlib.h>
char b[ 20 ] = { "0123456789ABCDEF" } ;
typedef struct node
{
char a[ 100 ] ;
int top;
} seqstack, * pstack;
pstack init ( ) ;
int Empty ( pstack s) ;
void Push ( pstack s, char x) ;
int Pop ( pstack s, char & x) ;
int main ( )
{
pstack s= init ( ) ;
int x, n;
char k;
printf ( "请输入要转换的数据:" ) ;
scanf ( "%d" , & x) ;
printf ( "请输入要转换成几进制:" ) ;
scanf ( "%d" , & n) ;
while ( x != 0 )
{
Push ( s, x % n) ;
x /= n;
}
while ( ! Empty ( s) )
{
Pop ( s, k) ;
printf ( "%c" , b[ k] ) ;
}
puts ( "" ) ;
return 0 ;
}
pstack init ( )
{
pstack s;
s = ( pstack) malloc ( sizeof ( seqstack) ) ;
if ( s)
s-> top = - 1 ;
return s;
}
int Empty ( pstack s)
{
if ( s-> top == - 1 )
return 1 ;
return 0 ;
}
void Push ( pstack s, char x)
{
s-> top++ ;
s-> a[ s-> top] = x;
}
int Pop ( pstack s, char & x)
{
if ( Empty ( s) )
return 0 ;
x = s-> a[ s-> top] ;
s-> top-- ;
return 1 ;
}
tip
在线进制转换
实现方法(c++)
# include <iostream>
using namespace std;
char b[ 20 ] = { "0123456789ABCDEF" } ;
char a[ 1100 ] ;
int main ( )
{
int x, n;
cin >> x >> n;
int k = 0 ;
while ( x != 0 )
{
a[ ++ k] = x % n;
x = x / n;
}
for ( int i = k; i >= 1 ; i-- )
cout << b[ a[ i] ] ;
cout << endl;
return 0 ;
}