编写一个3*4矩阵,找出每行中最大元素并与第一列元素交换.弄了好久还是...
发布网友
发布时间:2024-09-27 03:24
我来回答
共4个回答
热心网友
时间:2024-10-06 02:03
交换代码有错,
1。 max没有随着a[i][0]的数值刷新,
2。交换时保存在临时变量的元素下标写错。
算法也有错:
1。在交换过程中输出的不是最终交换结果。
2。非最大列也可能同第一列交换过。
错在这段代码:
for(i=0;i<3;i++){
max=a[i][0];
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
temp=a[i][0];
a[i][j]=a[i][0];
a[i][0]=temp;
}
printf("%-2d ",a[i][j]);
}
printf("\n");
}
以上代码改为如下代码即可:
for(i=0;i<3;i++)
{
max = 0;
for(j=1;j<4;j++)
{
if(a[i][max]<a[i][j])
{
max = j;
}
}
if(max)
{
temp=a[i][max];
a[i][max]=a[i][0];
a[i][0]=temp;
}
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%-2d ",a[i][j]);
}
printf("\n");
}
热心网友
时间:2024-10-06 02:04
#include<stdio.h>
int main(void)
{
int a[3][4]={{23,12,32,43},{21,22,34,7},{5,75,32,38}};
int i,j,k,temp,max;
printf("\n********原二维数组********\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%-2d ",a[i][j]);
printf("\n");
}
printf("\n********交换后的二维数组*********\n");
for(i=0;i<3;i++)
{
max=a[i][0];
for(j=0;j<4;j++)
if(max<a[i][j])
{
max = a[i][j];
k = j;
}
if(max > a[i][0])
{
a[i][k] = a[i][0];
a[i][0] = max;
}
}
printf("\n********交换后的二维数组*********\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%-2d ",a[i][j]);
printf("\n");
}
return 0;
}
热心网友
时间:2024-10-06 02:01
真不会,想了很久
热心网友
时间:2024-10-06 02:01
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
temp=a[i][0];
a[i][j]=a[i][0];
a[i][0]=temp;
应改成
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
temp=a[i][0];
a[i][0]=a[i][j];
a[i][j]=temp;
热心网友
时间:2024-10-06 02:03
交换代码有错,
1。 max没有随着a[i][0]的数值刷新,
2。交换时保存在临时变量的元素下标写错。
算法也有错:
1。在交换过程中输出的不是最终交换结果。
2。非最大列也可能同第一列交换过。
错在这段代码:
for(i=0;i<3;i++){
max=a[i][0];
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
temp=a[i][0];
a[i][j]=a[i][0];
a[i][0]=temp;
}
printf("%-2d ",a[i][j]);
}
printf("\n");
}
以上代码改为如下代码即可:
for(i=0;i<3;i++)
{
max = 0;
for(j=1;j<4;j++)
{
if(a[i][max]<a[i][j])
{
max = j;
}
}
if(max)
{
temp=a[i][max];
a[i][max]=a[i][0];
a[i][0]=temp;
}
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%-2d ",a[i][j]);
}
printf("\n");
}
热心网友
时间:2024-10-06 01:56
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
temp=a[i][0];
a[i][j]=a[i][0];
a[i][0]=temp;
应改成
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
temp=a[i][0];
a[i][0]=a[i][j];
a[i][j]=temp;
热心网友
时间:2024-10-06 02:01
真不会,想了很久
热心网友
时间:2024-10-06 01:56
#include<stdio.h>
int main(void)
{
int a[3][4]={{23,12,32,43},{21,22,34,7},{5,75,32,38}};
int i,j,k,temp,max;
printf("\n********原二维数组********\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%-2d ",a[i][j]);
printf("\n");
}
printf("\n********交换后的二维数组*********\n");
for(i=0;i<3;i++)
{
max=a[i][0];
for(j=0;j<4;j++)
if(max<a[i][j])
{
max = a[i][j];
k = j;
}
if(max > a[i][0])
{
a[i][k] = a[i][0];
a[i][0] = max;
}
}
printf("\n********交换后的二维数组*********\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%-2d ",a[i][j]);
printf("\n");
}
return 0;
}