当前位置:首页 » 编程语言 » c语言aij的值
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言aij的值

发布时间: 2022-03-12 18:04:46

1. c语言求解!跪谢!! 如何计算两个矩阵的乘法

#include<stdio.h>
#include <stdlib.h>
#define DEBUG 0

void show_array(int *a, int row,int col);
/*---------------------
c[j]][i] = a[j][k] * b[k][i] = c[j][i]
a[c_row][nk]: a[3][2]={1,2,3,4,5,6}
b[nk][c_col]: b[2][3]={1,2,3,4,5,6}
c[c_row][c_col]: c[3][3]={9,12,15,19,26,33,29,40,51}
*---------------------*/
void matrix2(int *a,int *b, int *c, int a_row, int b_col, int b_row)
{
int i,j,k;
int a_col,c_row,c_col;
a_col=b_row; c_row=a_row; c_col=b_col;

if (DEBUG==1){
printf("A[%d][%d]:\n",a_row,a_col);
show_array(a,a_row,a_col);
printf("B[%d][%d]:\n",b_row,c_col);
show_array(b,b_row,b_col);
};

for(j=0;j<c_row;j++){
for(i=0;i<c_col;i++){
c[j*c_col+i]=0;
for(k=0;k<a_col;k++) c[j*c_col+i]+= a[j*a_col+k] * b[k*b_col+i];
};
};
}

main()
{
int i,j,k,tmp;
int a_row,a_col,b_row,b_col,c_row,c_col;
int *a,*b,*c;
//a[m_row][nk] b[nk][n_col]
printf("please enter m k n \n");
scanf("%d %d %d",&a_row,&a_col,&b_col);
b_row = a_col;
c_row = a_row;
c_col = b_col;

a = (int *) malloc(sizeof(int *) * a_row * a_col);
b = (int *) malloc(sizeof(int *) * b_row * b_col);
c = (int *) malloc(sizeof(int *) * c_row * c_col);

if (!c) { printf("no enought memory for alloc\n");return 0; }

printf("read a[m][k]\n");
for (j=0;j<a_row;j++)
for (i=0;i<a_col;i++){
scanf("%d",&tmp);
a[j*a_col+i] = tmp;
}
printf("read b[k][n]\n");
for (j=0;j<b_row;j++)
for (i=0;i<b_col;i++){
scanf("%d",&tmp);
b[j*b_col+i] = tmp;
}

matrix2( a,b,c, a_row, b_col, b_row);

printf("results:\n");
show_array(c,c_row,c_col);
free(a);free(b);free(c);
return 0;
}

void show_array(int *a, int row,int col)
{
int i,j;
for (j=0;j<row;j++){
for (i=0;i<col;i++) printf("%d ",a[j*col+i]);
printf("\n");
}
printf("--------------------\n");
}
先要输入 m k n
再输入数据。
若不告之 m k n 要麻烦些。
程序里 debug 部分和说明部分你可以删去。

2. 我记得C语言好像有一种情况aij这里i是列j是行的,有吗

1,2,3
4,5,6
7,8,9
比如上述矩阵:
i是行数,即第i行,j是列数,即第j列
a[2,1]=4

3. C语言编程求矩阵乘积

#defineMAX50
#defineMMAX
#defineNMAX
#defineTMAX
#defineSMAX

intMult(doublea[][N],intm,intn,doubleb[][T]ints,intt,doublec[][T]){
inti,j,k;
if(n!=s){
printf("两矩阵相乘,左矩阵的列数与右矩阵的行数必须相等。 ");
return0;
}
intc;
tmp.m_Mat=newdouble*[tmp.m_Rows];
for(inti=0;i<tmp.m_Rows;i++)tmp.m_Mat[i]=newdouble[tmp.m_Cols];
for(i=0;i<m;++i){
for(j=0;j<n;++j){
c[i][j]=0;
for(k=0;k<t;++k)
c[i][j]+=c[i][k]*c[k][j];
}
}
return1;
}

4. C语言矩阵相乘问题

给你一个思路
int i=0,k;
char input[205][410];
先用while(gets(input[i])!=0)i++;
读入所有信息
在扫描第一行有几个数字k
则m=i-k;
n可以扫描第i-1行得出
最后用sscanf()读入

5. c语言 两个矩阵乘积的问题

矩阵的乘法法则“左行乘右列”:

注意到后面矩阵的行数必须等于前面矩阵的列数,且乘积的结果矩阵的行数与前面相同,列数与后面一样。真正搞懂矩阵乘法是学会线性代数的重要环节,切记!!

即a[m][n] 和 b[n][q] 的结果是c[m][q],而a和b的那个n必须是一样的

6. 若n阶行列式Dn=|aij|=a,则D=|-aij|的值是多少

从n = 1开始探索:
显然加了个负号之后 显然 D' = -a
如果是二阶行列式
| a b |
| c d |
元素前面加负号→
| -a -b |
| -c -d |
算出D' = a
同理,三阶行列式可以算出 D' = -a

那么可以归纳:D' = (-1)^n · a

如何证明:
看每一行,都有一个负号,提出这些负号,有n个(-1),故D' = (-1)^n · a

利用:
| ka1 ka2 ka3 ··· kan |
| ··· |
| ··· |

=
| a1 a2 a3 ··· an |
k· | ··· |
| ··· |

7. C语言FOR循环AIJ一做不就可以

定义二维数组a =
1 2 3
4 5 6
7 8 9
双重循环中,将a[i][j]和a[j][i]交换值。
得到的结果 就是a的转置矩阵
输出为
1 4 7
2 5 8
3 6 9

8. n阶行列式A的值为c,若将A的每个元素aij换成(-1)的i+j次方aij,则得到的行列式值为

相当于把原来行列式的偶数列都乘以-1,乘了m次,然后再把偶数行都乘以-1,又乘了m次,一共乘了2m次,所以行列式值不变。