进制转换算法及代码

进制之间的转换想必大家都十分熟悉了,这次我们用代码将它实现
十进制转二进制:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#pragma warning(disable:4996) //在vs2010及以上版本,若使用了scanf函数,便会报错,此处使用预编译命令pragma 忽略编译器对此```
int main()
{
int a ,x;
int i = 0,j = 0,k = 0;
double b,y;
char array[20] = "";   //定义一个char 类型的数组,将scanf 的输入入栈
int str1[20],str2[20],str3[20];
int arr[20];
char dest_str[20];
char c = '.';
scanf("%s", &array);
//strchr()函数若未找到字符串c,便返回NULL;此处我们用来判断输入的数是整数还是浮点数
if(strchr(array, c) == NULL)  //输入的是整数
{
sscanf(array,"%d",&a);//将字符串转换为整型数据a
while(a/2 != 0)  //最小乘法次数
{
str1[i++] = a%2;
 a = a/2;
}
str1[i]  = 1;
printf("输入数据的二进制表示为:");
for(k = i;k>=0;k--)//存放的二进制数为倒序,输出需正序输出
{
printf("%d",str1[k]);
}   printf("\n");
    }
    else
    {
        sscanf(array,"%lf",&b);
        x= (int)b;
        y = b-(int)b;
        i = 0;
        while(x/2 != 0)
        {
            str2[i++] = x%2;
            x =x/2;
        }
        str2[i]  = 1;

        while((y*2 -(int)y*2)!= 0)
        {
            str3[j++] = int(y*2);
            y = y*2 -(int)y*2;
        }
        printf("输入数据的二进制表示为:");
        for(k = i;k>=0;k--)
        {
            printf("%d",str2[i]);
        }
        printf(".");
        for(int k = 0;k<j;k++)
        {
            printf("%d",str3[k]);
        }
        printf("\n");
    }
    return 0;   
}
//在vs2010编译通过;

十进制转二进制的代码便如上,十进制与其他进制的转换也大同小异在此便不在赘述;
这段代码还有很多不足的地方,如转换后的二进制数以数组元素的形式存储且单个打印,预想中的实现方式为将其转化为一个整形或浮点型数或者字符串来实现;但使用strncpy函数显然不可行,正在进一步的探索中…

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值