zoukankan      html  css  js  c++  java
  • HUST-奇偶校验

    题目描述

    输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3’,输出:10110011)。

    输入描述:

    输入包括一个字符串,字符串长度不超过100。

    输出描述:

    可能有多组测试数据,对于每组数据,
    对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。
    示例1

    输入

    复制
    3
    3a
    

    输出

    复制
    10110011
    10110011
    01100001

    这一题里面将数字和字母统一看成是char类型的,所以数字3实际存储时为ASCII码中的‘3’,其十进制表示是51,转化为二进制表示就是0110011,取最高位为奇校验位,校验位为1,
    所以校验后的二进制数为10110011,字母同理。故本题只需将输入的字符减去‘’得到字符的十进制表示,再将其转化为七位二进制数加上一位校验位输出即可。
    解法一:
    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <string>
    using namespace std;
    int main()
    {
        string line;
        while(getline(cin,line))
        {
            int len=line.length();
            for(int i=0;i<len;i++)
            {
                int j=0;
                int arr[9]={0};
                int num=(int)(line[i]);
                int count=0;
                while(num>0){
                    int value=num%2;
                    arr[j++]=value;
                    if(value==1) count++;
                    num=num/2;
                }
                if(count%2==0) arr[7]=1; 
                for(j=7;j>=0;j--) cout<<arr[j];
                cout<<endl;
            }
        }
        return 0;
    }

    解法二:(使用bitset

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <string>
    #include <bitset>
    using namespace std;
    int main()
    {
        string str;
        while(cin>>str)
        {
            for(auto c:str)
            {
                bitset<8> bit(c);
                if(bit.count()%2==0) bit[7]=1;
                cout<<bit<<endl;
            }
        }
        return 0;
    }
    天晴了,起飞吧
  • 相关阅读:
    cunda 常用命令,删除,创建,换源
    kivy画板
    基础易忘记
    关于tkinter
    airtest常用指令
    在kivy中加图片
    QQ消算轰炸,我好无聊真的
    自动华键盘使用
    自动化键盘,python
    canvas中的优先级,.after最前,before最底,canvas中间,部件在布局下面
  • 原文地址:https://www.cnblogs.com/jianqiao123/p/14374405.html
Copyright © 2011-2022 走看看