我的程序必须接收一个数字k,一个4x4矩阵,k必须乘以该矩阵的主对角线。输出应该是输入矩阵,然而,它的主对角线乘以k。 例如,我给出k = 2和以下矩阵:
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
输出应为:
2 1 1 1
1 2 1 1
1 1 2 1
1 1 1 2
但是我的程序给出了以下输出:
2 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
为什么?我怎么做才能使主对角线而不仅仅是矩阵的第一个数字?
我的代码:
#include <stdio.h>
int main() {
int k;
int mult = 0;
int matrix[4][4];
int row, column;
for (row = 0; row < 4; row++) {
for (column = 0; column < 4; column++) {
scanf("%d", &matrix[row][column]);
}
}
for(row = 0 ; row < 4 ; row++)
{
for(column = 0 ; column < 4 ; column++) {
printf("%3d", matrix[row][column]);
mult = k * matrix[row][row];
}
printf(" \n");
}
return 0;
}
答案 0 :(得分:2)
如果要更改矩阵值,只需更改循环操作,如下所示:
for(row = 0 ; row < 4 ; row++)
{
for(column = 0 ; column < 4 ; column++) {
if ( row == column )
matrix[row][column] *= k;
printf("%3d", matrix[row][column]);
}
printf(" \n");
}
答案 1 :(得分:2)
为什么不能这样:
for(row = 0 ; row < 4 ; row++)
{
for(column = 0 ; column < 4 ; column++) {
if(row == column)
matrix[row][column] *= k;
printf("%3d", matrix[row][column]);
}
printf(" \n");
}
答案 2 :(得分:0)
此代码似乎正常运行,请检查。
for(row=0;row<4;i++)
{
mat[row][row]*=k;
for(col=0;col<4;j++)
{
printf("%d ",mat[row][col]);
}
printf("\n");
}
答案 3 :(得分:0)
您应该初始化变量k
scanf("%d", &k);
并且您没有更改输入矩阵的内容。
答案 4 :(得分:0)
如果您只想获得正确的输出,请尝试以下方法:
#include <stdio.h>
int main() {
int k;
int matrix[4][4];
int row, column;
printf("input k :\n");
scanf("%d,"&k);
printf("input matrix :\n");
for (row = 0; row != 4; ++row) {
for (column = 0; column != 4; ++column) {
scanf("%d", &matrix[row][column]);
}
}
for(row = 0 ; row != 4 ; ++row)
{
for(column = 0 ; column != 4 ; ++column) {
printf("%3d",row != column ? matrix[row][column]:k*matrix[row][cloumn]);
}
printf(" \n");
}
return 0;
}
答案 5 :(得分:0)
要将数字乘以所选的模式,您需要进行一些检查(过滤器),以便该值仅在那里成倍增加。
尝试上面其他人提到的代码 -
for(row = 0 ; row < 4 ; row++)
{
for(column = 0 ; column < 4 ; column++) {
**if ( row == column )** //this is the filter
matrix[row][column] *= k;
printf("%3d", matrix[row][column]);
}
printf(" \n");
}
对于对角线,行和列值始终相同 - 在你的情况下 -
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
在通用形式中,它可以写成 -
a00 a01 a02 a03 ....... a0n
a10 a11 a12 a13 ....... a1n
a20 a21 a22 a23 ........ a2n
am0 am1 am2 am3 ....... a(mn)
这里的对角线元素是 - a00,a11,a22,a33,...... a(mn),其中m = n