1。编程对10个整数排序
public class BubbleSort
{
//定义一个静态方法,使用冒泡排序方法
//对一维数组进行由小到大的排序
public static void bubbleSort(int[] a)
{
int n=a.length; //取得数组长度
int temp; //用于交换的临时变量
for(int i=n-1;i>0;i--) //外层循环
for(int j=0;j<i-1;j++) //内层循环
if(a[j+1]<a[j])
{
temp=a[j+1]; //交换2元素的值
a[j+1]=a[j];
a[j]=temp;
}
}
public static void main(String[] args)
{
int[] m={10,8,21,65,32,51,74,14,28,95};
System.out.println("排序前的数组是:");
for(int i=0;i<m.length;i++)
System.out.print(m[i]+" ");
System.out.println();
bubbleSort(m); //调用静态方法对数组m进行排序
System.out.println("排序后的数组是:\n");
for(int i=0;i<m.length;i++)
System.out.print(m[i]+" ");
}
}
2.打印以下的杨辉三角形
public class YanghuiTriangle
{
public static void main(String[] args)
{
int i,j;
int a[][]=new int[11][11]; //定义1个二维数组
for(i=1;i<11;i++)
{
a[i][i]=1; //对数组中的对角线和第1列上的每个元素赋值1
a[i][1]=1;
}
for(i=3;i<11;i++) for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<11;i++) //输出结果
{
for(j=1;j<=i;j++)
System.out.print(a[i][j]+" ");
System.out.println("\n");
}
System.out.println("\n");
}
}
3.从键盘输入10个整数,放入一个一维数组,然后将前5个元素与后5个元素对换,即将第一个元素与第十个元素互换,依此类类推。
public class ExchangeNum
{
public static void main(String[] args)
{
if(args.length!=10){ //输入格式错误
System.out.println("输入格式错误!请按照此格式输入:java ExchangeNum a1 a2 ...a10");
System.exit(0); //输入格式错误,系统退出!
}
int a[]=new int[10]; //构造有10个元素的一维数组a
int temp; //用于交换的临时变量
for(int i=0;i<10;i++) //从命令行读入10个整数,存放在a中
a[i]=Integer.parseInt(args[i]);
System.out.println("您输入的10个整数是:");
for(int i=0;i<10;i++)
System.out.print(a[i]+" ");
for(int i=0;i<5;i++)
{
temp=a[i];
a[i]=a[9-i]; //待交换元素的下标和为9
a[9-i]=temp;
}
System.out.println("\n交换后的10个整数是:");
for(int i=0;i<10;i++)
System.out.print(a[i]+" ");
}
}
4.建立一个m行n列的矩阵,找出最小元素所在行和列,并输出该值 及行、列位置
public class FindMin
{
public static void main(String[] args)
{
if(args.length!=2) //输入格式错误
{
System.out.println("输入格式错误!请按照此格式输入:java FindMin m n");
System.exit(0); //输入格式错误,系统退出!
}
int m,n;
m=Integer.parseInt(args[0]);
n=Integer.parseInt(args[1]);
int a[][]=new int[m][n]; //构造1个m行n列的二维数组
for(int i=0;i<m;i++)
for(int j=0;j<n;j++) //为二维数组中的每个元素赋随机值
a[i][j]=(int)(100*Math.random());
System.out.println("系统随机自动生成的矩阵是:");
for(int i=0;i<m;i++)
{
System.out.println("\n");
for(int j=0;j<n;j++)
{
System.out.print(a[i][j]+" ");
}
}
int min=a[0][0],row=1,column=1;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(min>a[i][j]) //找到较小值,并记录其所在行和列的下标
{
min=a[i][j];
row=i+1; //因数组下标从0开始
column=j+1;
}
}
System.out.println("\n最小数"+min+"在第"+row+"行,第"+column+"列");
}
}
5.实现矩阵的转置
public class Transpose { public static void main(String[] args) { int m,n; if(args.length!=2) //输入格式错误 { System.out.println("输入格式错误!请按照此格式输入:java Transpose m n"); System.exit(0); //输入格式错误,系统退出! } m=Integer.parseInt(args[0]); n=Integer.parseInt(args[1]); int a[][]= new int[m][n]; //创建m行n列的数组a,表示转置前的矩阵 int b[][]= new int[n][m]; //创建n行m列的数组b,表示转置后的矩阵 System.out.println("转置前的矩阵\n"); //使用随机方法产生随机数,给数组元素赋值,输出此数组 for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { a[i][j]=(int)(100*Math.random()); System.out.print(a[i][j]+" "); } System.out.println("\n"); } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) b[i][j]=a[j][i]; //转置 } System.out.println("转置后的矩阵\n"); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) System.out.print(b[i][j]+" "); //输出转置后的矩阵 System.out.println("\n"); } } }
6、 求一个10行、10列整型方阵对角线上元素之积
public class MatrixCalculation { public static void main(String[] args) { int a[][]= new int[10][10]; //创建10行10列的数组 System.out.println("随机生成的方阵为\n"); //初始化此二维数组,其中使用了方法Math.random() //此方法的作用是随机产生一个0到1之间的小数 for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { a[i][j]=(int)(10*Math.random())+1;//加1避免了元素值为0 System.out.print(a[i][j]+" "); } System.out.println("\n"); } int sum=1; for(int i=0;i<10;i++) sum*=a[i][i]; //主对角线元素的特征是行、列下标相同 System.out.println("主对角线上元素积为:"+sum); int num=1; for(int i=0;i<10;i++) num*=a[9-i][i]; //副对角线元素的特征是行、列下标的和等于方阵的行数减1(因数组的下标从0开始) System.out.println("副对角线上元素积为:"+num); } }
7. 编写一个应用三维数组的程序
public class ThreeDimension { public static void main(String[] args) { if(args.length!=3) //输入格式错误 { System.out.println("输入格式错误!请按照此格式输入:java ThreeDimension x y z"); System.exit(0); //输入格式错误,系统退出! } int x=Integer.parseInt(args[0]); int y=Integer.parseInt(args[1]); int z=Integer.parseInt(args[2]); int a[][][] = new int[x][y][z]; //给矩阵的每个元素赋值 for(int i=0;i<x;i++) for(int j=0;j<y;j++) for(int k=0;k<z;k++) a[i][j][k]=(int)(100*Math.random()); //模拟三维立方体,分别输出从0到x-1坐标上yz平面上二维矩阵。 for(int i=0;i<x;i++) { System.out.println("x截面上第"+(i+1)+"个二维矩阵是"); for(int j=0;j<y;j++) { System.out.println("\n"); for(int k=0;k<z;k++) System.out.print(a[i][j][k]+" "); } System.out.println("\n"); } } }
8 编写一个程序,计算一维数组中的最大值、最小值 及差值 。
public class FindMaxMin { public static void main(String[] args) { if(args.length!=1) //输入格式错误 { System.out.println("输入格式错误!请按照此格式输入:java FindMaxMin m"); System.exit(0); //输入格式错误,系统退出! } int m=Integer.parseInt(args[0]); int a[]=new int [m]; //构造有m个元素的数组 //随机生成数组的每个元素并输出此数组 System.out.println("随机生成的一维数组:"); for(int i=0;i<m;i++) { a[i]=(int)(100*Math.random()); System.out.print(a[i]+" "); } int min,max; //声明存放最大、最小值的变量 min=a[0]; //初始值都是数组的第1个元素 max=a[0]; for(int i=1;i<m;i++) { if(a[i]< min) //将数组中余下的每个元素和min, max进行比较 min=a[i]; //如果小于min,则赋给min if(a[i]> max) max=a[i]; //如果大于max,则赋给max } System.out.println("\n此数组中最大值是:"+max+" 最小值是:" +min+" 它们的差是:"+(max-min)); } }