菜鸟的博客

纵有疾风起,人生不言弃。

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

2023.4.20

复制代码
 1 //1.10数制转换
 2 //给定一个M进制的数x,实现对x向任意的一个非M进制的数的转换
 3 #include<stdio.h>
 4 #define MAXCHAR 101
 5 //字符转换为数字
 6 int char_to_num(char ch);
 7 //数字转换为字符
 8 char num_to_char(int num);
 9 //其它进制转换为十进制
10 long source_to_decimal(char temp[],int source);
11 //十进制转换为其他进制
12 int decimal_to_object(char temp[],long decimal,int object);
13 //转换后新数输出
14 void output(char temp[],int length); 
15 
16 void main()
17 {
18     int source;
19     int object;
20     int length;
21     long decimal_num;
22     char temp[MAXCHAR];
23     int flag=1;
24     while(flag)
25     {
26         printf("转换前的数是:");
27         scanf("%s",temp);
28         printf("转换前的数制是:");
29         scanf("%d",&source); 
30         printf("转换后的数制是:");
31         scanf("%d",&object);
32         printf("转换后的数是:");
33         decimal_num = source_to_decimal(temp,source);
34         length = decimal_to_object(temp,decimal_num,object);
35         output(temp,length);
36         printf("继续请输入1,否则输入0:\n;");
37         scanf("%d",&flag); 
38     } 
39 } 
40 
41 int char_to_num(char ch)
42 {
43     if(ch>='0' && ch<='9')
44         return ch-'0';
45     else
46         return ch-'A'+10; 
47 } 
48 
49 char num_to_char(int num)
50 {
51     if(num>=0 && num<=9)
52         return (char)('0'+num-0);
53     else
54         return (char)('A'+num-10); 
55 } 
56 
57 long source_to_decimal(char temp[],int source)
58 {
59     long decimal_num = 0;
60     int length;
61     int i;
62     for(i=0;temp[i]!='\0';i++);
63     length = i;
64     for(i=0;i<=length-1;i++)
65         decimal_num = (decimal_num * source) + char_to_num(temp[i]);
66     return decimal_num; 
67 } 
68 
69 int decimal_to_object(char temp[],long decimal_num,int object)
70 {
71     int i;
72     while(decimal_num)
73     {
74         temp[i] = num_to_char(decimal_num%object);
75         decimal_num = decimal_num/object;
76         i++; 
77     } 
78     temp[i] = '\0';
79     return i; 
80 } 
81 
82 void output(char temp[],int length)
83 {
84     int i;
85     for(i=length-1;i>=0;i--)
86         printf("%c",temp[i]);
87     printf("\n"); 
88 } 
复制代码

 

posted on   hhmzd233  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示