进制转换

有种方法就是利用短除法,由于输出有A,B.....所以采用字符输出

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int i,n,m,t,s,j,sign;
    char a[1024];
    while(scanf("%d %d",&m,&n)!=EOF)
    {
        j=0;
        sign=0;
        if(m==0) printf("0\n");
        else
        {
            if(m<0)
              {
                 m=abs(m);
                 sign=1;
              }
            t=m/n;
           s=m%n;
           if(s>=10)
           a[j++]=s+55;
            else a[j++]=s+'0';
            m=t;
            while(t)
              {  
                t=m/n;
                  s=m%n;
                  if(s>=10)
                 a[j++]=s+55;
                 else a[j++]=s+'0';
                 m=t;
              }
            if(sign==1)    printf("-"); 
           for(i=j-1;i>=0;i--)
             {
               printf("%c",a[i]);
              }
        printf("\n");
     }  
  }
    return 0;
}

开始想到用itoa函数,后来才知道这个函数只能转化为字符串

一个数字字符转化为一个数:
char a=‘3‘;
int d;
d = a - '0'; 就可以了。

相反数字转化为字符就是 a=d+‘0’;
一个字符转化为ASCII码值:
char a=‘x‘;
int d;
d = a;
---

还有一种方法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int i,n,m,t,s,j,sign;
    char a[1024];
    while(scanf("%d %d",&m,&n)!=EOF)
    {    
        if(m<0)
        {
            m=abs(m);
            printf("-");
        }
        itoa(m,a,n);
        strupr(a);
        puts(a);
    }
    return 0;
}

posted on 2015-05-10 20:57  l-m  阅读(191)  评论(0编辑  收藏  举报