标签:
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如‘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; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5636061.html