|
所应用知识点:(1)栈。(2)函数定义
题目:输入一个十进制数n,输出n的二进制,八进制和十六进制。每次输出占一行。
#include <bits/stdc++.h>
#include <stack>
using namespace std;
typedef long long ll;
char a[20] = "0123456789ABCDEF";
ll c[5] = {2,8,16};
stack <char> s;
ll k (ll n , ll b){
ll j , f = 0;
if(n == 0){
cout << "0" << endl;
return 0;
}
if (n < 0){
n = -n;
f = 1;
}
while (n) {
j = n % b;
s.push( a[j] );
n /= b;
}
if(f == 1)cout << "-";
while(! s.empty() ){
cout << s.top();
s.pop();
}
cout << endl;
return 0;
}
int main () {
ll n , i;
cin >> n;
for(ll i = 0 ; i < 3 ; i ++){
k(n , c[i]);
}
return 0;
}
注:(1)n为0和负数的情况。
? ? ? ? (2)ll型的函数有返回值莫要忘了写(俺因为这个东西wa了一发)。
|