我C语言两个3*3的矩阵相乘为什么“乘丢了”一行,变成3*2的了?求支援!

程序目的:将二维数组中的字母转化为相应数字再和另一个3*3的矩阵相乘(这里以单位矩阵为例)得到一个新的矩阵。源程序:#include<stdio.h>voidmain()... 程序目的:将二维数组中的字母转化为相应数字再和另一个3*3的矩阵相乘(这里以单位矩阵为例)得到一个新的矩阵。
源程序:#include<stdio.h>
void main()
{
char source[3][3];
int i;
int j;
printf("Please input words.\n");
for(i=0;i<3;i=i+1)
scanf("%s",source[i]);
for(i=0;i<3;i=i+1)
{
for(j=0;j<3;j=j+1)
{
if(source[i][j]=='A'||source[i][j]=='a')
{
(int)source[i][j];
source[i][j]=1;
}
else if(source[i][j]=='B'||source[i][j]=='b')
{
(int)source[i][j];
source[i][j]=2;
(此处以下省略将C(c)~Y(y)转化为3~25的代码)
else if(source[i][j]=='Z'||source[i][j]=='z')
{
(int)source[i][j];
source[i][j]=26;
}
else
{
printf("Error!\n");
getchar();
}
}
}
int code[3][3]={{1,0,0},{0,1,0},{0,0,1}};
int m,n,final[3][3];
for(m=0;m<3;m=m+1)
{
for(n=0;n<3;n=n+1)
{
final[m][n]=source[m][0]*code[0][n]+source[m][1]*code[1][n]+source[m][2]*code[2][n];
printf("%d",final[m][n]);
}
printf("\n");
getchar();
}
}

运行时输入:
abc
def
ghi
预期结果为:
123
456
789
但实际运行结果为:
123
456

请问矩阵第三行哪去了啊!!!求解!!!
展开
 我来答
匿名用户
2015-12-05
展开全部
for(i=0;i<3;i=i+1)
{
    for(j=0;j<3;j=j+1)
    {
        if(source[i][j]=='A'||source[i][j]=='a')
        {
            (int)source[i][j];//这并没有什么卵用,(int)根本转不了它实际的类型
            source[i][j]=1;
        }
        //...写26个这太坑爹了吧...用ASCII减去就行了吧
        /*
        if(source[i][j]<='Z'&&source[i][j]>='A')
            source[i][j]-=64;
        else if(source[i][j]<='z'&&source[i][j]>='a')
            source[i][j]-=96;
        */
    }
}
///////////////////////////////////////////////////////////////////////
//你这样写,不可能会少了一行,因为你算的就是3*3=9个数字。
int code[3][3]={{1,0,0},{0,1,0},{0,0,1}};
int m,n,i,final[3][3]={0};
for(m=0;m<3;m++)
{
    for(n=0;n<3;n++)
    {
        for(i=0;i<3;i++)
        {
            final[m][n]+=source[m][i]*code[i][n];
            printf("%d",final[m][n]);
        }
    }
    printf("\n");
}
追问
何止坑爹。。。
不过强制类型转换还是有那么一点点卵用地,没加这句前输出的是
979899
101102103
(不错。。。还是ASCII)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-12-05
展开全部
被倒数第三行的getchar();给吃掉了,把它删除了就能打出三行来。
更多追问追答
追问
按你说的圆满解决,漂亮!
但为什么getchar()能把矩阵第三行吃了???
追答
不清楚,我这里只能显示一行,但是回车后会显示第二行,再回车会显示第三行。把getchar()删除掉就全能显示出来了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式