这是我写的长除法子函数,在返回数组到主函数时,打印返回的数组出了问题,
本应该打印63个数的,可是打印停不下来,检查好几次后,发现ikk取值范围有问题,
--在ikk<8时,ikk最多到7,正常出8个数,但ikk<9时,便会无限循环那8个数
#include<stdio.h>
#include<stdlib.h>
#define N 8
#define M 63
int *CC(int j[],int f[]){
int n=0,i=0;
int s[N]={0},m[M]={0};
for(i=0;i<N;i++)
s[i]=j[i];
for(i=0;i<M;i++)
{
if(s[0]==1)
{
m[i]=1;
for(int n=0;n<N;n++)
s[n]=s[n]^f[n];
}
else
m[i]=0;
for(n=0;n<N;n++)
s[n]=s[n+1];
s[N-1]=0;
}
return m;
}
void main(){
int ikk;
int a[N],m1[M];
int f1[8]={1,0,0,0,1,0,0,1};
int g1[8]={1,0,0,0,1,0,0,0};
CC(g1,f1);
for(ikk=0;ikk<8;ikk++)////////在这里,在ikk<8时,ikk最多到7,正常出8个数,但ikk<9时,便会无限循环那8个数
{
a[ikk]=*(CC(g1,f1)+ikk);
printf("%d",a[ikk]);
}
printf("\n");
system("pause");
}
输出结果:
ikk<8时
ikk<9时