首页 > 代码库 > HDOJ2031进制转换

HDOJ2031进制转换

项目做久了,我发现自己对代码的实现能力越来越差劲了!经过前一段时间找工作的经历就可以明显感觉的到自己的代码熟练度不够!因此,今后要多加练习。要想做好一个优秀的程序员就要多敲代码,多思考。


★结题思路

利用了栈的思想,将整数N与R求得的余数压栈,然后将N/R与R求得的余数压栈,知道N/R小于R为止。可以利用数组来模拟栈的操作,可以将余数存入数组中然后倒序输出!

★代码实现

#include <stdio.h>

int main()
{
    int a,b,c,n,r,i,flag,len;
    char s[100];
    while(scanf("%d %d",&n,&r)!=EOF)
    {
        if(n >= 0)                      
        {
            b = n;
            i = 0;
            while(b > r)
            {
                a = b;
                s[i++] = a%r;
                b /= r;         
            }             
            s[i] = b; 
            flag = i;
        }   
      
        else
        {
            b = -n;
            i = 0;
            while(b > r)
            {
                a = b;
                s[i++] = a%r;
                b /= r;             
            }
            s[i++] =b;
            s[i] = '-';
            flag = i;
        }  
              
        for(i = flag;i >=0;i --)
        {
            if(s[i]=='-')
            {
                printf("%c",s[i]);  
                continue;   
            }
            if(s[i]==10)
               printf("A");
            else if(s[i]==11)
               printf("B");
            else if(s[i]==12)
               printf("C");
            else if(s[i]==13)
               printf("D");
            else if(s[i]==14)
               printf("E");
            else if(s[i]==15)
               printf("F");   
            else
               printf("%d",s[i]);      
              
        }
            
        printf("\n");           
    }
    return 0;    
} 


HDOJ2031进制转换