码迷,mamicode.com
首页 > 其他好文 > 详细

《N诺机试指南》(六)负二进制转化习题

时间:2020-02-17 14:19:05      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:turn   cpp   ret   while   info   can   图片   十进制   字符串   

先看题目:

技术图片

 

意思:将一个十进制数进行负二进制转化,将一个十进制数进行二进制转化大家都很清楚,取余再除2向下取整,接着反序输出

负二进制转化类似:1.对-2取余,再取绝对值

         2.存入结果数组里

         3.将数减去余数再除-2

         4.反顺序打印出来

代码:

//负二进制转换
/*
道理与 十进制转二进制一样
注意:有多组输入
*/
#include <stdio.h>
#include <math.h>

int main(){
    int n;
    int result[105];
    while(scanf("%d",&n) != EOF){
         //存储负二进制字符串
        int count = 0;  // 数组下标
        if(n == 0){   //任何情况都要考虑到,不能把0给忘记了
            printf("0");
        }
        while(n != 0){
            int w = abs(n % -2);  //c语言中abs()函数用于求整数的绝对值,需要math头文件
            result[count++] = w ;
            n = (n - w)  / (-2);  //此处和转二进制不同要注意
        }
        //反序输出
        for (int i = count - 1; i >= 0; i--){
            printf("%d",result[i]);
        }
        printf("\n");
    }
    return 0;
}

《N诺机试指南》(六)负二进制转化习题

标签:turn   cpp   ret   while   info   can   图片   十进制   字符串   

原文地址:https://www.cnblogs.com/Whgy/p/12321435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!