标题:数制转换
只看楼主
bianchengshe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-16
 问题点数:0 回复次数:0 
数制转换
用数组实现数制转换要求先判断是几进制数,然后实现二进制,八进制,十进制和十六进制之间的转换,还要有判断输入是否正确的程序。我的程序究竟要如何修改?
#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 17:12



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




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

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