一道关于c语言 的 请指教

2025-03-23 19:28:31
推荐回答(1个)
回答(1):

写得很不错的代码,但是很让人吃惊的是,为什么会出不赋初值这样的小问题

已经发现的两处未赋初值的地方:

 1. 主函数main中的动态数组b的元素均未初始化,未赋初值

 2. 函数multiplication中的动态数组c的元素均未初始化,未赋初值

int main(void)
{
    int i,j,k,**a,**b,data;
 printf("\n 请输入 矩阵阶数:");
scanf("%d",&size);
 int n=5;//矩阵最高阶数 
a=malloc_A(size,size);
 b=malloc_A(size,size);
 printf("\n 请输入n阶矩阵:\n");
 for(i=0;i  for(j=0;j  {
   scanf("%d",&data);
   a[i][j]=data;
   b[i][j]=0;    // b元素赋初值0
  }
  for(k=0;k<=n;k++)
  {
   pow_A(a,k);
   add(b,a); 
  } 
  for(i=0;i  {
   for(j=0;j    printf("%d ",b[i][j]);
   printf("\n");
  } 
  free_A(a,size);
  free_A(b,size);
  return 0; 
}
void multiplication(int **a,int **b)
{
    //函数功能:令a=a*b
    int p,q,k;
    int **c;  
    //计算乘法
   c=malloc_A(size,size);
    for (p=0;p        for (q=0;q            c[p][q]=0;    // c元素赋初值0
            for (k=0;k                c[p][q]+=a[p][k]*b[k][q];
  }
    for (p=0;p        for (q=0;q            a[p][q]=c[p][q];
    free_A(c,size);
}

是否有其他问题,还不是特别明确