1565 - 奇偶校验
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3',输出:10110011)。
<br />
Input
输入包括一个字符串,字符串长度不超过100。
Output
可能有多组测试数据,对于每组数据,<br />
对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。
<br />
Examples
Input
3245 1264gh
Output
10110011 00110010 00110100 10110101 00110001 00110010 10110110 00110100 01100111 01101000
Solution C
#include<stdio.h> #include<string.h> #include<math.h> void change(char * a,int b) { int i=0; while(b!=0) { a[i]=(int)b%2+48; b=(int)b/2; i++; } a[i]='\0'; } int main() { char c[110]; int i,count,b,j; char a[50]={0}; while(scanf("%s",c)!=EOF) { count=0; j=0; while(c[j]) { count=0; b=(int)c[j]; change(a,b); for(i=0;a[i];i++) { if(a[i]=='1') count++; } if(i<7) { a[i]='0'; i++; } if((int)count%2==1) a[i]='0'; else a[i]='1'; while(i>=0) { printf("%c",a[i]); i--; } printf("\n"); i=0; j++; } } return 0; }
Solution C++
#include <stdio.h> int main() { char a[100]; int i,j,k,b[8]; int asc,sum; while(scanf("%s",&a)!=EOF) { for(i=0;a[i]!='\0';i++) { asc=(int) a[i]; sum=0; //sum清零 for(k=7;k>0;k--) { b[k]=asc%2; if(b[k]==1) sum++; //统计a[i](二进制)"1" 的个数 asc/=2; } if(sum%2==0) b[0]=1; //校验位为b[0] else b[0]=0; for(j=0;j<8;j++) printf("%d",b[j]); printf("\n"); } } return 0; }