源代码:
import java.util.Scanner;
public class 交换数组最大值和最小值 {
public static void main(String[] args) {
System.out.println("输入你需要的阶层数:");
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();//定义需要的阶层数n
int[][]array=new int[n][n];//定义一个n*n的数组array
int Max, Min;//接受最大值和最小值
int maxi = 0 ,maxj = 0 ,mini=0,minj=0;//存放最大值和最小值的元素下标
int temp;//存放交换最大值和最小值时的临时变量
System.out.println("输入数组的各个元素:");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++){
array[i][j]=scan.nextInt();//给数组赋值
}
}
System.out.println("你输入的数组为:");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
System.out.print(array[i][j]+"\t");
if(j==n-1)
System.out.println();
}
}
Max=Min=array[0][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(array[i][j]>Max)
Max=array[i][j];//获得数组中的最大值
if(array[i][j]<Min)
Min=array[i][j];//获得数组中的最小值
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(array[i][j]==Max)
{
maxi=i;
maxj=j;
}
if(array[i][j]==Min)
{
mini=i;
minj=j;
}
}
}
temp=array[maxi][maxj];
array[maxi][maxj]=array[mini][minj];
array[mini][minj]=temp;
System.out.println("交换最大值和最小值后的数组为:");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
System.out.print(array[i][j]+"\t");
if(j==n-1)
System.out.println();
}
}
}
}
刚刚写的,都有备注,要是不懂就问我。
额,不好意思啊,我只学过C ,看不懂这个算法,能用C写么,让你码这么多真是辛苦了
追答我没有学过c,学过c++不过现在不怎么用也快忘了。但是原理应该是通的,像java里面的输入数组元素是next.int(),c里面就是
printf("请输入:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
还有输出 System.out.println("交换最大值和最小值后的数组为:");就换成
printf("输出为:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",a[i][j]);
主要的代码基本不需要变得。
好的谢谢