进制转换
有种方法就是利用短除法,由于输出有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; }