2010年华中科技:奇偶校验
Posted vCoders
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2010年华中科技:奇偶校验相关的知识,希望对你有一定的参考价值。
- 题目描述:
-
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如‘3’,输出:10110011)。
- 输入:
-
输入包括一个字符串,字符串长度不超过100。
- 输出:
-
可能有多组测试数据,对于每组数据,
对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。
- 样例输入:
-
3 3a
- 样例输出:
-
10110011 10110011 01100001
思路:将字母的ASCII码转化为对应的7位二进制数,若二进制数中1的个数为偶数,则校验位为1(形成奇数个1),若二进制数中1的个数为奇数,则校验位为0。偶校验使8位校验码形成偶数个1。#include <cstdio> #include <cstring> using namespace std; const int MAXN=105; char buf[MAXN]; int binary[8]; void solve(char ch) { memset(binary,0,sizeof(binary)); int x=(int)ch; int i=0; int mark=0; while(x!=0) { int k=x%2; binary[i]=k; if(k==1) mark++; x/=2; i++; } if(mark%2==0) binary[7]=1; else binary[7]=0; for(int i=7;i>=0;i--) { printf("%d",binary[i]); } printf("\n"); } int main() { while(scanf("%s",buf)!=EOF) { for(int i=0;buf[i];i++) { solve(buf[i]); } memset(buf,0,sizeof(buf)); } return 0; }
以上是关于2010年华中科技:奇偶校验的主要内容,如果未能解决你的问题,请参考以下文章