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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值