| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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 
 
 
 
 
 
 
 
 |