谁写的代码 简直是天才
#include <math.h>#include <stdio.h>
#include <conio.h>
void CRC(int m,int n)
{
int i=0,j=0;
int msg[50];
int gx[20];
int c[50];
printf("\ninput the message's numbers:\n"); /*输入二进制信息(0 ~ m-1) */
for(i=0;i<m;i++)
{
scanf("%d",&msg[i]);
}
printf("input the G(x)'s numbers:\n"); /*输入二进制生成多项式(0 ~ n-1)*/
for(i=0;i<n;i++)
{
scanf("%d",&gx[i]);
}
/*将msg的值赋给c*/
for(i=0;i<m;i++)
{
c[i]=msg[i];
}
for(i=m;i<m+n-1;i++)
{
c[i]=0;
}
for(i=0;i<m;i++)
{
if(c[i]==0) continue;
else
{
for(j=0;j<n;j++)
{
c[i+j]=c[i+j]^gx[j];
}
}
}
for(i=0;i<n-1;i++)
{
msg[m+i]=c[m+i];
}
printf("The CRC:"); /*输出循环冗余码:数组msg[m+n-1] */
for(i=0;i<m+n-1;i++)
{
printf("%d",msg[i]);
}
printf("\n");
}
void CHECK(int k,int n)
{
int i=0,j=0;
double r;
int msg[50];
int gx[20];
int c[50];
printf("\ninput the CRC message:\n"); /*输入二进制信息(0 ~ m-1) */
for(i=0;i<k;i++)
{
scanf("%d",&msg[i]);
}
printf("input the G(x):\n"); /*输入二进制生成多项式(0 ~ n-1)*/
for(i=0;i<n;i++)
{
scanf("%d",&gx[i]);
}
/*将msg的值赋给c*/
for(i=0;i<k;i++)
{
c[i]=msg[i];
}
for(i=0;i<k-(n-1);i++)
{
if(c[i]==0) continue;
else
{
for(j=0;j<n;j++)
{
c[i+j]=c[i+j]^gx[j];
}
}
}
for(i=0,r=0;i<n-1;i++)
{
r=r+c[k-(n-1)+i]*pow(2,(n-2)-i);
}
if(r==0) printf("The message is correct\n");
else printf("The message is wrong\n");
}
void main()
{
int m,n,k;
char ch;
for(;;)
{
/* clrscr();*/
printf("\n***1,Build a CRC message.");
printf("\n***2,Check a CRC message.");
printf("\n***0,End!\n");
fflush(stdin);
scanf("%c",&ch);
switch(ch)
{
case '1':{
printf("\nPlease input the message's long:");/*信息的长度m位 */
scanf("%d",&m);
printf("Please input the G(x)'s long:");/*生成多项式的长度n位(即阶为n-1)*/
scanf("%d",&n);
CRC(m,n);
} break;
case '2':{
printf("\nPlease input the CRC message's long:");
scanf("%d",&k);
printf("Please input the G(x)'s long:");
scanf("%d",&n);
CHECK(k,n);
} break;
case '0':{
printf("********** The End **********\n");
getch();
/* exit(0);*/
} break;
default:printf("There is something wrong.\n");
}
getch();
}
}