为什么输出是空白的?
why the output is blank?
我必须为矩阵编写一个程序 multiplication.there 可能是一个更简单的算法,但我想知道这里的问题是什么以及我的算法是否有任何问题或......
如果需要任何其他信息,请告诉 me.the 程序应该将两个矩阵与可变大小的列相乘,rows.I`我是初学者,所以我的错误可能非常明显。
#include <stdio.h>
int main()
{
int m,n,l,a,b;
scanf("%d %d %d",&m,&n,&l);
int A[m][n],B[n][l],AB[m][l];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++) scanf("%d",&A[i][j]);
}
for(int i=0;i<n;i++){
for(int j=0;j<l;j++) scanf("%d",&B[i][j]);
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++) AB[i][j]=0;
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
a=n;
b=0;
while(a!=0){
AB[i][j]=AB[i][j]+A[i][b]*B[b][j];
a=a--;
b=b++;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
printf("%d ",AB[i][j]);
}
printf("\n");
}
}
所以我根据评论修改了它,我做对了吗?因为新问题是它不是running.I点击回车而是直接转到下一行而不是显示输出。
更改了 increment/decrement 指令并添加了输出语句:
#include <stdio.h>
int main()
{
int m,n,l,a,b;
printf("Enter m, n, l: ");
scanf("%d %d %d",&m,&n,&l);
int A[m][n],B[n][l],AB[m][l];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++) {
printf("Enter A[%d][%d]: ", i, j);
scanf("%d",&A[i][j]);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<l;j++) {
printf("Enter B[%d][%d]: ", i, j);
scanf("%d",&B[i][j]);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++) AB[i][j]=0;
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
a=n;
b=0;
while(a!=0){
AB[i][j]=AB[i][j]+A[i][b]*B[b][j];
a=a-1;
b=b+1;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
printf("%d ",AB[i][j]);
}
printf("\n");
}
}
$ gcc -Wall matrix.c
$ ./a.out
Enter m, n, l: 2 2 2
Enter A[0][0]: 1
Enter A[0][1]: 1
Enter A[1][0]: 1
Enter A[1][1]: 1
Enter B[0][0]: 2
Enter B[0][1]: 2
Enter B[1][0]: 2
Enter B[1][1]: 2
4 4
4 4
$
输出对我来说并不空白。 :-)
我必须为矩阵编写一个程序 multiplication.there 可能是一个更简单的算法,但我想知道这里的问题是什么以及我的算法是否有任何问题或...... 如果需要任何其他信息,请告诉 me.the 程序应该将两个矩阵与可变大小的列相乘,rows.I`我是初学者,所以我的错误可能非常明显。
#include <stdio.h>
int main()
{
int m,n,l,a,b;
scanf("%d %d %d",&m,&n,&l);
int A[m][n],B[n][l],AB[m][l];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++) scanf("%d",&A[i][j]);
}
for(int i=0;i<n;i++){
for(int j=0;j<l;j++) scanf("%d",&B[i][j]);
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++) AB[i][j]=0;
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
a=n;
b=0;
while(a!=0){
AB[i][j]=AB[i][j]+A[i][b]*B[b][j];
a=a--;
b=b++;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
printf("%d ",AB[i][j]);
}
printf("\n");
}
}
所以我根据评论修改了它,我做对了吗?因为新问题是它不是running.I点击回车而是直接转到下一行而不是显示输出。
更改了 increment/decrement 指令并添加了输出语句:
#include <stdio.h>
int main()
{
int m,n,l,a,b;
printf("Enter m, n, l: ");
scanf("%d %d %d",&m,&n,&l);
int A[m][n],B[n][l],AB[m][l];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++) {
printf("Enter A[%d][%d]: ", i, j);
scanf("%d",&A[i][j]);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<l;j++) {
printf("Enter B[%d][%d]: ", i, j);
scanf("%d",&B[i][j]);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++) AB[i][j]=0;
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
a=n;
b=0;
while(a!=0){
AB[i][j]=AB[i][j]+A[i][b]*B[b][j];
a=a-1;
b=b+1;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<l;j++){
printf("%d ",AB[i][j]);
}
printf("\n");
}
}
$ gcc -Wall matrix.c
$ ./a.out
Enter m, n, l: 2 2 2
Enter A[0][0]: 1
Enter A[0][1]: 1
Enter A[1][0]: 1
Enter A[1][1]: 1
Enter B[0][0]: 2
Enter B[0][1]: 2
Enter B[1][0]: 2
Enter B[1][1]: 2
4 4
4 4
$
输出对我来说并不空白。 :-)