-------------------------------------
典型例题13:C问题---任意进制转换问题(包括负进制)
-------------------------------------
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <math.h>
4
5 int main()
6 {
7 long n,m,r,result[100];
8 long *p=result;
9 printf("Input (number base):");
10 scanf("%ld %ld",&n,&r);
11 if(abs(r)>1 &&!(n<0 && r>0)){
12 printf("%ld=",n);
13
14 if(n!=0){
15 while(n!=0){
16 m=n/r;
17 *p=n-m*r;
18 if(*p<0 && r<0){
19 *p=*p+abs(r);
20 m++;
21 }
22 p++;n=m;
23 }
24
25 for(m=p-result-1;m>=0;m--){
26 if(result[m]>9)
27 printf("%c",55+result[m]);
28 else
29 printf("%ld",result[m]);
30 }
31 }
32 else printf("0");
33 printf(" (base %ld)/n",r);
34 }
35 else printf("input error!/n");
36 return 0;
37 }
-----------------------------
$ ./a.out
Input (number base):8 2
8=1000 (base 2)
$ ./a.out
Input (number base):8 -2
8=11000 (base -2)
$ ./a.out
Input (number base):8 -3
8=112 (base -3)
$ ./a.out
Input (number base):15 16
15=F (base 16)
$ ./a.out
Input (number base):-2 -2
-2=10 (base -2)
-----------------------------
C问题---任意进制转换问题(包括负进制)
最新推荐文章于 2020-05-17 17:42:32 发布