USTC机试——十进制转换成任意m进制数字
唯一注解:用栈的思想将余数压入栈中然后依次输出就可以了,在此过程中要注意商为0时的最后一个余数,并且要注意余数大于0时将其转化成字母进制。
代码和注释如下:
//输入十进制整数将其转换成任意进制的数即可
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
int main(){
stack<char> s;
int n,m;//n代表数,转换成m进制数
while(scanf("%d%d",&n,&m)!=EOF){
char c;
while(n/m){
if(n%m>=10){
c='A'+(n%m-10);
s.push(c);
}
else {
s.push(n%m+'0');//数字加字符串变成字符串,字符串减去零变成数字
}
n/=m;
}
if(n%m>=10){//商为零时还剩一个余数
c='A'+(n%m-10);
s.push(c);
}
else {
s.push(n%m+'0');//数字加字符串变成字符串,字符串减去零变成数字
}
while(!s.empty()){
printf("%c",s.top());
s.pop();
}
printf("\n");
}
return 0;
}