C语言进制转换

 COBOL Code 
思路:
  输入字符数组->整型数组->10进制转换->转换为所需要的进制->字符数组->输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "stdio.h"
#include "math.h"
#include "string.h"
int B(int b[],int n,int l)
{
  int i= 0;
  double t= 0;
   for(;i<l;i++)
  {
      t=b[i] *pow((double)n,(double)(l-1-i))+t;
  }
   return t;
}
void Z(int k,int m)
{
    int i= 0,q,a1[ 16];
    char a2[ 16];
    while(k> 0)
    {
        a1[i]=k%m;
        k=k /m;
        i++;
        q=i;
    }
    printf( "你想要的数:\n");
   if(m<= 10)
   {
     for(i=q-1;i>= 0;i--)
    printf( "%d",a1[i]);
   }
    else
     for(i=q-1;i>= 0;i--)
   {
           switch (a1[i])
           {
            case  0:a2[i]= '0';break;
            case  1:a2[i]= '1';break;
            case  2:a2[i]= '2';break;
            case  3:a2[i]= '3';break;
            case  4:a2[i]= '4';break;
            case  5:a2[i]= '5';break;
            case  6:a2[i]= '6';break;
            case  7:a2[i]= '7';break;
            case  8:a2[i]= '8';break;
            case  9:a2[i]= '9';break;
            case  10:a2[i]= 'a';break;
            case  11:a2[i]= 'b';break;
            case  12:a2[i]= 'c';break;
            case  13:a2[i]= 'd';break;
            case  14:a2[i]= 'e';break;
            case  15:a2[i]= 'f';break;
           }
           printf( "%c",a2[i]);
   }
}
int main()
{
    char a[ 17];
    int b[ 16],c[ 16],k;
    int n,m;int i= 0,l;
     //int *q;
    printf( "请输入进制:\n");
    scanf( "%d",&n);
    printf( "请输入(最大16位数):\n");
    getchar();
    gets(a);
    l=strlen(a);
     for(i= 0;i<l;i++)
    { if( *(a+i)<='9')
          switch( *(a+i)<(48+n)?*(a+i):'-1')
        {
            case  '0': *(b+i)=0;break;
            case  '1': *(b+i)=1;break;
            case  '2': *(b+i)=2;break;
            case  '3': *(b+i)=3;break;
            case  '4': *(b+i)=4;break;
            case  '5': *(b+i)=5;break;
            case  '6': *(b+i)=6;break;
            case  '7': *(b+i)=7;break;
            case  '8': *(b+i)=8;break;
            case  '9': *(b+i)=9;break;
            case  '-1':printf( "非法输入已将关闭"); return  0;
         }
       else
       switch( *(a+i)<(97+n-10)?*(a+i):'-1')
        {
            case  'a': *(b+i)=10;break;
            case  'b': *(b+i)=11;break;
            case  'c': *(b+i)=12;break;
            case  'd': *(b+i)=13;break;
            case  'e': *(b+i)=14;break;
            case  'f': *(b+i)=15;break;
            case  '-1':printf( "非法输入已将关闭"); return  0;
         }
    }
        k=B(b,n,l);
        printf( "请输入要转化的进制:\n");
        scanf( "%d",&m);
        Z(k,m);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值