C 如何移动矩阵的最大个数
我需要将随机生成的最大数量的矩阵移动到矩阵的右下角,但我不知道如何移动。有人能帮忙吗。 这是我的代码:C 如何移动矩阵的最大个数,c,matrix,C,Matrix,我需要将随机生成的最大数量的矩阵移动到矩阵的右下角,但我不知道如何移动。有人能帮忙吗。 这是我的代码: #include <stdio.h> #include <stdlib.h> int main() { int i, j, rows, columns; int **matrix; printf("write the number of rows\n"); scanf("%d", &rows); printf("wri
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, rows, columns;
int **matrix;
printf("write the number of rows\n");
scanf("%d", &rows);
printf("write the number of columns\n");
scanf("%d", &columns);
matrix = malloc(rows * sizeof *matrix);
for (i = 0 ; i < rows ; i++)
{
matrix[i] = malloc(columns * sizeof(int));
for (j = 0 ; j < columns ; j++)
matrix[i][j] = rand() % 100;
}
for (i = 0 ; i < rows ; i++)
{
for (j = 0 ; j < columns ; j++)
printf("%5d", matrix[i][j]);
printf("\n");
}
for (i = 0 ; i < rows ; i++)
free(matrix[i]);
free(matrix);
return 0;
}
#包括
#包括
int main()
{
int i,j,行,列;
int**矩阵;
printf(“写入行数\n”);
scanf(“%d”,行和行);
printf(“写入列数\n”);
scanf(“%d”列和列);
矩阵=malloc(行*大小*矩阵);
对于(i=0;i
尝试以下操作
int max = matrix[0][0];
for (i = 0 ; i < rows ; i++)
{
for (j = 0 ; j < columns ; j++)
{
if ( max < matrix[i][j] ) max = matrix[i][j];
}
}
matrix[rows-1][columns-1] = max;
int max=matrix[0][0];
对于(i=0;i
如果需要将矩阵的右下元素与最大元素交换,那么代码如下所示
int max_i = 0;
int max_j = 0;
for (i = 0 ; i < rows ; i++)
{
for (j = 0 ; j < columns ; j++)
{
if ( matrix[max_i][max_j] < matrix[i][j] ) max_i = i, max_j = j;
}
}
int tmp = matrix[rows-1][columns-1];
matrix[rows-1][columns-1] = matrix[max_i][max_j];
matrix[max_i][max_j] = tmp;
int max_i=0;
int max_j=0;
对于(i=0;i
您可以通过这种方式生成具有所需特征的矩阵
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, rows, columns, largest, largestRow, largestColumn, swapValue;
int **matrix;
printf("write the number of rows\n");
scanf("%d", &rows);
printf("write the number of columns\n");
scanf("%d", &columns);
largest = 0;
largestRow = 0;
largestColumn = 0;
matrix = malloc(rows * sizeof *matrix);
if (matrix == NULL)
return -1;
for (i = 0 ; i < rows ; i++)
{
matrix[i] = malloc(columns * sizeof(int));
if (matrix[i] == NULL)
{
int k;
for (k = i - 1 ; k >= 0 ; k--)
free(matrix[k]);
free(matrix);
return -1;
}
for (j = 0 ; j < columns ; j++)
{
matrix[i][j] = rand() % 100;
if (matrix[i][j] > largest)
{
largestRow = i;
largestColumn = j;
largest = matrix[i][j];
}
}
}
swapValue = matrix[rows - 1][columns - 1];
matrix[rows - 1][columns - 1] = largest;
matrix[largestRow][largestColumn] = swapValue;
for (i = 0 ; i < rows ; i++)
{
for (j = 0 ; j < columns ; j++)
printf("%5d", matrix[i][j]);
printf("\n");
}
for (i = 0 ; i < rows ; i++)
free(matrix[i]);
free(matrix);
return 0;
}
#包括
#包括
int main()
{
int i,j,行,列,最大,最大行,最大列,最大值;
int**矩阵;
printf(“写入行数\n”);
scanf(“%d”,行和行);
printf(“写入列数\n”);
scanf(“%d”列和列);
最大值=0;
最大行=0;
最大列=0;
矩阵=malloc(行*大小*矩阵);
if(矩阵==NULL)
返回-1;
对于(i=0;i=0;k--)
自由(矩阵[k]);
自由(矩阵);
返回-1;
}
对于(j=0;j<列;j++)
{
矩阵[i][j]=rand()%100;
if(矩阵[i][j]>最大值)
{
最大行=i;
最大列=j;
最大=矩阵[i][j];
}
}
}
swapValue=矩阵[行-1][列-1];
矩阵[行-1][列-1]=最大值;
矩阵[largestRow][largestColumn]=swapValue;
对于(i=0;i
您在矩阵中找到最大的数字,然后将其与矩阵[rows-1][columns-1]
交换。您的问题有点不够明确。是否需要将最大的数字与右下角的值交换?如果有多个位置具有相同的最大值,您应该怎么做?唯一可以说是错误的是初始化。您不初始化最大行
或最大列
;这是个大问题。使用<代码>最大值=0.0也是可疑的-最好使用矩阵[0][0]
或矩阵[rows-1][columns-1]
,适当地初始化最大行
和最大列
的值。哇,这真是一个开始者的错误,我错过了。关于最大值,请参见随机数生成的表达式,0
是可能的最小值。谢谢。@Mangiux如果确实有帮助,那么就把答案记下来。:)