请采用VC++,编写代码,实现基于循环冗余码的差错检测。 具体步骤: 1)输入待传输的二进制串; 2)输入被除数:二进制串; 3)计算,输出余数; 4)输出发送的数据;
时间: 2023-05-22 09:05:16 浏览: 76
以下是使用VC编写基于循环冗余码的差错检测的代码,具体步骤如下:
```
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
int main()
{
char input[MAXLEN], divisor[MAXLEN], message[MAXLEN], remainder[MAXLEN], quotient[MAXLEN];
int input_len, divisor_len, message_len, i, j, k;
printf("请输入待传输的二进制串:");
gets(input);
input_len = strlen(input);
printf("请输入被除数:");
gets(divisor);
divisor_len = strlen(divisor);
message_len = input_len + divisor_len - 1;
// 在待传输数据的末尾添加被除数长度-1个0
for (i = 0; i < input_len; i++)
message[i] = input[i];
for (i = input_len; i < message_len; i++)
message[i] = '0';
for (i = 0; i < divisor_len - 1; i++)
message[input_len + i] = '0';
printf("输入的二进制串:%s\n", input);
printf("生成的数据:%s\n", message);
// 循环冗余码的计算
for (i = 0; i < input_len; i++)
{
if (message[i] == '0')
continue;
for (j = i, k = 0; j < i + divisor_len; j++, k++)
remainder[k] = (message[j] == divisor[k]) ? '0' : '1';
while (k < divisor_len)
remainder[k++] = '0';
for (j = i; j < i + divisor_len; j++)
message[j] = remainder[j - i];
}
// 计算余数和商,输出差错检测码
for (i = 0; i < input_len; i++)
quotient[i] = message[i];
quotient[input_len] = '\0';
for (i = 0; i < divisor_len - 1; i++)
remainder[i] = message[input_len + i];
remainder[divisor_len - 1] = '\0';
printf("差错检测码:%s\n", remainder);
return 0;
}
```
注意:以上代码仅供学习参考使用,请勿用于实际生产环境。