【编程题】Java编程题四(10道)

时间:2022-05-04
本文章向大家介绍【编程题】Java编程题四(10道),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

【编程题】Java编程题四(10道)

【程序31】 题目:将一个数组逆序输出。


import java.util.*;
public class lianxi31 {
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
   int a[] = new int[20];
System.out.println("请输入多个正整数(输入-1表示结束):");
   int i=0,j;
   do{
      a[i]=s.nextInt();
      i++;
   }while (a[i-1]!=-1);
   System.out.println("你输入的数组为:");
   for( j=0; j<i-1; j++) {
    System.out.print(a[j]+"   ");
}
   System.out.println("n数组逆序输出为:");
   for( j=i-2; j>=0; j=j-1) {
    System.out.print(a[j]+"   ");
}
    }
   }

【程序32】 题目:取一个整数a从右端开始的4~7位。


import java.util.*;
public class lianxi32 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.print("请输入一个7位以上的正整数:");
    long a = s.nextLong();
    String ss = Long.toString(a);
    char[] ch = ss.toCharArray();
    int j=ch.length;
    if (j<7){System.out.println("输入错误!");}
    else {
     System.out.println("截取从右端开始的4~7位是:"+ch[j-7]+ch[j-6]+ch[j-5]+ch[j-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 lianxi33 {
public static void main(String[] args) {
    int[][] a = new int[10][10];
   for(int i=0; i<10; i++) {
    a[i][i] = 1;
    a[i][0] = 1;
   }
   for(int i=2; i<10; i++) {
    for(int j=1; j<i; j++) {
     a[i][j] = a[i-1][j-1] + a[i-1][j];
    }
   }
     for(int i=0; i<10; i++) {
    for(int k=0; k<2*(10-i)-1; k++) {
     System.out.print(" ");
    }
    for(int j=0; j<=i; j++) {
     System.out.print(a[i][j] + "   ");
    }
    System.out.println();
   }
}
}

【程序34】 题目:输入3个数a,b,c,按大小顺序输出。


import java.util.Scanner;
public class lianxi34 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("请输入3个整数:");
    int a = s.nextInt();
    int b = s.nextInt();
    int c = s.nextInt();
      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("从大到小的顺序输出:");
    System.out.println(a + " " + b + " " + c);
}
} 

【程序35】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

 
import java.util.*;
public class lianxi35 {
public static void main(String[] args) {
   int N = 8;
   int[] a = new int [N];
   Scanner s = new Scanner(System.in);
   int idx1 = 0, idx2 = 0;
   System.out.println("请输入8个整数:");
   for(int i=0; i<N; i++) {
    a[i] = s.nextInt();
}
   System.out.println("你输入的数组为:");
   for(int i=0; i<N; i++) {
     System.out.print(a[i] + " ");
   }
   int max =a[0], min = a[0];
   for(int i=0; i<N; i++) {
    if(a[i] > max) {
     max = a[i];
     idx1 = i;
    } 
    if(a[i] < min) {
     min = a[i];
     idx2 = i;
    }
   } 
   if(idx1 != 0) {
    int temp = a[0];
    a[0] = a[idx1];
    a[idx1] = temp;
   }
    if(idx2 != N-1) {
    int temp = a[N-1];
    a[N-1] = a[idx2];
    a[idx2] = temp;
   }
   System.out.println("n交换后的数组为:");
   for(int i=0; i<N; i++) {
    System.out.print(a[i] + " ");
   }
}
}

【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数


import java.util.Scanner;
public class lianxi36 {
public static void main(String[] args) {
   int N =10;
   int[] a = new int[N];
   Scanner s = new Scanner(System.in);
   System.out.println("请输入10个整数:");
   for(int i=0; i<N; i++) {
    a[i] = s.nextInt();
   }
   System.out.print("你输入的数组为:");
   for(int i=0; i<N; i++) {
     System.out.print(a[i] + " ");
   }
   System.out.print("n请输入向后移动的位数:");
   int m = s.nextInt();
   int[] b = new int[m];
   for(int i=0; i<m; i++) {
    b[i] = a[N-m+i];
   }
   for(int i=N-1; i>=m; i--) {
   a[i] = a[i-m];
   }
   for(int i=0; i<m; i++) {
    a[i] = b[i];
   }
System.out.print("位移后的数组是:");
   for(int i=0; i<N; i++) {
    System.out.print(a[i] + " ");
   }
}
}

【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。


import java.util.Scanner;
public class lianxi37 {
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
   System.out.print("请输入排成一圈的人数:");
   int n = s.nextInt();
   boolean[] arr = new boolean[n];
   for(int i=0; i<arr.length; i++) {
    arr[i] = true;
   }
   int leftCount = n;
   int countNum = 0;
   int index = 0;
   while(leftCount > 1) {
    if(arr[index] == true) {
     countNum ++; 
     if(countNum == 3) {
      countNum =0;
      arr[index] = false;
      leftCount --;
     }
    }
     index ++;
     if(index == n) {
     index = 0;
    }
   }
    for(int i=0; i<n; i++) {
    if(arr[i] == true) {
     System.out.println("原排在第"+(i+1)+"位的人留下了。");
    }
   }
}
}

【程序38】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。


/*………………
*……题目意思似乎不能用length()函数     */
import java.util.*;
public class lianxi38 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("请输入一个字符串:");
    String str = s.nextLine();
     System.out.println("字符串的长度是:"+str.length());
    }
    } 

【程序39】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)


//没有利用指针函数
import java.util.*;
public class lianxi39 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.print("请输入一个正整数 n= ");
    int n = s.nextInt();
    System.out.println("相应数列的和为:" + sum(n));
   }
public static double sum(int n) {
    double res = 0;
    if(n % 2 == 0) {
     for(int i=2; i<=n; i+=2) {
      res += (double)1 / i;
     } 
    } else {
     for(int i=1; i<=n; i+=2) {
      res += (double)1 / i ;
     }
    }
    return res;
}
} 

【程序40】 题目:字符串排序。


public class lianxi40 {
public static void main(String[] args) {
   int N=5;
   String temp = null;
   String[] s = new String[N];
   s[0] = "matter";
   s[1] = "state";
   s[2] = "solid";
   s[3] = "liquid";
   s[4] = "gas";
   for(int i=0; i<N; i++) {
    for(int j=i+1; j<N; j++) {
     if(compare(s[i], s[j]) == false) {
      temp = s[i];
      s[i] = s[j];
      s[j] = temp;
     }
    }
   }
    for(int i=0; i<N; i++) {
    System.out.println(s[i]);
   }
}
static boolean compare(String s1, String s2) {
   boolean result = true;
   for(int i=0; i<s1.length() && i<s2.length(); i++) {
    if(s1.charAt(i) > s2.charAt(i)) {
     result = false;
     break;
    } else if(s1.charAt(i) <s2.charAt(i)) {
     result = true;
     break;
    } else {
     if(s1.length() < s2.length()) {
      result = true;
     } else {
      result = false;
     }
    }
   }
   return result;
}
}