|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
今天算是裂开了 球大大看看两处注释处错在哪
- #include<stdio.h>
- int main(){
- int M=2,P=3,N=2,i,j,k;
- printf("请输入第一个矩阵的尺寸M*P=");
- scanf("%d*%d",&M,&P);
-
- printf("请输入第二个矩阵的尺寸M*P=");
- scanf("%d*%d",&P,&N);
-
- int a[M][P],b[P][N];
- int c[M][N];
- for(i=0;i<M;i++)
- {
- for(j=0;j<N;j++)
- {
- c[i][j]=0;
- }
-
- }//为什么用c[M][N]={0};会报错。。。
-
- printf("请输入第一个矩阵:\n");
- for(i=0;i<P;i++)
- {
- for(j=0;j<M;j++)
- {
- scanf("%d",&a[i][j]);
- }
-
- }
-
- printf("请输入第二个矩阵:\n");
- for(i=0;i<N;i++)
- {
- for(j=0;j<P;j++)
- {
- scanf("%d",&b[i][j]);
- }
-
- }
-
-
- for(i=0;i<M;i++)
- {
- for(j=0;j<N;j++)
- {
- for(k=0;k<P;k++)
- {
- c[i][j]+=a[i][k]*b[k][j];
- }
- }
- }//结果不对
-
-
- printf("结果是:\n");
- for(i=0;i<M;i++)
- {
- for(j=0;j<N;j++)
- {
- printf("%8d ",c[i][j]);
- }
- putchar('\n');
- }
-
-
-
-
-
- return 0;
- }
复制代码
你的程序错误好多哟!
两个矩阵输入的时候,行列都搞反了。。。
因为你的数组c是可边长数组,不能在预编译的时候分配空间,所以不能这样初始化。
数组c的结果不对,是因为你在输入数组a和b的时候,行列都搞反了。
另外数组c初始化为0.不必在前面单独写一个for循环,直接在后面计算的时候写就可以了
你的程序结构好乱啊,以后写程序还是要注意一下美观,相同层次的代码,缩进最好是一样的,更易阅读
- #include<stdio.h>
- int main(){
- int M=2,P=3,N=2,i,j,k;
- printf("请输入第一个矩阵的尺寸M*P=");
- scanf("%d*%d",&M,&P);
-
- printf("请输入第二个矩阵的尺寸M*P=");
- scanf("%d*%d",&P,&N);
-
- int a[M][P],b[P][N];
- int c[M][N];
-
- printf("请输入第一个矩阵:\n");
- for(i=0;i<M;i++)//你的程序,这里行列写反了
- {
- for(j=0;j<P;j++)
- {
- scanf("%d",&a[i][j]);
- }
- }
-
- printf("请输入第二个矩阵:\n");
- for(i=0;i<P;i++)//你的程序,这里行列写反了
- {
- for(j=0;j<N;j++)
- {
- scanf("%d",&b[i][j]);
- }
- }
-
-
- for(i=0;i<M;i++)
- {
- for(j=0;j<N;j++)
- {
- c[i][j]=0; //数组c在这里初始化即可
- for(k=0;k<P;k++)
- {
- c[i][j]+=a[i][k]*b[k][j];
- }
- }
- }
-
-
- printf("结果是:\n");
- for(i=0;i<M;i++)
- {
- for(j=0;j<N;j++)
- {
- printf("%8d ",c[i][j]);
- }
- putchar('\n');
- }
- return 0;
- }
复制代码
|
-
第一处的error
|