c函数,得到一个矩阵,然后平方

时间:2014-05-18 20:38:23

标签: c for-loop matrix scanf perfect-square

我的目标是编写一个c函数,它读取数字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矩阵的平方。也许我以不好的方式使用变量,我不知道。

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

谢谢你的帮助!抱歉英文不好!

1 个答案:

答案 0 :(得分:2)

%d格式用于扫描&amp;打印int,而不是double,并尝试使用它来读取double s将导致垃圾存储在矩阵中。请改用%f

编辑:将%lf用于扫描,并%f%lf进行打印(格式不对称)。