You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++实现矩阵向左旋转90度代码运行结果与预期不符问题求助

问题分析
  • 核心逻辑错误:当前代码仅实现了矩阵转置操作,没有完成逆时针(向左)旋转90度的坐标映射逻辑
  • 预期结果笔误:你给出的预期结果第二行最后一个值6是笔误,3*3矩阵[[1,2,3],[4,5,6],[7,8,9]]向左旋转90度的正确结果为[[7,4,1],[8,5,2],[9,6,3]]
  • 语法兼容性问题:代码中使用的变长数组int matrix[size][size]不属于C++标准语法,仅部分编译器提供扩展支持,生产环境建议替换为vector等标准容器
修复方案

左旋转90度的坐标映射规则为:对于n阶矩阵,新矩阵第i行第j列的元素,等于原矩阵第n-1-j行第i列的元素,对应赋值语句为tempMatrix[i][j] = matrix[size - 1 - j][i];,直接替换原有转置逻辑的赋值语句即可得到正确结果。

修改后完整代码
#include <iostream>
#include <vector>
using namespace std;

int main(){
    int size;
    cin>>size;
    // 替换变长数组为标准vector,兼容性更好
    vector<vector<int>> matrix(size, vector<int>(size));
    for(int i=0;i<size;i++){
        for(int j=0;j<size;j++){
            cin>>matrix[i][j];
        }
    }
    cout<<"Original Matrix"<<endl;
    for(int i=0;i<size;i++){
        for(int j=0;j<size;j++){
            cout<<matrix[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<"After left rotating"<<endl;
    vector<vector<int>> tempMatrix(size, vector<int>(size));
    // 替换为左旋转90度的坐标映射逻辑
    for(int i=0;i<size;i++){
        for(int j=0;j<size;j++){
            tempMatrix[i][j] = matrix[size - 1 - j][i];
        }
    }
    for(int i=0;i<size;i++){
        for(int j=0;j<size;j++){
            cout<<tempMatrix[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
输入输出示例

输入:

3
1 2 3
4 5 6
7 8 9

输出:

Original Matrix
1 2 3 
4 5 6 
7 8 9 
After left rotating
7 4 1 
8 5 2 
9 6 3 

内容的提问来源于stack exchange,提问作者CR28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:15:03