为什么前面的一些输出不见了?
# include "stdio.h"
# include "time.h"
# include "stdlib.h"
# define A 4000
# define M 4
# define N 7
/*****************************************************************************************************************/
// 该函数是初始化函数
// 作用:随机产生信源,并将信源存放到数组b中,初始化数组e,使它的初值是0
// 入口参数:bb(信源)
// 出口参数:k1(代表信源个数)
/*****************************************************************************************************************/
int init(int bb[A/M][M])
{
int i=0,j,k1;
printf("\n 随机产生%d个二元(%d,%d)汉明码的信源:",A/4,N,M);
srand( (unsigned)time( NULL ) );
for( i = 0; i < A/4; i++ )
for( j = 0; j < M; j++ )
{
bb[i][j]=rand()%2;
}
k1=A/4;
return k1;
}
/*****************************************************************************************************************/
// 该函数是输出函数
// 作用:输出生成矩阵
// 入口参数:g(生成矩阵)
// 出口参数:没有
/*****************************************************************************************************************/
void print1(int g[M][N])
{
int i,j;
printf("\n 生成矩阵是:\n ");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%d ",g[i][j]);
printf("\n ");
}
}
/*****************************************************************************************************************/
// 该函数是输出函数
// 输出校验矩阵
// 入口参数:h(校验矩阵)
// 出口参数:没有
/*****************************************************************************************************************/
void print2(int h[N-M][N])
{
int i,j;
printf("\n 校验矩阵是:\n ");
for(i=0;i<N-M;i++)
{
for(j=0;j<N;j++)
printf("%d ",h[i][j]);
printf("\n ");
}
}
/*****************************************************************************************************************/
// 该函数是求码字函数
// 作用:求出要传输的的码字
// 入口参数:n(信源个数),gg(生成矩阵),cc(信源生成的码字),bb(信源)
// 出口参数:没有
/*****************************************************************************************************************/
void SYard(int n,int gg[M][N],int cc[M][N],int bb[A/M][M])
{
int i,j,k,t;
for(i=0;i<n;i++)
{
for(j=0;j<N;j++) // 码字cc[][]=信源bb[][]*生成矩阵gg[][],用for循环实现
{
t=0;
for(k=0;k<M;k++)
t+=bb[i][k]*gg[k][j];
cc[i][j]=t%2; // %2是为了让它们之和小于2
}
}
}
/*****************************************************************************************************************/
// 该函数是输出函数
// 作用:输出要传输的码字
// 入口参数:n(信源个数),cc(发送的码字)
// 出口参数:没有
/*****************************************************************************************************************/
void output(int n,int cc[A/M][N])
{
int i,j;
for(i=0;i<n;i++)
{printf("\n 要传输的码字 \n");
printf(" ");
for(j=0;j<N;j++)
printf("%d",cc[i][j]);printf(" ");
printf("\n");
}
}
/*****************************************************************************************************************/
// 该函数是主函数
// 作用:调用其他函数,实现其功能,并固定屏幕
/*****************************************************************************************************************/
void main()
{
int k,
G[M][N]={{1,0,0,0,1,0,1},{0,1,0,0,1,1,1},{0,0,1,0,1,1,0},{0,0,0,1,0,1,1}}, // 生成矩阵
H[N-M][N]={{1,1,1,0,1,0,0},{0,1,1,1,0,1,0},{1,1,0,1,0,0,1}}, // 校验矩阵
// 数组b存放信源,数组c存放要发送的码字,
b[A/M][M],c[A/M][N];
k=init(b) ; // 初始化函数
print1(G) ; // 输出生成矩阵
print2(H) ; // 输出校验矩阵
SYard(k,G,c,b); // 求出要传输的的码字
output(k,c);
getchar() ; // 固定屏幕
}