哪位大侠帮忙改一下我的错误“C语言矩阵运算系统”

2025-03-04 22:28:49
推荐回答(2个)
回答1:

格式有点问题,没有注识,不方便看,可以看看别人的格式,以下已经修改过的,上面有些住明,是自己写的,无用的可以删,已经运行过,不过没有放入具体的数值,看看吧!

// 2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "stdio.h"

//C语言矩阵运算系统

//函数说明吧?
void pluse (int a[3][3],int b[3][3]);

void minus (int a[3][3],int b[3][3]);

void time (int a[3][3],int b[3][3]);

void fact (int a[3][3]);

void sym (int a[3][3]);

void main(void)
{
int i,j,n;
int choice;
int a[3][3],b[3][3];

//读取矩阵消息,两个矩阵大小3*3
printf("Enter A 矩阵:");

for(i=0;i<3;i++);
for(j=0;j<3;j++);
scanf("%d",&a[i][j]);

printf("Enter B 矩阵:");

for(i=0;i<3;i++);
for(j=0;j<3;j++);
scanf("%d",&b[i][j]);

/*通过choice对矩阵运算*/
for (n=1;n<=6;n++)
{
//以下是运算的对应代码
printf("[1]矩阵加法:\n");
printf("[2]矩阵减法:\n");
printf("[3]矩阵乘法:\n");
printf("[4]判断矩阵是否为对角阵:\n");
printf("[5]判断矩阵是否为对称阵:\n");
printf("[0]退出运算:\n");

printf("Enter choice");
scanf("%cd",&choice);

/*选择运算*/
switch(choice)
{
case 1:
pluse(a,b); //这里写,有点问题吧?与下面都不对应
break;
case 2:
minus(a,b);
break;
case 3:
time(a,b);
break;
case 4:
fact(a);
break;
case 5:
sym(a);
break;
default:
break;
}

}
}

/*加法*/
void pluse (int a[3][3],int b[3][3])
{
int i,j;
int c[3][3];
printf("c=A+B=");

for(i=0;i<3;i++);
{
for(j=0;j<3;j++)
{
c[i][j]=a[i][j]+b[i][j];
printf(" %d",c[i][j]);
}
printf("\n");
}
}

/*减法*/
void minus(int a[3][3],int b[3][3])
{
int i,j;
int c[3][3];
printf("C=A-B=");
for(i=0;i<3;i++);
{
for(j=0;j<3;j++)
{
c[i][j]=a[i][j]-b[i][j];
printf(" %d",c[i][j]);
}
printf("\n");
}

}

/*乘法*/
void time(int a[3][3],int b[3][3])
{
int i,j;
int c[3][3];
printf("c=A*B=");
for(i=0;i<3;i++);
{
for(j=0;j<3;j++);
{
for(int k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
printf(" %d",c[i][j]);
}
}
printf("\n");
}

}

/*判断对角阵*/
void fact(int a[3][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i!=j&&a[i][j]==0)
printf("该矩阵是对角阵\n");
else
printf("该矩阵不是对角阵\n");
}
printf("\n");
}

/*判断对称阵*/
void sym(int a[3][3])
{
int i,j;
int q=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i {
if(a[i][j]==a[j][i])
q=1;
else
{
q=0;
break; //如果发现矩阵里面对称位置不相同,就应该马上跳出来了
//不需要继续下去判断了
}

}
}

//最后通过P的值来判断是否为对称阵
if(q==1)
printf("该矩阵为对称阵\n");
else
printf("该矩阵不为对称阵\n");

}

回答2:

没仔细看,暂时先发现一个错误,main里面scanf("%d");改成scanf("%d,&choice");