我的目标是编写一个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矩阵的平方。也许我以不好的方式使用变量,我不知道。
我是初学者,这是一个家庭作业。
谢谢你的帮助!抱歉英文不好!
答案 0 :(得分:2)
%d
格式用于扫描&amp;打印int
,而不是double
,并尝试使用它来读取double
s将导致垃圾存储在矩阵中。请改用%f
。
编辑:将%lf
用于扫描,并%f
或%lf
进行打印(格式不对称)。