回 帖 发 新 帖 刷新版面

主题:求助解答

我遇到的问题是转置一个矩阵,它不是方阵,我们老师要求我们用动态数组解,行列数自行输入,可我编的程序无法运行,请大家帮忙看一看!谢谢了!!
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int m=0;
    int n=0;
    int i=0;
    int j=0;
    int term=0;
    int *p=NULL;
    int *q=NULL;

    scanf("%d %d",&m,&n);

    p=(int *)calloc(m*n,sizeof(int));
    q=(int *)calloc(n*m,sizeof(int));
    if((p==NULL)||(q==NULL))
    {
        exit(0);
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&p[i*n+j]);
        }
    }

    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            q[j*n+i]=p[i*m+j];    /*这一句系统说——该内存不能为written,这是什么意思啊?*/
        }
    }

    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d ",q[i*m+j]);
        }
        printf("\n");
    }
    free(p);
    free(q);

    return 0;


}

回复列表 (共2个回复)

沙发

应该是q[j*m+i]=p[i*n+j]; 细心点啊lz。。

板凳


是我粗心了,谢谢啦!!!![em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册