作业帮 > 综合 > 作业

C++问题矩阵转置 为什么没法转置

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/28 14:35:53
C++问题矩阵转置 为什么没法转置
#include
using namespace std;
void zz(int *p)
{
int i,j,k;
for(i=0;i
C++问题矩阵转置 为什么没法转置
/*
请输入矩阵的值
1 2 3 4 5 6 7 8 9
原始矩阵为
1 2 3
4 5 6
7 8 9
原始矩阵为
1 4 7
2 5 8
3 6 9
Press any key to continue
*/
#include <iostream>
using namespace std;

void zz(int *p) {
\x05int i,j,k;
\x05for(i = 0;i < 3;i++) {
\x05\x05for(j = i + 1;j < 3;j++) {
\x05\x05\x05k = *(p + 3 * i + j);
\x05\x05\x05*(p + 3 * i + j) = *(p + 3 * j + i);
\x05\x05\x05*(p + 3 * j + i) = k;
\x05\x05}
\x05}
}

int main() {
\x05int i,j;
\x05int a[3][3];
\x05int *p1;
\x05cout << "请输入矩阵的值"<<endl;
\x05for(i = 0;i < 3;i++) {
\x05\x05for(j = 0;j < 3;j++) {
\x05\x05\x05cin >> a[i][j];
\x05\x05}
\x05}
\x05cout<<"原始矩阵为"<<endl;
\x05for(i = 0;i < 3;i++) {
\x05\x05for(j = 0;j < 3;j++) {
\x05\x05\x05cout << *(*(a + i) + j) << " ";
\x05\x05}
\x05\x05cout << endl;
\x05}
\x05p1=&a[0][0];
\x05zz(p1);
\x05cout << "原始矩阵为" << endl;
\x05for(i = 0;i < 3;i++) {
\x05\x05for(j = 0;j < 3;j++) {
\x05\x05\x05cout << *(*(a + i) + j) << " ";
\x05\x05}
\x05\x05cout << endl;
\x05}
\x05return 0;
}
再问: 请问一下!我的和你的区别在哪里!
再答: zz()的for(j)循环初始值不同。
再问: 偶偶!
再问: 等着我试试
再问: 为什么初始值是你写的那个!能解释一下吗!