题目如下 编写一个函数 void transpose(int (*matrix)[10], int n),实现对一个矩阵的前n行和前n列转置。先在主函数中初始化如下矩阵,然后输入n(n
temp=*(*(p+i)+j); //二维数组中元素的指针写法
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=temp;
}
}
int main()
{
//如何为二维数组赋初值
int a[10][10] ={
{1 ,3, 5, 7, 9, 6, 5, 4, 3, 2},
{2, 4, 6, 8, 0, 7, 6, 5, 4, 3},
{3, 5, 7, 9, 1, 8, 7, 6, 5, 4},
{4, 6, 8, 0, 2, 9, 8, 7, 6, 5},
{5, 7, 9, 1, 3, 0, 9, 8, 7, 6},
{6, 8, 0, 2, 4, 1, 0, 9, 8, 7},
{7, 9, 1, 3, 5, 2, 1, 0, 9, 8},
{8, 0, 2, 4, 6, 3, 2, 1, 0, 9},
{9, 1, 3, 5, 7, 4, 3, 2 ,1, 0},
{0, 2, 4, 6 ,8, 5, 4, 3, 2, 1}
};
int (*p)[10]; //定义数组p指向a
p = a;
int n;
scanf("%d", &n);
transpose(p, n);
for(int i=0; i
printf("%d ", *(*(p+i)+j));
}
printf("\n"); //达到输出矩阵的目的
}
return 0;
}
哎,之前一直出错, 一直达到不了转置的效果, 结果后来发现是引用函数时前面多加了void, 难呀
|