数的进制的转化

这里写图片描述

#include<string.h>
#include<math.h>
void main()
{int k;
printf("\n开始按1,结束按0\n");scanf("%d",&k);
    while(k==1)
{int n/*输入的数*/,a/*进制数*/,p[100],/*存放二进制*/b/*位数*/,i,c/*输出的进制数*/,d=1;
printf("输入的进制数:");scanf("%d",&a);printf("\n转化的进制数:");scanf("%d",&c);
if(a==10)
{printf("\n该数是:");scanf("%d",&n);printf("\n结果是");
if(c==2)
{i=0;
while(n!=0||d!=0)
{d=n%2;p[i]=d;i++;n/=2;}i--;b=i;
for(i=b-1;i>=0;i--)
printf("%d",p[i]);}
if(c==8)
printf("%o",n);
if(c==10)
printf("%d",n);
if(c==16)
printf("%x",n);}

if(a==8)
{printf("\n该数是:");scanf("%o",&n);printf("\n结果是");
if(c==2)
{i=0;
while(n!=0||d!=0)
{d=n%2;p[i]=d;i++;n/=2;}i--;b=i;
for(i=b-1;i>=0;i--)
printf("%d",p[i]);}
if(c==8)
printf("%o",n);
if(c==10)
printf("%d",n);
if(c==16)
printf("%x",n);}

if(a==16)
{printf("\n该数是:");scanf("%x",&n);printf("\n结果是");
if(c==2)
{i=0;
while(n!=0||d!=0)
{d=n%2;p[i]=d;i++;n/=2;}i--;b=i;
for(i=b-1;i>=0;i--)
printf("%d",p[i]);}
if(c==8)
printf("%o",n);
if(c==10)
printf("%d",n);
if(c==16)
printf("%x",n);}

if(a==2)
{printf("\n二进制的位数是:");scanf("%d",&b);
printf("\n该数是:");
for(i=0;i<b;i++)
scanf("%d",&p[i]);
 n=0;
for(i=b-1;i>=0;i--)
n+=p[i]*pow(2,i);/*转化十进制*/printf("\n结果是");
if(c==2)
{i=0;
while(n!=0||d!=0)
{d=n%2;p[i]=d;i++;n/=2;}i--;b=i;
for(i=b-1;i>=0;i--)
printf("%d",p[i]);}
if(c==8)
printf("%o",n);
if(c==10)
printf("%d",n);
if(c==16)
printf("%x",n);}printf("\n开始按1,结束按0\n");scanf("%d",&k);}}



这里写代码片

猜你喜欢

转载自blog.csdn.net/feiqipengcheng/article/details/81748909
今日推荐