题解 | #奇偶校验#
奇偶校验
https://www.nowcoder.com/practice/729d11d043d8448e83befa1410b694fe
#include <stdio.h> #include <string.h> void check(int a) { //printf("%d\n",a); int b[8]; memset(b, 0, sizeof(b)); int num=0; int i=7; while(a) { int c=a%2; if(c)num++; b[i--]=c; a=a/2; } if(num%2==0) b[0]=1; for(int i=0;i<8;i++) printf("%d",b[i]); printf("\n"); } int main() { char a[101]; while (scanf("%s", a) != EOF) { // 注意 while 处理多个 case for(int i=0;a[i]!='\0';i++) { check(a[i]); } } return 0; }
总体思路:将字符的ascii码值转换成二进制数,再看这个二进制数中1的个数,如果为偶数则需要在最高位置为1,使得1的个数为奇数