1

我的目标是编写 ac 函数,它读取一个数字 n 和 n*n 矩阵的元素(类型:double),然后我得到矩阵自身相乘的结果。

例子:

输入:

3
1.0 0.0 0.0
1.0 1.0 1.0
0.0 0.0 1.0

输出:

1.0 0.0 0.0
2.0 1.0 2.0
0.0 0.0 1.0

我有这个:

#include <stdio.h>
#include <stdlib.h>

void square(){
    int n;
    scanf("%i", &n);
    double**matrix;
    matrix=(double**)malloc(n*sizeof(double*));
    int i;
    for(i=0; i<n; i++){
        matrix[i]=(double*)malloc(n*sizeof(double));
    }
    int j;
    for(i=0; i<n; i++){
        for(j=0; j<n; j++){
            scanf("%d", &matrix[i][j]);
        }
    }
    double**square;
    square=(double**)malloc(n*sizeof(double*));
    for(i=0; i<n; i++){
        square[i]=(double*)malloc(n*sizeof(double));
    }
    int k;
    for(i=0; i<n; i++){
        for(j=0; j<n; j++){
            square[i][j]=0;
            for(k=0; k<n; k++){
                square[i][j]+=matrix[i][k]*matrix[k][j];
            }
            printf("%d ", square[i][j]);
        }
        printf("\n");
    }
}

int main(){
    square();
    return 0;
}

我的问题是我只能读取矩阵的一行,然后我得到随机 n*n 矩阵的平方。也许我以不好的方式使用变量,我不知道。

我是初学者,这是一个家庭作业。

谢谢你的帮助!对不起英语不好!

4

1 回答 1

2

%d格式用于扫描和打印ints,而不是doubles,并且尝试使用它来读取doubles 将导致垃圾存储在您的矩阵中。改为使用%f

编辑:使其%lf用于扫描和%f打印%lf(格式不是对称的)。

于 2014-05-18T20:42:41.663 回答