标题:数制转换
只看楼主
bianchengshe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-16
 问题点数:0 回复次数:5 
数制转换
用数组实现数制转换要求先判断是几进制数,然后实现二进制,八进制,十进制和十六进制之间的转换,还要有判断输入是否正确的程序。我的程序究竟要如何修改?
#include<stdio.h>
#include<math.h>
#define N 1000
int i,j,y,n,s;
int m,r,reminder;
int x,l;
                          //全局变量默认初始化为0,不必再赋0了

D2M(int g,int h)                  //十进制数转换为其他进制数
{int c[N];
i=0;
reminder=g%h;
g=g/h;
if(reminder>9)
{c[i]=reminder+55;
   i++; }
else
{c[i]=reminder;
  i++;}
if(g>0)
D2M(g,h);
for(j=i-1;j>=0;j--)
if(c[j]>=65)
printf("%c",c[j]);
else
printf("%d",c[j]);  
return 0;
}

M2D(int e)                       //二进制和八进制数转换为十进制数,并这转换为其他进制数
{int a[N];  
printf("请输入%d进制位数:",m);
scanf("%d",&n);  
printf("请输入%d进制的每位并使每位用空格隔开:",m);
for(i=0;i<n;i++)  
  scanf("%d",&a[i]);
for(i=n-1;i>=0;i--)
{y+=(int)pow(e,j)*a[i];             //强制类型转换,以免造成数据丢 失
  j++;  
}  
printf("需要转换的进制M:");
scanf("%d",&s);  
printf("请输出转换成%d进制的结果:",s);
D2M(y,s);
return 0;
}

H2D(int f)                        //十六进制数转换为十进制数,并转换为其他进制数
{int b[N];  
printf("请输入%d进制位数:",m);
scanf("%d",&n);



printf("请输入%d进制的每位并使每位用空格隔开:",m);
for(i=0;i<n;i++)  
scanf("%x",&b[i]);
for(i=n-1;i>=0;i--)
{y+=(int)pow(f,j)*b[i];          //强制类型转换,\以免造成数据 丢失
  j++;
}  
printf("需要转换的进制M:");
scanf("%d",&s);  
printf("请输出转换成%d进制的结果:",s);
D2M(y,s);
return 0;
}
  
void main()
{printf("请给定一个需转换的数:",m);
scanf("%d",&m);
if(m==2||m==8) M2D(m);  //二进制和八进制转换成十进制
else if(m==16) H2D(m);   //十六进制转换成十进制
else if(m==10) //十进制转换成其它进制
{printf("请输入一个%d进制数:",m);
  scanf("%d",&x);  
  printf("请输入需要转换成的进制M(2or8or16):");
  scanf("%d",&r);  
  printf("请输出转换成%d进制的结果:",r);
  D2M(x,r);  
}
printf("\n");
}
/*printf("请给定待转换的进制数M():");
char string [81];
int m,i=0;
char c,k;
gets(string);
for(i=0;(c=string[i])!='\0';i++);
     k=string[i-1];
     l=i-1;
//printf("%d,\n",l);
if(k=='B')
{m=2;}
if(k=='O')
{m=8;}
if(k=='D')
{m=10;}
if(k=='H')
{m=16;}
//printf("%d,",m);
if(m==2||m==8) M2D(m);  //二进制和八进制转换成十进制
else if(m==16) H2D(m);   //十六进制转换成十进制
else if(m==10) //十进制转换成其它进制
{printf("请输入一个%d进制数:",m);
  scanf("%d",&x);  
  printf("请输入需要转换成的进制M(2or8or16):");
  scanf("%d",&r);  
  printf("请输出转换成%d进制的结果:",r);
  D2M(x,r);  
}  
printf("\n");
} */
搜索更多相关主题的帖子: 十六进制 include 二进制 八进制 十进制 
2015-01-16 16:46
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:0 
你这一坨程序我实在没办法看。
如果不计较太多只是显示可以用C++的流,比如
cout<<hex<<255;//程序输出十六进制的ff
2015-01-18 10:49
bianchengshe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-16
得分:0 
回复 楼主 bianchengshe
你好,你能帮我弄一个和要求相符合的程序吗?我实在是不知道该怎样去弄了,谢谢!!!
2015-01-19 10:14
bianchengshe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-16
得分:0 
回复 2楼 天使梦魔
你好,你能帮我弄一个和要求相符合的程序吗?我实在是不知道该怎样去弄了,谢谢!!!
2015-01-19 10:28
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
这个东东知道原理还是自己实现吧

我目测你 原理尚不明确    其实除了10进制外,其他的进制 都只能以字符串形式模拟

DO IT YOURSELF !
2015-01-19 11:24
bianchengshe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-16
得分:0 
回复 5楼 wp231957
你好,你能帮我弄一个和要求相符合的程序吗?我实在是不知道该怎样去弄了,谢谢!!
2015-01-19 15:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-441178-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.728078 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved