【问题标题】:c function, that get a matrix, then squaring itc函数,得到一个矩阵,然后对其进行平方
【发布时间】:2014-07-06 18:09:25
【问题描述】:

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

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

感谢您的帮助!抱歉英语不好!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!现在我可以给它整个矩阵,但我得到一个错误的矩阵。
    • 我用 %f 得到了错误的答案,但我用 %lf 得到了正确的答案。
    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多