首先输入一个大于2且小于10的整数n,然后定义一个二维整形数组(n*n),初始化该数组,将数组中最大元素所在的行和最小元素所在的行对调。
要求:
1)n*n数组元素的值由scanf函数从键盘输入(假定最大值与最小值不在同一行上),然后输出该数组。
2)查找最大值与最小值所在行,将数组中最大元素所在的行和最小元素所在的行对调,并输出对调后的数组
3)为直观起见,数组按n行n列的方式输出
4)修改程序,对最大值与最小值可能出现在一行中的情况进行处理
#include<stdio.h>
main()
{
int i,j,n,max=0,min=0,a[10][10],nmax,nmin,t[10];
printf("\n请输入数组的阶数:");
scanf("%d",&n);
printf("\n初始化数组的元素\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
max=min=a[0][0];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
nmax=i;
}
if(a[i][j]<min)
{
min=a[i][j];
nmin=i;
}
}
}
if(nmax==nmin)
printf("最大值和最小值在同一行");
else
{
for(j=0;j<n;j++)
{
t[j]=a[nmax][j];
a[nmax][j]=a[nmin][j];
a[nmin][j]=t[j];
}
printf("\n对调后的数组为: \n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
}
这是我写的,为什么每次运行就会出错,输出的最后一行总是一行胡乱的数字,而且最大和最小一行也没有对调,求大神解答,麻烦在我的基础上修改,不然我永远都不知道错在哪