题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2700
方法:无
思路:俗话说实践出真知,这道题本意就是串口校验码的计算过程的复现,如果末尾指定为奇数校验,那么需要整个字符串内1的个数是否为奇数,偶数校验同理。这个问题作为串口通信校验位的基本问题可以说很经典,我记得考试的时候我们还为此争论了一个上午,实际上,花十分钟做一些这道题,一切都迎刃而解,实践出真知!
难点:无
#include <cstdio>
#include<string.h>
using namespace std;
int main()
{
char str[50];
char parity = 0;
while(~scanf("%s",&str))
{
if(strcmp(str,"#") == 0) break;
int len = strlen(str);
int num1 = 0;
for(int i = 0;i < len-1;i++)
{
if(str[i] == '1')
num1++;
}
if(str[len-1] == 'e')
{
if(num1%2 == 1)
parity = '1';
else
parity = '0';
}
if(str[len-1] == 'o')
{
if(num1%2 == 1)
parity = '0';
else
parity = '1';
}
for(int i = 0;i < len-1;i++)
printf("%c",str[i]);
printf("%c\n",parity);
}
}