注册 登录
编程论坛 VC++/MFC

二位数组,为什么得不到想要的结果

wl1259472421 发布于 2013-04-02 22:31, 574 次点击
#include<iostream>
using namespace std;
const int M=4;
const int N=3;
const int P=2;
int printa(int [][],int,int);
int printb(int [][],int,int);
void calculate(int[][],int[][],int[][],int,int,int);
int main(){
    int c[M][P];
    int a[M][N]={{1,2,3},{4,5,6},{7,8,9},{1,1,1}};
    printa(a[][],M,N);
    int b[N][P]={{1,2},{4,5},{7,8}};
    printb(b[][],N,P);
    calculate(a[][],b[][],c[][],m,n,p);
    for(i=0;i<M;i++){
        for(j=0;j<P;j++)
            cout<<c[i][j];
        cout<<endl;
    }
return 0;
}
void printa(int a[][],int m,int n){
for(int i=0;i<m;i++){
        for(int j=0;j<n;j++)
            cout<<c[i][j];
        cout<<endl;
    }
}
void printb(int b[][],int n,int p){
for(int i=0;i<n;i++){
        for(int j=0;j<p;j++)
            cout<<c[i][j];
        cout<<endl;
    }
}
void calculate(int a[][],int b[][],int c[][],int m,int n,int p){
for(int i=0;i<m;i++){
        for(int j=0;j<p;j++)
            for(int k=0;k<n;k++)
            int c[i][j]=0;
            c[i][j]+=a[i][k]+b[k][n];
    }
}
3 回复
#2
shmilyflf2013-04-02 22:55
第一:函数声明时的返回值和定义时的返回值不同;
第二:作为形参的数组要指定大小;
第三:数组做实参时传递地址就可以了;
第四:你的形参是数组名是a或b你却要输出c,这个肯定是未定义的;
第五:你最后的那个函数没看懂,一个四行三列的矩阵和一个三行两列的矩阵加,不知道你怎么加的。

#3
qunxingw2013-04-03 09:24
函数的学习,开始时最好只用一个,以利调试,勿多!最好先把循环,条件语法理解后再用。
#4
lileimt2013-04-03 09:39
for循环内的语句加上{},在调用void printa(int a[][],int m,int n)时,printa(a,M,N);就可以了
1