A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【程序29】
题目:求一个3*3矩阵对角线元素之和
程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
  
public class  Prog29{
  
    public static void main(String[] args){
  
        int[][] a = new int[][]  {{100,2,3,},{4,5,6},{17,8,9}};
  
        matrSum(a);
  
    }
  
    private static void matrSum(int[][] a){
  
        int sum1 = 0;
  
        int sum2 = 0;
  
        for(int i=0;i<a.length;i++)
  
           for(int j=0;j<a.length;j++){
  
             if(i==j) sum1 += a[j];
  
             if(j==a.length-i-1) sum2 +=  a[j];
  
           }
  
        System.out.println("矩阵对角线之和分别是:"+sum1+"和"+sum2);
  
    }
  
}
  
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
  
import  java.util.Scanner;
  
public class  Prog30{
  
    public static void main(String[] args){
  
        int[] A = new  int[]{0,8,7,5,9,1,2,4,3,12};
  
        int[] B = sort(A);
  
        print(B);
  
        System.out.println();
  
        System.out.print("请输入10个数的数组:");
  
        Scanner scan = new Scanner(System.in);      
  
int a = scan.nextInt();
  
scan.close();
  
        int[] C = insert(a,B);
  
        print(C);
  
    }
  
    //选择排序
  
    private static int[] sort(int[] A){
  
        int[] B = new int[A.length];
  
        for(int i=0;i<A.length-1;i++){
  
            int min = A;
  
            for(int j=i+1;j<A.length;j++){
  
                if(min>A[j]){
  
                    int temp = min;
  
                    min = A[j];
  
                    A[j] = temp;
  
                }
  
                B = min;
  
            }
  
        }
  
        B[A.length-1] = A[A.length-1];
  
        return B;
  
    }
  
    //打印
  
    private static void print(int[] A){
  
        for(int i=0;i<A.length;i++)
  
           System.out.print(A+" ");
  
    }
  
    //插入数字
  
    private static int[] insert(int a,int[]  A){
  
        int[] B = new int[A.length+1];
  
        for(int i=A.length-1;i>0;i--)
  
           if(a>A){
  
             B[i+1] = a;
  
             for(int j=0;j<=i;j++)
  
               B[j] = A[j];
  
               for(int k=i+2;k<B.length;k++)
  
                 B[k] = A[k-1];
  
               break;
  
           }
  
        return B;
  
    }
  
}
  
【程序31】
题目:将一个数组逆序输出。
程序分析:用第一个与最后一个交换。
  
public class  Prog31{
  
    public static void main(String[] args){
  
        int[] A = new  int[]{1,2,3,4,5,6,7,8,9,};
  
        print(A);
  
        System.out.println();
  
        int[] B = reverse(A);
  
        print(B);
  
    }
  
    private static int[] reverse(int[] A){
  
        for(int i=0;i<A.length/2;i++){
  
            int temp = A[A.length-i-1];
  
            A[A.length-i-1] = A;
  
            A = temp;
  
        }
  
        return A;
  
    }
  
    private static void print(int[] A){
  
        for(int i=0;i<A.length;i++)
  
           System.out.print(A+" ");
  
    }
  
}
  
【程序32】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
  
import  java.util.Scanner;
  
public class  Prog32{
  
    public static void main(String[] msg){
  
        //输入一个长整数
  
        Scanner scan = new Scanner(System.in);
  
        long l = scan.nextLong();
  
        scan.close();
  
        //以下截取字符
  
        String str = Long.toString(l);
  
        char[] ch = str.toCharArray();
  
        int n = ch.length;
  
        if(n<7)
  
           System.out.println("输入的数小于7位!");
  
        else
  
           System.out.println("截取的4~7位数字:"+ch[n-7]+ch[n-6]+ch[n-5]+ch[n-4]);
  
        }     
  
}
  
【程序33】
题目:打印出杨辉三角形(要求打印出10行如下图)
程序分析:
       1
      1 1
    1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
  
public class  Prog33{
  
    public static void main(String[] args){
  
        int[][] n = new int[10][21];
  
        n[0][10] = 1;
  
        for(int i=1;i<10;i++)
  
           for(int j=10-i;j<10+i+1;j++)
  
             n[j] = n[i-1][j-1]+n[i-1][j+1];
  
        for(int i=0;i<10;i++){
  
            for(int j=0;j<21;j++){
  
                if(n[j]==0)
  
                  System.out.print("   ");
  
                else{
  
                 if(n[j]<10)
  
                   System.out.print("  "+n[j]);//空格为了美观需要
  
                 else if(n[j]<100)
  
                  System.out.print("  "+n[j]);
  
                  else
  
                    System.out.print(n[j]);
  
               }
  
            }
  
            System.out.println();
  
        }
  
    }
  
}
  
【程序34】
题目:输入3个数a,b,c,按大小顺序输出。
程序分析:利用指针方法。
  
import  java.util.Scanner;
  
public class  Prog34{
  
    public static void main(String[] args){
  
        System.out.print("请输入3个数:");
  
        Scanner scan = new  Scanner(System.in).useDelimiter("\\s");
  
        int a = scan.nextInt();
  
        int b = scan.nextInt();
  
        int c = scan.nextInt();
  
        scan.close();
  
        if(a<b){
  
            int t = a;
  
            a = b;
  
            b = t;
  
        }
  
        if(a<c){
  
            int t = a;
  
            a = c;
  
            c = t;
  
        }
  
        if(b<c){
  
            int t = b;
  
            b = c;
  
            c = t;
  
        }
  
        System.out.println(a+"  "+b+" "+c);
  
    }
  
}
  

6 个回复

正序浏览
能看懂,就是让自己写有点难
回复 使用道具 举报
嗯,又学到了
回复 使用道具 举报
先看看会不会
回复 使用道具 举报
很好,学习学习!
回复 使用道具 举报
已收藏,自己敲敲看
回复 使用道具 举报
形而上孤独 来自手机 中级黑马 2015-7-10 13:56:41
沙发
很好!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马