进制转换,原题目:
题目描述:
输入两个整数,十进制数n(32位整数)和进制r(2<=r<=16 r!=10),求转换后的数。
输入:
7 2
23 12 -4 3
输出:
111
1B -11
代码:
#includechar in[105];//存位数int main(){ int n,r; int i,j; int t; int judge=0;//judge判断是否是负数 char z='A';//z存储'A' char p='0';//p存储'0' while(scanf("%d%d",&n,&r)!=EOF) { if(n<0) { n=-n; judge=1; } t=n; i=1; while(t>0) { in[i]=t%r; t=t/r; i++; }//取余 整除 //使用数组in存储位数 if(r>10)//十进制以上的进制转换 { for(j=1;j<=i-1;j++) { if(in[j]>=10)in[j]=z+(in[j]-10);//比10大 else in[j]=in[j]+p;//小于10 } } else//十进制以下的进制转换 { for(j=1;j<=i-1;j++) in[j]=in[j]+p; } if(judge==1)printf("-");//是负数输出'-' for(j=i-1;j>0;j--) { printf("%c",in[j]); } printf("\n"); judge=0; } return 0;}
这里用字符数组存位数的方法,再对每一位进行判断。注意理解用字符存储位数。