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
}
}
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;
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯