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;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务