首页 > 其他 > 详细

*HDoj 2031 进制转换

时间:2020-03-29 13:51:36      阅读:72      评论:0      收藏:0      [点我收藏+]
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
 

 

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

 

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

 

Sample Input
7 2 23 12 -4 3
 

 

Sample Output
111 1B -11
 

 

Author
lcy
 

 

Source
 

 

Recommend
lcy   |   We have carefully selected several similar problems for you:  2032 2033 2035 2034 2039 
 
 
 
要注意以下几点:
1学会memset函数的使用,而且使用时要包含头文件 <string.h>
2在C语言中求绝对值函数 int abs(int n); 在头文件 <stdlib.h> 中,而 double fabs(double x); 在 <math.h>中;
在C++中两者都在<cmath>中,因此C++中只需要包括<cmath>即可。
 
C语言代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    int n,r,l;
    char s[30];
    char temp;
    memset(s,0,30);
    int flag=0;
    while(scanf("%d%d",&n,&r)!=EOF)
    {
        l=0;
        flag=0;
        memset(s,0,30);
        if(n<0)
        {
            flag=1;
            n=abs(n);
        }
        while(n!=0)
        {
            if(n%r>=10)
                s[l++]=A+(n%r-10);
            else
                s[l++]=0+n%r;
            n/=r;
        }
        for(int i=0;i<(int)strlen(s)/2;i++)
        {
            temp=s[i];
            s[i]=s[strlen(s)-i-1];
            s[strlen(s)-i-1]=temp;
        }
        if(flag)
            printf("-");
        printf("%s\n",s);
    }
}

 

*HDoj 2031 进制转换

原文:https://www.cnblogs.com/wzmm/p/12591660.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!