c语言编写函数判断3 3的阶矩阵是否对称,C语言,编辑一个程序,输入一个三阶矩阵,储存在数组中,并判断矩阵的行和,列和,对角线和是否相等...

该博客介绍了一个C语言程序,用于输入一个三阶矩阵并计算其行和、列和以及两条对角线的和。程序会检查这些和是否相等,如果相等则判断为魔法矩阵。程序包含输入矩阵、计算和、比较和的逻辑,并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言,编辑一个程序,输入一个三阶矩阵,储存在数组中,并判断矩阵的行和,列和,对角线和是否相等

答案:2  信息版本:手机版

解决时间 2019-10-05 13:33

已解决

2019-10-05 09:15

C语言,编辑一个程序,输入一个三阶矩阵,储存在数组中,并判断矩阵的行和,列和,对角线和是否相等

最佳答案

2019-10-05 10:41

#include

#define N 3

#define M 3

int abs(float x)

{

if(x<0.0f) return -x;

else return x;

}

int main()

{

float m[N][M];

float sumr[N]={0.0f}, sumc[M]={0.0f},diag[N]={0.0f},sumd=0.0f,sumd2=0.0f; //

int i,j;

printf("Input %d * %d matrix :\n", N,N);

//create and compute sums

for (i = 0; i 

{

for (j= 0; j 

{

scanf("%f", &m[i][j]);

sumr[i] += m[i][j];       //sum of rows

sumc[j] += m[i][j];       //sum of columns

if(i==j) diag[i] +=m[i][j];//diagonal elements

}

}

//print

int flag=1;    //

printf("sum of rows\n");

for (i = 0; i 

{

printf("%7.2f\n",sumr[i]);

if(flag && isum:");

printf("%7.2f\n",sumd);

//reverse diagonal

printf("\nreverse diagonals:\n");

for (i = K-1; i >=0; --i)

{

printf("%7.2f",m[K-i-1][i]);

sumd2 +=m[K-i-1][i];

}

printf("\t->sum:");

printf("%7.2f\n",sumd2);

if (flag && abs(sumc[M-1]-sumd)<1e-10 && abs(sumc[M-1]-sumd2)<1e-10)

flag  = 1;

else flag  = 0;

if(flag)

printf("\nIS a magic matrix! \n");

else

printf("\nNOT a magic matrix! \n");

return 0;

}

全部回答

1楼

2019-10-05 11:35

#include

#include

#define datatype float //自定义矩阵的数据类型

int get_limitint(void);

datatype get_float(void);

datatype max_num(datatype *num,int *result,int size);

datatype jueduizhi(datatype);

int main(void)

{

int n,x,y;

int result[2];  //存储 绝对值最大的数字的行下标和列下标

datatype maxnum;

//输入矩阵的长、宽度

n = get_limitint();

//分配内存

datatype *num = (datatype *)malloc(n * n * sizeof(datatype));

//输入矩阵

for(y = 0;y 

for(x = 0;x 

num[y * n + x] = get_float();

//取得绝对值最大及下标

maxnum = max_num(num,result,n);

printf("maxnum = num%d%d = %f",result[1],result[0],maxnum);

return 0;

}

//输入一个1~6的数字

int get_limitint(void)

{

int num;

printf("输入一个数字(1~6):");

while(1)

{

if(scanf("%d",&num) != 1)

{

while(getchar() != '\n')

continue ;

printf("输入一个数字(1~6):");

continue;

}

if(num  6)

{

printf("输入一个数字(1~6):");

continue;

}

else

return num;

}

}

//输入矩阵,类型限制为浮点数

datatype get_float(void)

{

datatype num;

printf("输入一个浮点数:");

while(scanf("%f",&num) != 1)

{

while(getchar() != '\n')

continue ;

printf("输入一个浮点数:");

}

return num;

}

//最大值及相应的下标,参量为矩阵首元素地址、result【】、长度、宽度

datatype max_num(datatype *num,int *result,int size)

{

int y,x;

datatype maxnum;

maxnum = num[0];

for(y = 0;y 

for(x = 0;x 

{

if(jueduizhi(maxnum) 

{

maxnum = num[y * size + x];

result[1] = y + 1;

result[0] = x + 1;

}

}

return maxnum;

}

//绝对值

datatype jueduizhi(datatype num)

{

num = (num > 0)?(num):(-num);

return num;

}

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值