initc函数返回为void,你这么写成 cz = initc(cz,r,N);呢?
r和c是指针的指针,指针只是一个地址存储,你得给它们分配空间才行。而且你明明上面已经定义了四个全局变量数组,完全够用了,不需要再定义这两个指针的,直接用全局变量cc和r。同样45行的三个临时变量删除掉,全局都已经定义了,怎么又定义一堆临时变量呢
修改一下:
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
static int cz[MAX][MAX];
static int cc[MAX][MAX];
static int cd[MAX][MAX];
static int r[MAX][MAX];
void initc(int x[][MAX],int y[][MAX],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
x[i][j]=y[i][j];
}
}
}
int main()
{
int i,j,N;
printf("选择要输入几阶矩阵\n");
scanf("%d",&N);
printf("请输入关系矩阵真值(0或1):\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&r[i][j]);
}
} //输出矩阵;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(r[i][j]!=0&&r[i][j]!=1)
{
printf("输错了");
return 0;
}
}
}
initc (cz,r,N);
//求自反闭包
for(i=0;i<N;i++)
{
cz[i][i]=1;//将主对角线全部改为1
}
printf("自反闭包的矩阵");
return 0;
}