C++菜鸟的问题,请高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/02 12:34:38
#include<stdio.h>
#define HANGA 3
#define COLA 4
#define COLB 3

void matrixMultipy(int a[][],int b[][],int c[][]);
void printfJuzhen(int c[][],int HANG,int COL);

int a[HANGA][COLA],b[COLA][COLB],c[HANGA][COLB]={0};
main()
{
int COLC=COLB;

printf("请输入第一个矩阵(%d行%d列):\n",HANGA,COLA);
printf("请输入第二个矩阵(%d行%d列):\n",COLA,COLB);
matrixMultipy(a,b,c);
printfJuzhen(c,HANGA,COLC);

system("pause");
return 0;
}
void matrixMultipy(int a[][],int b[][],int c[][])
{
int i,j,k;
for(i=0;i<=HANGA-1;i++)
for(j=0;j<=COLB-1;j++)
for(k=0;k<=COLA-1;k++)
c[i][j]=a[i][k]*b[k][j]+c[i][j];
}
void printfJuzhen(int c[][],int HANG,int COL)
{
int i,j;
for(i=0;i<=HANG-1;i++){
for(j=0;

首先,这个看上去特别特别像C而不是C++

你在matrixMultipy和printfJuzhen两个函数里,输入的a,b,c,c四个array没有提供尺寸.

给我的感觉是,你把最开始定义的a,b,c三个array和这两个函数里的a,b,c搞混了

最简单的解决办法:

void matrixMultipy(int a[][],int b[][],int c[][])
void printfJuzhen(int c[][],int HANG,int COL)
两行替换为下面两行:
void matrixMultipy(int a[HANGA][COLA],int b[COLA][COLB],int c[HANGA][COLB])
void printfJuzhen(int c[HANGA][COLB],int HANG,int COL)
用你最开始定义的三个值定义一下就行了

用更系统的语言来解释,出现错误的原因是由于int a[][],int b[][],int c[][]没有定义长宽,系统无法分配内存上限,执行两个函数时就会提示上限没有定义,非法使用,这就是错误信息invalid use of array with unspecified bounds的意思.

希望有所帮助.我也是今天刚开始学C/C++,有遗漏/不足的地方请高手补充