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

先看题目:

意思:将一个十进制数进行负二进制转化,将一个十进制数进行二进制转化大家都很清楚,取余再除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;
}

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

时间: 2024-09-29 00:22:37

《N诺机试指南》(六)负二进制转化习题的相关文章

《N诺机试指南》(九)查找、贪心、链表问题

1.查找问题: 二分查找: 例题:使用map解决查找问题 代码: #include <bits/stdc++.h> using namespace std; //查找学生信息 struct Student{ string name; string sex; int age; string id; }stu[1005]; int main(){ int n; cin >> n; for(int i=0; i<n; i++){ cin >> stu[i].id >

计算机考研机试指南(六) ——栈

机试指南 cha 3 栈的应用 括号匹配问题 1 #include <iostream> 2 #include <stdio.h> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <math.h> 7 #include <string> 8 #include <string.h> 9 #include <std

机试指南第二章-经典入门-Hash的应用自解

Hash的应用: Hash即散列,不像数据结构与算法中讲的各种Hash方法和冲突处理等过多的阐述,以下主要介绍Hash在机试试题解答中的作用. 例2.5 统计同成绩学生人数 Hash解法AC代码:(一般想到的也是这种解法) #include<cstring> #include<iostream> using namespace std; int grade[105]; int main() { int n, m, index; memset(grade, 0, sizeof(gra

机试指南第六章-搜索-例题自解

枚举: 枚举是最简单也是最直白的搜索方式,它依次尝试搜索空间中所有的解,测试其是否符合条件,若符合则输出答案,否则继续测试下一组解. 例6.1 百鸡问题 #include<iostream> using namespace std; int main() { int n; while (cin >> n) { for (int x = 0; x <= 100; x++) { for (int y = 0; y <= 100 - x; y++) { int z = 100

机试指南第二章-经典入门-查找例题自解

查找: 对于查找问题,有难有易.可能只是直接地对某个数字的查找,也可能涉及搜索等相对难度更大的算法.这里先介绍查找的基础概念和方法. 例 2.9 找 x AC代码: #include<cstring> #include<iostream> using namespace std; int num[205]; int main() { int n, m, x; memset(num, 0, sizeof(num)); while (cin >> n) { bool fla

【算法总结】二叉树(王道机试指南第三章)

我们从二叉树的遍历谈起. 众所周知,在对二叉树的遍历过程中,根据遍历每一个结点的左子树.结点本身.右子树的顺序不同可将对二叉树的遍历方法分为前序遍历.中序遍历.后序遍历.我们摒弃数据结构教科书上复杂的遍历方式,而是使用我们在上一章所重点讨论过的递归程序来简单的实现它. 假设二叉树结点由以下结构体表示: struct Node { Node *lchild;//指向其左儿子结点的指针,当其不存在左儿子时为NULL Node *rchild;//指向其右儿子结点的指针,当其不存在右儿子时为NULL

机试指南例2.1排序

题目描述 对输入的n个数进行排序并输出. 输入描述:     输入的第一行包括一个整数n(1<=n<=100).     接下来的一行包括n个整数. 输出描述:     可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格.     每组测试数据的结果占一行. 示例1 输入 4 1 4 3 2 输出 1 2 3 4 代码2.1 使用冒泡排序 #include<stdio.h> int main() { int n; int buf[100]; while

机试指南第二章-经典入门-贪心例题自解

例2.11 FatMouse's Trade 解题思路 贪心策略.每次都买剩余物品中性价比(即重量价格比)最高的物品,直到该物品被买完或者钱耗尽.若该物品已经被买完,则我们继续在剩余的物品中寻找性价比最高的物品 AC代码 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct Thing { double j;

机试指南例2.2成绩排序

题目描述 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息. 输入描述: 测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据. 每个学生的数据包括姓名(长度不超过100的字符串).年龄(整形数).成绩(小于等于100的正数). 输出描述: 将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序. 然后输出学生信息,按照如下格式: 姓名 年龄 成绩