zoukankan      html  css  js  c++  java
  • java基础编程题

    java基础编程题

    1、打印出如下图案

     1 public class Prog1{
     2     public static void main(String[] args){
     3         int n = 5;
     4         printStar(n);
     5         }
     6     
     7     //打印星星
     8     private static void printStar(int n){
     9         //打印上半部分
    10         for(int i=0;i<n;i++){
    11             for(int j=0;j<2*n;j++){
    12                 if(j<n-i)
    13                     System.out.print(" ");
    14                 if(j>=n-i && j<=n+i)
    15                     System.out.print("*");
    16                 }
    17             System.out.println();
    18             }
    19         //打印下半部分
    20         for(int i=1;i<n;i++){
    21             System.out.print(" ");
    22             for(int j=0;j<2*n-i;j++){
    23                 if(j<i)
    24                     System.out.print(" ");
    25                 if(j>=i && j<2*n-i-1)
    26                     System.out.print("*");
    27                 }
    28             System.out.println();
    29             }
    30         }
    31     }
    Prog1

    解题思路:先把图形分成两部分来看待,前五行一个规律,后四行一个规律,利用双重 for循环,第一层控制行,第二层控制列。重要的是找准规律!

    2、题目:求1+2!+3!+...+20!的和

     1 public class Prog2{
     2     public static void main(String[] args){
     3         long sum = 0;
     4         for(int i=0;i<20;i++) {
     5             sum += factorial(i+1);
     6         }
     7         System.out.println(sum);
     8         }
     9     //阶乘
    10     private static long factorial(int n){
    11         int mult = 1;
    12         for(int i=1;i<n+1;i++)
    13             mult *= i;
    14         return mult;
    15         }
    16     }
    Prog2

     程序分析:将阶乘另设置一个函数避免错误!

    3、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

     1 import java.util.Scanner;
     2 
     3 public class Prog22{
     4     public static void main(String[] args){
     5         Scanner in = new Scanner(System.in);
     6         int n = in.nextInt();
     7         int i = 0;
     8         int[] a = new int[5];//数组,便于日后存取各数字
     9         do{
    10             a[i] = n%10;//得到n的个位
    11             n /= 10;//得到没有个位的n
    12             ++i;
    13             }while(n!=0);
    14         System.out.print("这是一个"+i+"位数,从个位起,各位数字依次为:");
    15         for(int j=0;j<i;j++)
    16             System.out.print(a[j]+" ");
    17         }
    18     }
    Prog3

     4、题目:对10个数进行排序

     1 import java.util.Scanner;
     2 
     3 public class Prog4 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         Scanner in = new Scanner(System.in);
     8         int n = in.nextInt();
     9         int a[] = new int[n];
    10         for(int i=0;i<n;i++) {
    11             a[i] = in.nextInt();
    12         }
    13         
    14         for(int i=0;i<a.length;i++) {//学会使用双重for结构=
    15             for(int j=0;j<a.length-i-1;j++) {//最大的在最右边了
    16                 if(a[j] > a[j+1]) {
    17                     int temp = a[j];
    18                     a[j] = a[j+1];
    19                     a[j+1] = temp;
    20                 }
    21             }
    22         }
    23         for(int i=0;i<a.length;i++) {
    24             System.out.print(a[i] + " ");
    25         }
    26         
    27         }
    28 }
    Prog4

    程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。

    5、题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

     1 import java.util.Scanner;
     2 public class Prog5{
     3     public static void main(String[] args){
     4         int[] A = new int[]{0,8,7,5,9,1,2,4,3,12};
     5         int[] B = sort(A);                        //排序
     6         print(B);
     7         System.out.println();
     8         System.out.print("请输入1个数插入:");
     9         Scanner scan = new Scanner(System.in);
    10         int a = scan.nextInt();
    11         scan.close();
    12         int[] C = insert(a,B);                    //插入
    13         print(C);                                //打印
    14         }
    15     
    16     //选择排序
    17     private static int[] sort(int[] A){
    18         int[] B = new int[A.length];
    19         for(int i=0;i<A.length-1;i++){
    20             //int min = A[i];
    21             for(int j=i+1;j<A.length;j++){
    22                 if(A[i]>A[j]){//两两互换,和Prog4类似
    23                     int temp = A[i];
    24                     A[i] = A[j];
    25                     A[j] = temp;
    26                     }
    27                 B[i] = A[i];
    28                 }
    29             }
    30         B[A.length-1] = A[A.length-1];//*
    31         return B;
    32         }
    33     
    34     //打印
    35     private static void print(int[] A){
    36         for(int i=0;i<A.length;i++)
    37             System.out.print(A[i]+" ");
    38         }
    39     //插入数字,A已经排好了序
    40     private static int[] insert(int a,int[] A){
    41         int[] B = new int[A.length+1];
    42         for(int i=A.length-1;i>0;i--) {
    43             if(a>A[i]){
    44                 B[i+1] = a;
    45                 for(int j=0;j<=i;j++)
    46                     B[j] = A[j];//插入之前的都不变
    47                 for(int k=i+2;k<B.length;k++)
    48                     B[k] = A[k-1];//插入之后的都变一个,A短减1
    49                 break;
    50                 }
    51         }
    52         return B;
    53         }
    54     }
    Prog5

    程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

     ***逆序重点:

    1 private static int[] nixu(int[] data,int [] B) {
    2         // TODO Auto-generated method stub
    3         for(int i=0;i<data.length;i++) {
    4             B [i] = data[data.length-1-i];
    5         }
    6         return B;
    7     }
    逆序

     6、题目:打印出杨辉三角形。

     1 public class Prog6{
     2     public static void main(String[] args){
     3         int[][] n = new int[10][21];
     4         n[0][10] = 1;
     5         for(int i=1;i<10;i++)
     6             for(int j=10-i;j<10+i+1;j++)
     7                 n[i][j] = n[i-1][j-1]+n[i-1][j+1];//使两个数之间还有一个数为0
     8         for(int i=0;i<10;i++){
     9             for(int j=0;j<21;j++){
    10                 if(n[i][j]==0)
    11                     System.out.print("   ");//3个空格,为0的数输出三个空格
    12                 else{
    13                     if(n[i][j]<10)
    14                         System.out.print("  "+n[i][j]);//2个空格
    15                     else if(n[i][j]<100)
    16                         System.out.print(" "+n[i][j]);//1个空格
    17                     else
    18                         System.out.print(n[i][j]);
    19                     }
    20                 }
    21             System.out.println();
    22             }
    23         }
    24     }
    Prog6

    //看看人家怎么实现美观的

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

     1 import java.util.Scanner;
     2 
     3 public class Prog7{
     4     public static void main(String[] args){
     5         final int N = 10;
     6         System.out.print("请输入10个数的数组:");
     7         Scanner scan = new Scanner(System.in);
     8         int[] a = new int[N];
     9         for(int i=0;i<a.length;i++)
    10             a[i] = scan.nextInt();
    11         System.out.print("请输入一个小于10的数:");
    12         int m = scan.nextInt();
    13         scan.close();//输入结束
    14         //把数组a前后分为两个数组b和c
    15         int[] b = new int[N-m];
    16         int[] c = new int[m];
    17         
    18         for(int i=0;i<N-m;i++)
    19             b[i] = a[i];//前N-m个数放入数组b
    20         for(int i=a.length-1,j=m;j>0;i--,j--)
    21             c[j-1] = a[i];//后N-m个数放入数组c
    22         for(int i=m,j=0;i<N;i++,j++)
    23             a[i] = b[j]; //数组a中前N-m个数后移
    24         for(int i=0;i<m;i++)
    25             a[i] = c[i];//数组a中后m个数前移
    26         for(int i=0;i<a.length;i++)
    27             System.out.print(a[i]+" ");
    28         }
    29     }
    Prog7

    解题思路:将最初的数组分为3部分,放入3个数组内。

  • 相关阅读:
    VC6.0图形处理7边缘检测
    VC6.0图像处理0bmp文件分析
    java版QQ 欢迎点评
    VC6.0图像处理3灰度变换
    VC6.0图形处理6图像增强
    VC6.0图像处理1浏览图片
    VC6.0图像处理4镜像
    一个软件行业中层主管在年底给团队成员的一封信
    SQL的EXISTS与in、not exists与not in 效率比较和使用
    按某字段合并字符串
  • 原文地址:https://www.cnblogs.com/CiMing/p/8376656.html
Copyright © 2011-2022 走看看