hdu2031 进制转换(C语言)

来源:互联网 发布:qq抢红包软件 编辑:程序博客网 时间:2024/06/05 12:46
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
 

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

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

Sample Input
7 223 12-4 3
 

Sample Output
1111B-11
 

Author
lcy
 

Source
C语言程序设计练习(五)



C语言AC代码
#include<stdio.h>int main(){    int n,r;    while(scanf("%d%d",&n,&r)!=EOF)    {        int i=0,j,k,t=0;        char a[1048];        if(n<0)         {            n=-n;            t=1;        }        while(n>0)        {            k=n%r;            if(k>=10) a[i]=k-10+'A';            if(k<10) a[i]=k+'0';            n=n/r;            i++;        }        if(t==1) printf("-");        for(j=i-1;j>=0;j--)        {            printf("%c",a[j]);        }        printf("\n");    }    return 0;}
思路:先判断正负,然后判断是否大于10用字母表示,每次记录下来倒序输出即可。