编写程序,实现矩阵(3行3列)的转置(即行列互换)例如,输入下面的矩阵: 程序输出: 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若

admin2013-03-29  60

问题 编写程序,实现矩阵(3行3列)的转置(即行列互换)例如,输入下面的矩阵:
   
    程序输出:
   
    注意:部分源程序在文件PROGl.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
void fun(int array[3][3])
{
}
main()
{
  int i,3;void NONO();
  int array[3][3]={{100,200,300},
{ 400,500,600},{700,800,900}};
  for(i=0; i<3;i++)
  {  for  (j=0;j<3;j++)
    printf(”%7d”,array[j]);
    printf(”in”);
    }
    fun(array);
    printf(”Converted array:in”);
    for(i=0;i<3;i++)
    (  for(j=0;j<3;j++)
    printf(”%7d”,array[j]);
    printf(”\n”);
  }
  NONO();
}
void NONO()
{
/*请在此函数内打开文件,输入测试数据,
调用fun函数,输出数据,关闭文件。 */
  int i,j,array[3][3];
  FILE*rf,*wf;
  rf=fopen(”in.dat”,”r”);
  wf=fopen(”out.dat”,”w”);
  for(i=0;i<3;i++)
  for(j=0;j<3;j++)
    fscanf(rf,”%d”,&array[j]);
  fun(array);
  for(i=0;i<3;i++)
  (for(j=0;j<3;j++)
    fprintf(wf,”%7d”,array[j]);
    fprintf(wf,”\n”);
    }
    fclose(rf);
    fclose(wf);
}

选项

答案int i,j,arr[3][3]; memcpy(arr,array,9*sizeof(int)); for(i=0; i<3; i++) for(j=0; j<3;j++) array[i][j]=arr[j][i];

解析 进入:fun函数,根据前面的分析:
    通过两层循环对矩阵中的元素进行交换。其中,外重循环以行为控制条件,对矩阵的行进行循环。内重循环在列循环中对元素进行交换。
转载请注明原文地址:https://kaotiyun.com/show/nPJp777K
0

最新回复(0)