C问题---任意进制转换问题(包括负进制)

来源:互联网 发布:php特殊字符转义 编辑:程序博客网 时间:2024/06/18 02:54

-------------------------------------
典型例题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)
-----------------------------

原创粉丝点击