标题:数制转换
只看楼主
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 16:38



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




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

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