有一个3*4的矩阵,找出每行中最大的元素并与第1列元素交换???代码哪儿错了啊????
答案:1 悬赏:0
解决时间 2021-03-24 02:51
- 提问者网友:無奈小影
- 2021-03-23 15:25
#include
int main()
{
int array[3][4];
int i = 0;
int j = 0;
int count = 0;
int max;
int k = 0;
printf("请输入二维数组(矩阵)元素:\n");
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
scanf("%d",&array[i][j]);
}
}
printf("请输出原始数组:\n");
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
printf("%d ",array[i][j]);
count++;
if(count == 4)
{
printf("\n");
count = 0;
break;
}
}
}
for(i = 0;i < 3;i++)
{
max = array[i][0];
for(j = 0;j < 4;j++)
{
if(max < array[i][j + 1])
{
max = array[i][j + 1];
}
}
int temp = max;
max = array[i][0];
array[i][0] = temp;
}
printf("请输出处理后的数组:\n");
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
printf("%d ",array[i][j]);
count++;
if(count == 4)
{
printf("\n");
count = 0;
break;
}
}
}
return 0;
}
最佳答案
- 二级知识专家网友:厭世為王
- 2021-03-23 16:31
第一:在查找最大元素位置时,发生数组下标越界。
第二:需要记录最大元素位置,然后对该位置与第一列元素交换。
#include
int main()
{
int array[3][4];
int i = 0;
int j = 0;
int count = 0;
int max;
printf("请输入二维数组(矩阵)元素:\n");
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
scanf("%d",&array[i][j]);
}
}
printf("请输出原始数组:\n");
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
printf("%d ",array[i][j]);
count++;
if(count == 4)
{
printf("\n");
count = 0;
break;
}
}
}
for(i = 0;i < 3;i++)
{
max = array[i][0];
int index = 0;////////////
for(j = 1;j < 4;j++)
{
if(max < array[i][j])///////////
{
max = array[i][j];///////////
index = j;///////////
}
}
int temp = array[i][index];/////////////
array[i][index] = array[i][0];/////////////
array[i][0] = temp;
}
printf("请输出处理后的数组:\n");
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
printf("%d ",array[i][j]);
count++;
if(count == 4)
{
printf("\n");
count = 0;
break;
}
}
}
return 0;
}
我要举报
大家都在看
推荐资讯