奇偶校驗

題目描述

輸入一個字符串,然後對每個字符進行奇校驗,最後輸出校驗後的二進制數(如'3’,輸出:10110011)。

輸入描述:

輸入包括一個字符串,字符串長度不超過100。

輸出描述:

可能有多組測試數據,對於每組數據,
對於字符串中的每一個字符,輸出按題目進行奇偶校驗後的數,每個字符校驗的結果佔一行。
示例1

輸入

3
3a

輸出

10110011
10110011
01100001

這個題主要是學習了bitset。

bitset包含在頭文件<bitset>中,命名空間爲std。

一般構造爲  bitset<n>bs() 

n爲二進制的位數,括號裏的構造函數參數可以是整形,字符型和字符串。

同樣也可以用=賦值(對於整形和字符型可以,字符串不行)

同時重載了[],不過[0]指的是最低位,[n-1]指的是最高位,與平常數組的高低位習慣相反。

一些常用的方法有 

對於一個叫做foo的bitset:
foo.size() 返回大小(位數)
foo.count() 返回1的個數
foo.any() 返回是否有1
foo.none() 返回是否沒有1
foo.set() 全都變成1
foo.set(p) 將第p + 1位變成1
foo.set(p, x) 將第p + 1位變成x
foo.reset() 全都變成0
foo.reset(p) 將第p + 1位變成0
foo.flip() 全都取反
foo.flip(p) 將第p + 1位取反
foo.to_ulong() 返回它轉換爲unsigned long的結果,如果超出範圍則報錯
foo.to_ullong() 返回它轉換爲unsigned long long的結果,如果超出範圍則報錯

foo.to_string() 返回它轉換爲string的結果

對於bitset的其他用法可參考:

https://blog.csdn.net/lanchunhui/article/details/49644373


此題代碼:

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

int main()
{
    string a;
    int i;

    while(cin>>a)
    {
        for(i=0;i<a.size();i++)
        {
           bitset<8>bs(a[i]);
           if(bs.count()%2 == 0)
                bs[7] = 1;
           cout<<bs.to_string()<<endl;
        }
    }

    /*
    char a= '3';
    int b = 3;
    string c = "00110011";
    bitset<8> bs(c);
    cout<<bs.to_string()<<endl;
    cout<<bs.size()<<endl;
    cout<<bs.count()<<endl;
    */

    return 0;
}

發佈了112 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章