[编程题] 进制转换
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
输入例子:
7 2
输出例子:
111
#include <stdio.h>
#include <iostream>
#include <stack>
using namespace std;
int main() {
int m,n;
while(scanf("%d %d",&m,&n) != EOF) {
stack<char> temp;
int s = m;
if(m < 0)
m *=(-1);
while(m) {
int k = m%n;
if(k >9) {
char s = k - 10 + 'A';
temp.push(s);
}else {
char s = k + '0';
temp.push(s);
}
m = m/n;
}
if(s < 0)
printf("-");
while(!temp.empty()) {
printf("%c",temp.top());
temp.pop();
}
printf("\n");
}
return 0;
}
一开始遇到负数的问题,解决办法:如果输入的数小于0 把负号提出来 就可以了,最后输出的时候判断下,负数要输出一个负号。