solution.cpp 1.3 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#include <bits/stdc++.h> //万能头文件
using namespace std;
const int N = 15;
void code(int x)
{
    int std[N], flag = 0;
    if (x < 0)
        flag = 1, x = -x; //小于0求其绝对值
    for (int i = 0; i < 8; ++i)
    { //转换2进制
        std[i] = x % 2;
        x /= 2;
    }
    if (flag)                       // 如果是负数要求补码
        for (int i = 0; i < 8; ++i) //对8位二进制遍历
            if (std[i] == 1 && i < 7)
            { //找到不为0的第一位
                for (int j = i + 1; j < 8; ++j)
                    std[j] = 1 - std[j]; //从第不为零的一位开始取反
                break;                   //跳出第一重for循环
            }
    for (int i = 7; i >= 0; --i)
    { //逆序输出
        if (std[i] == 0)
            printf(" "); //0输出空格
        else
            printf("*"); //1输出*
    }
}
int main()
{
    int i = 10;
    while (i--)
    { //对10行数码遍历
        for (int j = 1; j < 17; ++j)
        { //一行32个数,每次读取两个,所以循环16次
            int p;
            scanf("%d", &p);
            code(p);
            scanf("%d", &p);
            code(p);
            printf("\n");
        }
        printf("\n\n\n"); //输出完成一个字后换行
    }
    return 0;
}