C++动态创建一维数组,实现n*n矩阵转置

我是这样做的,输出的是对的,DevC++编译器过了,VSC++不能通过。老师说我的不对。#include<iostream>usingnamespacestd;intma... 我是这样做的,输出的是对的,Dev C++编译器过了 ,VS C++不能通过。
老师说我的不对。

#include<iostream>
using namespace std;
int main()
{
int *p,N;
p=new int[N];
cin>>N;
int i,j,a[N][N],temp;

for(i=0;i<N;i++)
for(j=0;j<N;j++)
cin>>a[i][j];

for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i>j)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
cout<<a[i][j]<<"";
cout<<endl;

}
delete p;
}
请问该怎么改,或者怎么做,有具体代码最好了。
展开
 我来答
淡若亲风
2015-09-23 · TA获得超过409个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:150万
展开全部
有个问题,最后删除动态数组应该是delete[] p;
然后VC++编译器规定二维数组的维数必须是常量,你那个N是变量,GCC可以
更多追问追答
追问
那怎样实现可以自己输入一个N,然后用N动态分配数组,从而实现矩阵转置?用C++的
追答
//一维数组实现n阶矩阵转置
#include<cstdio>
int main()
{
    int *a,n;
    while(scanf("%d",&n)&&n)
    {
        a=new int[n*n+1];
        for(int i=1;i<=n*n;i++)
            scanf("%d",&a[i]);
        for(int i=1;i<=n;i++)
        {
            for(int j=i;j<=n;j++)
            {
                int t=a[(j-1)*n+i];
                a[(j-1)*n+i]=a[(i-1)*n+j];
                a[(i-1)*n+j]=t;
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                printf("%d ",a[(i-1)*n+j]);
            printf("\n");
        }
        delete[] a;
    }
    return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友af3af09
2015-09-23 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:63.2万
展开全部
    1. #include<iostream>  
    2. using namespace std;  
    3. #define size 2  
    4.   
    5. int multi(int *a , int *b , int N)  
    6. {  
    7.     int i , j , k , temp;  
    8.     int *c = (int*)malloc(N * N);  
    9.     for(i = 0 ; i < N ; i++)  
    10.     {  
    11.         for(j = 0 ; j < N ; j++)  
    12.         {  
    13.             temp = i * N + j;  
    14.             *(c + temp) = 0;  
    15.             for(k = 0 ; k < N ; k++)  
    16.             {  
    17.                 *(c + temp) += a[i * N + k] * b[k * N + j];  
    18.             }  
    19.             cout<<*(c + temp)<<" ";  
    20.         }  
    21.     }  
    22.     return *c;  
    23. }  
    24.   
    25. int main()  
    26. {  
    27.     int a[size * size] = {2 , 1 , 4 , 3};  
    28.     int b[size * size] = {1 , -1 , 3 , 2};  
    29.     multi(a , b , size);  
    30.   
    31.     return 0;  
    32. }
追问
可以稍微解释下吗,那个size不是自己要输入的吗?老师说要用new
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式