加载中...

浙江理工大学入队200题——9M

问题 M: 零基础学C/C++106——进制转换

题目描述

输入一个十进制数N,将它转换成R进制数输出。

输入

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

输出

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

样例输入 Copy

7 2
23 12
-4 3

样例输出 Copy

111
1B
-11

题解

模板题了,思考一下我们人脑是怎么计算的,模拟就ok了

代码(AC)

点击查看代码
#include<stdio.h>
int main(){
int n,r;
while(scanf("%d%d",&n,&r)!=EOF)
{ 
	if(n<0){n=-n;printf("-");
	}
	int a[100]; //存放余数 
	int count=0;
	do{
		a[count++]=n%r;  //例如十进制18转十六进制,a[1]=2;a[2]=1 答案12
		n=n/r;
	}while(n!=0);  //当商不为0时进行循环,do while循环至少执行一次
	for(int i=count-1;i>=0;i--)
        {
		if(a[i]<=9){printf("%d",a[i]);}
		if(a[i]==10){printf("A");}
		if(a[i]==11){printf("B");}
		if(a[i]==12){printf("C");}
		if(a[i]==13){printf("D");}
		if(a[i]==14){printf("E");}
		if(a[i]==15){printf("F");}
	}//一一对应
	printf("\n");
}
return 0;}
posted @ 2022-10-29 00:08  shany212  阅读(58)  评论(0编辑  收藏  举报